本人第一次接触openvion部署,因工作需要,需要一款CPU加速工具去部署我们的模型。在网上翻箱倒柜找到了这个openvion。本着对工作严谨认真的态度,我努力研究了一早上,下午开始准备干的时候,这个时候才发现噩梦才刚刚开始。
话不多说,咋们直接开始从头来搞一遍。
这里我就不去教大家如何训练了。大家可以根据 :
YoloV5实战:手把手教物体检测——YoloV5_AI浩-CSDN博客_yolov5目录摘要训练1、下载代码2、配置环境3、准备数据集4、生成数据集5、修改配置参数6、修改train.py的参数摘要YOLOV5严格意义上说并不是YOLO的第五个版本,因为它并没有得到YOLO之父Joe Redmon的认可,但是给出的测试数据总体表现还是不错。详细数据如下:YOLOv5并不是一个单独的模型,而是一个模型家族,包括了YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x、YOLOv5x+TTA,这点有点儿像EfficientDe..https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/109253329?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163663210516780357241654%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163663210516780357241654&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-109253329.pc_search_result_cache&utm_term=yolov5%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99&spm=1018.2226.3001.4187
最后生成的文件 (我这里使用的是第五版本的torch版本的yolov5m,大家也可以参照。)会在runs/train/exp/weights/best.pt 文件。因为openvion要使用IR模型,所以要先把pt模型转换为onnx模型中间值,以下为步骤。
yolo代码中有直接可以转,在models下面的export.py里面。需要注意要改一些东西。
# yolov5/models/export.py# Lines 51 to 52 in 5e0b90d
# torch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'], torch.onnx.export(model, img, f, verbose=False, opset_version=10, input_names=['images'], output_names=['classes', 'boxes'] if y is None else ['output'])
运行代码:
python export.py --weights --img 640 --batch 1
刚开始的代码是别人给我的,他是直接使用官方5s的模型去部署的一个视频。而我的项目寻求是使用自己的模型去部署图片。刚开始我抱着试一试的心态去改了模型的路径,改了导入图片的路径。果不其然,各种各样的报错。本在对工作认真负责的态度为我一个一个解决,终于代码运行了,可是结果让我直接哭出来了,一张图片上面居然有1000多个预测框,这不仅仅让为怀疑人生,也让我们组长对我刮目相看。我也不怕被大家笑话直接给大家上图。
所以我就一直在思考一个问题,为什么一模一样的代码,别人运行就什么事情都没有,到我这里将会有各种各样的问题。然后我就将代码整整齐齐滤了一遍,我没有发现任何问题,然后我就尝试着将官方模型运行了一遍。得出结论是我模型转换的问题,还有就是我的推理速度,每张图片在300多ms。我一气之下把openvion卸载了重新装载了一边(这里因为没有删除干净,又浪费了我2天的时间)。不过黄天不负有❤人,我发现我第一次安装时根本没有安装好,所以我让大家根据教程好好去安装,最后还一定要去验证一次。
这里给大家着重强调一下,这一步至关重要,直接关系到这个模型的使用。
安装验证完成openvion可以使用后,使用下面的命令,进入这个文件。
cd /opt/intel/openvino_2021/deployment_tools/model_optimizer
这个文件下面有,我们要使用的是 mo_onnx.py这个文件.
这里我们要先进入conda的虚拟环境,然后使用下面这个命令,安装所需要的包。
pip install -r requirements_onnx.txt -i https://pypi.douban.com/simple/
onnx模型转换成功后一定要去 Netron这里去看自己的模型。
重点中的重点来了 下面这个命令直接关乎是否能成功。
在 /opt/intel/openvino_2021/deployment_tools/model_optimizer/这个路径下,conda环境下使用命令
python mo_onnx.py --input_model 《你模型存放的地址》 --input_shape [1,3,640,640] --output_dir 《保存生成模型的地址》--output 《可视化onnx模型得到的output的id名》
这就生成模型了,然后将这个模型放入代码中去运行使用一下。
如果还是不对的话,可以去调整一下nms的值,设置的大一点。还有排版,20,40,80的那里,可以把顺序反转一下。
总结
如果大家还有什么问题,欢迎提问 ,我的微信:18834206636。本人也是一名小白,如果有不对的地方希望大家指正一下,谢谢大家。