YOLOv5(6.1)安卓端部署记录

分享一下yolov5自己的模型部署到安卓端的踩坑记录,这里跳过yolov5训练部分(这部分网上很多教程),直接说重点。训练得到的为.PT模型,要部署到安卓端首先要转换为onnx模型,这一步6.1版本提供了export.py文件直接调用就行,需要注意加上--simplify以及选择合适的onnx转换版本,这里附上官方源码。https://github.com/ultralytics/yolov5icon-default.png?t=N7T8https://github.com/ultralytics/yolov5

 

 附上图片,主要介绍怎么把自己训练好的模型导入到安卓端,这里'--data'为yolov5对应的yaml文件,'--weights'为yolov5对应训练好的权值文件,'--imgsz'为对应的图片尺寸,其它为默认就行,特别注意运行的时候要把'--train'加上,主要作用就是消除Foucs层和后处理部分,加上了之后等会模型转换就不会报错。接下来就会得到对应的best.onnx文件,然后将模型简化,这一步需要安装对应的库,我这里用的是pycharm,在终端里输入 python -m onnxsim best.onnx bestsim.onnx如果没有安装onnxsim库需要在终端输入pip install onnx-simplifier然后执行上面的命令。

得到简化模型后还需将模型转换成param和bin文件,这一部分我看其它博客讲的比较麻烦,我这里说两个简单的方法,一个是在ncnn(https://github.com/Tencent/ncnn/releases)库下载对应的Windows和VS版本的文件,比如说我这里安装的VS2017,我下载的文件就是:https://github.com/Tencent/ncnn/releases/download/20220216/ncnn-20220216-windows-vs2017.zip

 版本问题的话没有太多要求,下好后解压,在X64/bin文件下有对应的exe文件,把模型文件拷贝到当前目录,在文件夹里面按住shift点右键打开Powershell窗口,输入./onnx2ncnn best-sim.onnx best.param best.bin。当前目录就会出现两个文件,然后接着重复打开Powershell,./ncnnoptimize best.param best.bin best-opt.param best-opt.bin 65536 压缩文件大小。另一种方法比较快,不过我没有用过这里附上链接,感兴趣的可以自己研究。https://convertmodel.com/icon-default.png?t=N7T8https://convertmodel.com/

接下来打开Android studio,到github下载大佬的工程https://github.com/nihui/ncnn-android-yolov5icon-default.png?t=N7T8https://github.com/nihui/ncnn-android-yolov5 

我这里主要说一下更换的地方,其它的环境问题你们可以参考其它博客,一个是图中的ncnn-20220216-android-vulkan这个需要自己下载丢到.app/src/main/jni这个目录下链接就是上面下载ncnn库的链接,然后需要在CMakeLists.txt文件中替换名字

set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20220216-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)

中间部分要换成自己下载的版本文件名字。然后把param和bin文件放到assets目录下,注意这个代码要修改自己的param和bin文件名为yolov5s或者到源代码更换为自己文件的名字,否则打开app识别图片的时候会闪退。

接下来修改param文件内容,拉到最底下内容,修改Reshape这一行,将0=xxx换成0=-1图片为修改之后的,如果不修改,到手机识别图片的时候会出现大量的标注框。 然后用Netron打开param文件查看结构,可以下载该软件,也可以直接用网页的Netronicon-default.png?t=N7T8https://netron.app/

 找到3个Permute查看对应的Output的name,这里512通道对应代码的stride 32,256通道对应16,128通道对应8。修改完成后,继续修改class_names,换成自己的标签,最后连上设备就可以识别图像了。

YOLOv5 6.1版本的ONNX文件是一种用于表示YOLOv5模型结构和权重的文件格式。ONNX(Open Neural Network Exchange)是一种开放的深度学习模型交换格式,它允许不同的深度学习框架之间共享和转换模型。 YOLOv5是一个快速、精确的目标检测算法,可以检测出图像或视频中的多个目标,并为每个目标提供边界框和类别预测。6.1版本是YOLOv5的一个更新版本,可能包含了一些性能优化和改进。 ONNX文件中包含了YOLOv5 6.1版本模型的网络结构和权重信息。网络结构定义了模型的层次结构、连接方式和参数设置等。权重信息则表示模型已经经过训练,并包含了模型在训练数据上学到的知识。 使用YOLOv5 6.1版本的ONNX文件可以实现以下功能: 1. 加载模型:通过读取ONNX文件,可以将YOLOv5 6.1版本的模型加载到深度学习框架中,以便进行后续的操作。 2. 推理预测:将输入图像或视频传入加载的模型,并获得模型对检测目标的预测结果。YOLOv5 6.1版本的模型在目标检测方面具有较高的精度和速度。 3. 目标分类:对于检测到的目标,可以使用模型中的类别预测信息,将其分类为特定的类别,如人、车、狗等。 4. 边界框定位:利用模型中的边界框信息,可以准确地确定目标在图像中的位置,从而进行更精确的识别和定位。 总而言之,YOLOv5 6.1版本的ONNX文件是实现目标检测的关键文件,可以通过加载模型、进行推理预测、目标分类和边界框定位等功能。它为使用YOLOv5提供了一种方便且高效的方式。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值