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实现静态图片检测

目标检测YOLOv5在Android上的部署

目标检测YOLOv5在Android上的部署

yolov3和yolov5 android端实时部署(ncnn)

记录历经三天将自己的yolov5模型部署到Android安卓手机

在kaggle上用Yolov5训练口罩模型并部署到android端