pytorch,yolov5模型经onnx到Android(三)

上一篇文章介绍了使用ncnn将onnx转成Android可以配置的param和bin,其实是有问题的。我后面使用了很多次,都无法将其配置进去Android。经过对比best.param的对比。我发现最新u版的yolov5(我在二里面使用的是yolov5-v6版本)里面很多东西更改了。作为菜鸟,我查了很多资料也没有看到解决的方法。有知道的同志可以给我普及下.最后没办法,只能继续检查腾讯ncnn的例子和相关资料,终于了解到他们当前的例子是在yolov5-v3版本上面搞的,于是我只好重新再来一次。还好,这次成功了。记录下过程。

1,配置还是之前的,在win10上完成的

2,下载u版yolov5-v3,给个地址吧。方便和我一样的菜鸟不用更多查询:

这个是yolov5-v3的主页

https://github.com/ultralytics/yolov5/releases/tag/v3.0

这个是yolov5-v3的文件下载

https://codeload.github.com/ultralytics/yolov5/zip/refs/tags/v3.0icon-default.png?t=LA92https://codeload.github.com/ultralytics/yolov5/zip/refs/tags/v3.03,参照下面的进行数据训练,并且对应解决相关的错误和异常。

yolov5训练自己的数据集_xiaoyifeishuang1的博客-CSDN博客一直兜兜转转,看yolov5看了好长一段时间。感觉迷迷糊糊的一直摸不着边际,直到今天终于可以又进一步。现在是使用yolov5里面训练自己的数据(只说我当前的操作,不说原理,因为我现在也不会)????使用环境:Win10(GPU) + Anacoda3+ pychram下载包:GitHub - ultralytics/yolov5: YOLOv5 ???? in PyTorch > ONNX > CoreML > TFLite​​​​​​直接到这个下面将整个包下载下来。https://blog.csdn.net/xiaoyifeishuang1/article/details/121266541最后得到

pytorch,yolov5模型经onnx到Android(三)_第1张图片

4,得到pt模型之后,对其进行处理

修改export.py的参数,将里面默认的yolov5s.pt换成我们上面生成的best.pt。这个需要注意路径。

然后运行export.py,得到onnx模型。

对onnx模型进行简化,我的简化程序代码为(注意你自己的路径):

python -m onnxsim best.onnx best-sim.onnx

之后我得到如图:

pytorch,yolov5模型经onnx到Android(三)_第2张图片

 

4,使用里面的onnx转成Android所需的param和bin

pytorch,yolov5模型经onnx到Android(二)_xiaoyifeishuang1的博客-CSDN博客以下为win10+protobuf+ncnn,主要从GitHub腾讯里面获取相关的步骤:https://github.com/Tencent/ncnn文章内容如下:作为菜鸡,我还是将其全部列出来吧。方便后面再搞的时候,能快速上手。高手请略过。。。1,安装vs2017社区版,这个不说。除了安装路径外,其他都可以选择下一个,安装路径如果C盘够,也可以直接默认。下载可去 i tell you2,Start → Programs → Visual Studio 2017 → Vis.https://blog.csdn.net/xiaoyifeishuang1/article/details/121429475?spm=1001.2014.3001.5501我是将best-sim.onnx放到和onnx2ncnn.exe同一个路径,然后运行指令:

D:\ncnn-master\build-vs2017\tools>onnx2ncnn.exe best-sim.onnx best.param best.bin

pytorch,yolov5模型经onnx到Android(三)_第3张图片

 

得到如图所示:

pytorch,yolov5模型经onnx到Android(三)_第4张图片

 再按照查找到的资料修改分片框

pytorch,yolov5模型经onnx到Android(三)_第5张图片

 得到修改后的best.param

pytorch,yolov5模型经onnx到Android(三)_第6张图片

 

 194-4=192

最后使用ncnnoptimize对修改的模型进行简化,顺便转为fp16存储减小模型体积。我将修改后的param和bin文件复制到ncnnoptimize可执行文件所在的文件夹里面。

pytorch,yolov5模型经onnx到Android(三)_第7张图片

D:\ncnn-master\build-vs2017\tools>ncnnoptimize.exe best.param best.bin best-opt.param best-opt.bin 65536

pytorch,yolov5模型经onnx到Android(三)_第8张图片

 得到了best-opt.param和best-opt.bin;

打开best-opt.param

pytorch,yolov5模型经onnx到Android(三)_第9张图片

将best-opt.param里面的6400,1600,400全部更改成-1;

至此,可以将相对应的best-opt.param和best-opt.bin复制到Android 里面了。按照之前demo复制到assets文件夹里面。然后修改yolov5ncnn_jni.cpp。第一个是种类,第二个是输出。

pytorch,yolov5模型经onnx到Android(三)_第10张图片

 pytorch,yolov5模型经onnx到Android(三)_第11张图片

对应添加即可。

下图是使用300张猫的图片训练好的权重,识别不太行。但是现在主要是过程吧。终于是自己训练的数据了。过程痛苦啊!!!

pytorch,yolov5模型经onnx到Android(三)_第12张图片 

我这参考了很多lihui大神的文章,下面是个链接

详细记录u版YOLOv5目标检测ncnn实现 - 知乎 (zhihu.com)icon-default.png?t=LA92https://zhuanlan.zhihu.com/p/275989233?utm_source=qq想知道原理或者其他的可以去看

你可能感兴趣的:(Python,Android,pytorch,android,人工智能,onnx,ncnn)