旭日X3派YOLOV5推理和识别双重加速(以及遇到的一些问题和解决方法)

        在旭日X3派上部署YOLOv5的过程中碰到了许多问题,来开个贴记录一下我所遇到的问题及其解决方法,此外,感谢各位大佬的帖子和博客给予的帮助!!!文章最后给出了提升识别速度的方法。(瞎猫碰到死耗子凑出来的,本人菜鸡,具体原理不清楚)

问题一:模型转换环境难以搭建

        模型转换的时候我是跟着大佬小玺玺的教程来的
;由于本人电脑过于老旧(18年的笔记本),运行docker特别慢和卡,而且C盘空间占的太大了,对于新手来说不方便。因此我后面是跟着官方文档来的,在电脑里装了虚拟机,安装了Ubuntu系统,在Ubuntu系统里搭建好了模型转换环境,亲测有效。

问题二:后处理出现问题

        我遇到的报错如下:

Traceback (most recent call last):
File "test_yolov5.py", line 56, in <module>
prediction_bbox = postprocess(outputs, model_hw_shape=(640, 640), origin_image=img_file)
File "/media/sdcard2/app/pydev_demo/07_yolov5_sample/postprocess.py", line 35, in postprocess
pred_sbbox = model_output[0].buffer.reshape([1, 80, 80, 3,
ValueError: cannot reshape array of size 226800 into shape (1,80,80,3,9)

 后面逛论坛才知道时yolo版本的问题,要用官方的后处理函数的话,你的yolov5版本必须得是2.0,并且将pt文件转换为onnx文件的程序必须用2.0版本里的export.py程序,否则后处理也会报错。还有如果你想用小玺玺大佬自己写的Cython后处理函数来提升后处理速度的话,你的yolov5版本得是6.2,并且将pt文件转换为onnx文件的程序要用6.2版本里的export.py程序;或者将2.0版本训练好的pt模型文件用6.2版本里的export.py程序转化为onnx文件。onnx文件转为bin文件请参考官方教程。

问题三:识别速度慢

我的识别任务是垃圾四分类,用的官方给的教程(YOLOv5 2.0版本)总体识别速度大概是270ms(推理50ms+后处理220ms);

用的小玺玺大佬给的方法(YOLOv5 6.2 + 大佬写的后处理函数)总体识别速度大概为350ms(推理342ms+后处理7ms);

可以看出这两种方法各有各的优点,2.0的推理速度快,6.2的后处理速度快;突发奇想,能不能将两者结合一下?让整体识别速度更快。之所以只有6.2版本的模型才能使用大佬写的后处理函数,大概率是跟模型转换有关,因为yolov5虽然有版本迭代,但其整体网络结构不变啊。所以问题大概率出现在模型转换的过程中,二模型转换的第一个步骤就是pt转onnx。想法有了,开始实验!

用2.0版本的yolov5训练好pt模型,再将该模型用6.2版本的yolov5中的export.py程序转换为onnx文件,注意:将opset由12改为11.再在虚拟机里将onnx转换为bin文件,上板运行,完美!识别速度为140ms左右(推理速度131ms+后处理速度7ms)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值