YOLOv7安卓部署 ncnn

2024-05-10 1632阅读

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转为.onnx:

      python export.py --weights '你的权重文件' \
      --iou-thres 这个自己设置 --conf-thres 自己设置 \
      --device 0
      

      这个导出有GPU就GPU到,然后–fp16和–int8看自己情况来吧,导出之后会在你的权重保存路径下生成.onnx的文件,保存这个文件。

      将导出的文件传到此网站:convertmodel

      YOLOv7安卓部署 ncnn

      保存这两个文件,后续要用到

      1.2 克隆所需要的代码

      首先是下载ncnn-android-yolov7代码,其次是ncnn,之后便是opencv-mobile

      ncnn-android-yolov7代码下载:

      YOLOv7安卓部署 ncnn

      ncnn代码下载:

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      opencv-mobile下载:

      YOLOv7安卓部署 ncnn

      下载之后便得到了三个压缩包,将其解压到同一目录下,最好目录不要有中文,避免报错,如下:

      YOLOv7安卓部署 ncnn

      然后将红箭头所指文件夹复制到ncnn-android-yolov7的这个目录下:D:\xx\ncnn-android-yolov7-master\app\src\main\jni

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      之后用Android Studio打开ncnn-android-yolov7项目,打开箭头所指文件,然后将我画红线位置改成你所复制的文件夹名字:

      YOLOv7安卓部署 ncnn

      将第1节得到的.param和.bin文件复制到asserts文件夹下

      到这里,准备工作就全部做好了,下一步就开始改代码了。

      1.3 修改代码

      请用netron打开刚刚转换模型得到的.param文件

      YOLOv7安卓部署 ncnn

      这里的images填入到的ex.input("xx", yy);中的xx,请注意,images只是我的.param文件下的名字,如果你的和我的不一样,请填你模型的。

      找到第一个检测头的这个卷积,

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      将画框的output填到stride8,这里的名字是onnx::Reshape_588,当然,你们的名字肯定和我的不一样,这个没关系,填你们自己的名字即可。依葫芦画瓢,找到第二个检测头上面一个卷积,然后将名字填到stride16,之后填stride32

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      对于yolo.cpp,请转到Yolo::detect函数,然后将得到的名字,按照相应位置填进去,对我画框部分进行修改,还有啊,anchor是你自己训练时配置文件中所用的anchor,所以也记得要进行修改。

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      YOLOv7安卓部署 ncnn

      继续在yolo.cpp文件中,转到Yolo::draw,改成你自己的类别名称:

      YOLOv7安卓部署 ncnn

      到此为止yolo.cpp修改完毕


      转到yoloncnn.cpp,按框所示,改成你自己的.param文件的名字:

      YOLOv7安卓部署 ncnn


      转到下面箭头所指文件,app_name是做成app后显示的名字,然后model_array下面的item要填你的.param文件的名字

      YOLOv7安卓部署 ncnn


      到此为止,代码上的改动已经全部结束,之后还需要对.param文件进行修改,打开它,然后像箭头一样修改即可

      YOLOv7安卓部署 ncnn

      到此为止,真的就全部修改完了。

      2、连接手机进行部署

      首先打开开发者模式,这里不进行赘述,另外,如果你是小米手机,那么请在开发者选项中关闭MIUI优化,不然会出错。

      第一步:

      YOLOv7安卓部署 ncnn

      第二步:

      YOLOv7安卓部署 ncnn

      第三步:

      YOLOv7安卓部署 ncnn

      静等一会儿,应用就会自动安装到手机,然后进行检测,到此为止,YOLOv7-tiny的部署就此完成。

      总结

      这里的图片和步骤有点多,请大家按照步骤一步一步进行,我也是看了一些资料才搞定的,应该算是保姆级教学了,原创,给个免费的赞谢谢!有问题可以在评论区交流哦!

      参考

      https://github.com/xiang-wuu/ncnn-android-yolov7

      https://github.com/nihui/opencv-mobile

      https://github.com/Tencent/ncnn

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]