yolov5部署android教程
Posted now()
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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版本)
以上是关于yolov5部署android教程的主要内容,如果未能解决你的问题,请参考以下文章
YOLOv5使用NCNN将模型部署到Android端教程部署自己的训练模型到Android实现静态图片检测
yolov3和yolov5 android端实时部署(ncnn)