yolov5部署android教程

参考部署流程

环境准备:本文讲的是在window上面进行

模型训练完成后

第一步:

在本地yolov5项目执行

先安装onnx

python -m pip install --user onnx

python -m pip install --user onnxsim

python -m pip install --user onnxruntime

第二步:pt文件转onnx

建议不要修改export.py文件,通过命令行传参

#--weights:权重文件路径,一般使用best.pt
#--include 有两个参数 onnx 和 torchscrpt
#--simplify 简化模型
 python .\export.py --weights best.pt --train --include onnx --simplify

模型警告
WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function.
修改export.py的导出函数,这里改为11或者12
在这里插入图片描述
模型验证:这块我没有成功但是没有影响部署

'''--source 需要检测的图片路径
----dnn 是否通过dnn加载模型网络结构'''
python .\detect.py --weights best.onnx --source F:\dataset\dsad --dnn 

第三步:使用onnx2ncnn把onnx转为模型参数文件params和可执行bin
1:安装VSCODE,需要安装这3个模块,有vscode的直接在工具里面安装
在这里插入图片描述
2:安装cmake,我安装的这个版本cmake-3.16.5-win64-x64
安装protobuf protobuf-3.4.0
安装 ncnn-master
这里需要打开vscode的x64命令行

参考

​https://blog.csdn.net/weixin_52583846/article/details/125065108

cd protobu3.4.0
mkdir build-vs2022
cd build-vs2022
#protobu3.4.0/cmake 这个是protobuf下面的cmake目录,提示不对的话修改下
cmake -G"NMake Makefiles"-DCMAKE_BUILD_TYPE=ReTease -DCMAKE_INSTALL_PREFIX=%cd%/insta11 -Dprotobuf_BUILD_TESTS=OFF-Dprotobuf_MSVC_STATIC_RUNTIME=OFF../protobu3.4.0/cmake
nmake
nmake install

编译完成后会生成protoc.exe

在这里插入图片描述
然后进入ncnn-master文件夹下面

cd ncnn-master
mkdir build-vs2022
cd build-vs2022
#<protobuf-root-dir>填写protobuf的路径
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-root-dir>/build-vs2022/install/include -DProtobuf_LIBRARIES=<protobuf-root-dir>/build-vs2022/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-root-dir>/build-vs2022/install/bin/protoc.exe -DNCNN_VULKAN=OFF ..
nmake
nmake install

这个时候在目录tools下面就生成了onnx2nccn.exe
将best.onnx放入当前路径,使用以下命令生成.param和bin文件

onnx2nccn.exe best.onnx yolov5s.param yolov5s.bin

第四步:打开nccn-android-yolov5-master把.param和.bin放到asserts目录下面(project试图找不到可以调整到android试图)
下面就是修改网络结构(as环境安装和nccn-android-yolov5-master安装这里就不再赘述了)
进入jni目录下,打开
在这里插入图片描述
这里需要修改成你训练的names(当时不是在本地训练,结果顺序乱了,坑+1)
​使用https://netron.app/打开.param参数文件或者本地打开都行
把Reshape后面1600,800,400改为-1
在这里插入图片描述
下面把param文件的Permute这两个跟后面对应
在这里插入图片描述
在这里插入图片描述
后面连接手机USB调试就行
第五步:如果需要生成release包需要配置,默认的签名文件在.android下面debug.keystore只有测试阶段使用,下面看下生成elease包配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个是生成自定义jks签名,如果生成数字签名
打开AS,在terminal下输入下面命令
keytool -list -v -keystore <keystore文件名>
如果报错打开JKD进入bin目录配置,可能是JDK环境变量没有配置
完成后点build apks就会生成APK文件(注意:debug.apk在大部分android手机上不能成功安装,需要releease版本)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/GZ_public/article/details/127303133