ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

YOLOv7安卓部署 ncnn

YOLOv7安卓部署 ncnn YOLOv7安卓部署 ncnn前言1、YOLOv7-tiny模型部署1.1 获得所需模型文件1.2 克隆所需要的代码1.3 修改代码2、连接手机进行部署总结参考前言本文将讲述如何利用ncnn在安卓手机端部署YOLOv7这里以YOLOv7-tiny为例进行讲解YOLOv7按照步骤依次进行即可同时对于Android Studio的安装不在本次教程之内1、YOLOv7-tiny模型部署标准YOLOv7-tiny部署指的是没有更改YOLOv7-tiny的网络模型架构直接利用训练好的模型权重进行部署下面分几步进行讲述1.1 获得所需模型文件首先是将训练获得的权重文件.pt转为.onnxpython export.py--weights你的权重文件\--iou-thres 这个自己设置--conf-thres 自己设置 \--device0这个导出有GPU就GPU到然后–fp16和–int8看自己情况来吧导出之后会在你的权重保存路径下生成.onnx的文件保存这个文件。将导出的文件传到此网站convertmodel保存这两个文件后续要用到1.2 克隆所需要的代码首先是下载ncnn-android-yolov7代码其次是ncnn之后便是opencv-mobilencnn-android-yolov7代码下载ncnn代码下载opencv-mobile下载下载之后便得到了三个压缩包将其解压到同一目录下最好目录不要有中文避免报错如下然后将红箭头所指文件夹复制到ncnn-android-yolov7的这个目录下D:\xx\ncnn-android-yolov7-master\app\src\main\jni之后用Android Studio打开ncnn-android-yolov7项目打开箭头所指文件然后将我画红线位置改成你所复制的文件夹名字将第1节得到的.param和.bin文件复制到asserts文件夹下到这里准备工作就全部做好了下一步就开始改代码了。1.3 修改代码请用netron打开刚刚转换模型得到的.param文件这里的images填入到的ex.input(xx, yy);中的xx请注意images只是我的.param文件下的名字如果你的和我的不一样请填你模型的。找到第一个检测头的这个卷积将画框的output填到stride8这里的名字是onnx::Reshape_588当然你们的名字肯定和我的不一样这个没关系填你们自己的名字即可。依葫芦画瓢找到第二个检测头上面一个卷积然后将名字填到stride16之后填stride32对于yolo.cpp请转到Yolo::detect函数然后将得到的名字按照相应位置填进去对我画框部分进行修改还有啊anchor是你自己训练时配置文件中所用的anchor所以也记得要进行修改。继续在yolo.cpp文件中转到Yolo::draw改成你自己的类别名称到此为止yolo.cpp修改完毕转到yoloncnn.cpp按框所示改成你自己的.param文件的名字转到下面箭头所指文件app_name是做成app后显示的名字然后model_array下面的item要填你的.param文件的名字到此为止代码上的改动已经全部结束之后还需要对.param文件进行修改打开它然后像箭头一样修改即可到此为止真的就全部修改完了。2、连接手机进行部署首先打开开发者模式这里不进行赘述另外如果你是小米手机那么请在开发者选项中关闭MIUI优化不然会出错。第一步第二步第三步静等一会儿应用就会自动安装到手机然后进行检测到此为止YOLOv7-tiny的部署就此完成。总结这里的图片和步骤有点多请大家按照步骤一步一步进行我也是看了一些资料才搞定的应该算是保姆级教学了原创给个免费的赞谢谢有问题可以在评论区交流哦参考https://github.com/xiang-wuu/ncnn-android-yolov7https://github.com/nihui/opencv-mobilehttps://github.com/Tencent/ncnn
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进