并新增一个函数def my_export_onnx():
def my_export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorstr('ONNX:')): print('anchors:', model.yaml['anchors']) wtxt = open('class.names', 'w') for name in model.names: wtxt.write(name+'\n') wtxt.close() # YOLOv5 ONNX export print(im.shape) if not dynamic: f = os.path.splitext(file)[0] + '.onnx' torch.onnx.export(model, im, f, verbose=False, opset_version=12, input_names=['images'], output_names=['output']) else: f = os.path.splitext(file)[0] + '_dynamic.onnx' torch.onnx.export(model, im, f, verbose=False, opset_version=12, input_names=['images'], output_names=['output'], dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # shape(1,3,640,640) 'output': {0: 'batch', 1: 'anchors'} # shape(1,25200,85) }) return f在cmd中输入转onnx的命令(记得将export.py和pt模型放在同一路径下):
python export.py --weights yolov5s.pt --include onnx如下图所示为转化成功界面
文章插图
其中yolov5s可替换为yolov5m\yolov5m\yolov5l\yolov5x
文章插图
三、LabVIEW调用YOLOv5模型实现实时物体识别(yolov5_new_opencv.vi)本例中使用LabvVIEW工具包中opencv的dnn模块readNetFromONNX()载入onnx模型,可选择使用cuda进行推理加速 。
1.查看模型我们可以使用netron 查看yolov5m.onnx的网络结构 , 浏览器中输入链接:https://netron.app/,点击Open Model , 打开相应的网络模型文件即可 。
文章插图
如下图所示是转换之后的yolov5m.onnx的属性:
文章插图
2.参数及输出blobFromImage参数: size:640*640 Scale=1/255 Means=[0,0,0]
Net.forward()输出: 单数组 25200*85
3.LabVIEW调用YOLOv5源码如下图所示,调用摄像头实现实时物体识别
文章插图
4.LabVIEW调用YOLOv5实时物体识别结果本次我们是以yolov5m.onnx为例来测试识别结果和速度的; 不使用GPU加速,仅在CPU模式下 , 实时检测推理用时在300ms/frame左右
文章插图
使用GPU加速,实时检测推理用时为30~40ms/frame,是cpu速度的十倍多
文章插图
总结以上就是今天要给大家分享的内容,本次分享内容实验环境说明:操作系统为Windows10,python版本为3.6及以上,LabVIEW为2018及以上 64位版本,视觉工具包为博客开头提到的工具包 。
如需源码,如需源码,请关注微信公众号:VIRobotics 。回复关键字“yolov5” 。
如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299 。进群请备注暗号:LabVIEW深度学习
【Object Detection 【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别含源码】
推荐阅读
- 不会游泳的人如何自学游泳(一般人如何学习游泳)
- 怎样在大海中游泳(在大海中怎么游泳)
- Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】
- 翻转吧剧情大战牛魔王怎么过
- 奶茶店的冰块怎么做(奶茶店的碎冰怎么做)
- Go_gin权限验证
- 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号
- 穿越火线怎么调烟雾头(win10cf烟雾保护头怎么调)
- 照片怎么p图(手机怎样p图换人头)
- 【高并发】ScheduledThreadPoolExecutor与Timer的区别和简单示例