yolov5转openvino学习笔记

举报
风吹稻花香 发表于 2022/06/01 23:17:58 2022/06/01
【摘要】 首先编辑一下export.py文件中的一些参数,opset的值设为10 def parse_opt():    parser = argparse.ArgumentParser()    parser.add_argument('--data', type=str, default=ROOT...

首先编辑一下export.py文件中的一些参数,opset的值设为10


  
  1. def parse_opt():
  2.     parser = argparse.ArgumentParser()
  3.     parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')
  4.     parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='weights path')
  5.     parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[96,160], help='image (h, w)')
  6.     parser.add_argument('--batch-size', type=int, default=1, help='batch size')
  7.     parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
  8.     parser.add_argument('--half', action='store_true', help='FP16 half-precision export')
  9.     parser.add_argument('--inplace', action='store_true', help='set YOLOv5 Detect() inplace=True')
  10.     parser.add_argument('--train', action='store_true', help='model.train() mode')
  11.     parser.add_argument('--optimize', action='store_true', help='TorchScript: optimize for mobile')
  12.     parser.add_argument('--int8', action='store_true', help='CoreML/TF INT8 quantization')
  13.     parser.add_argument('--dynamic', action='store_true', help='ONNX/TF: dynamic axes')
  14.     parser.add_argument('--simplify', action='store_true', help='ONNX: simplify model')
  15.     # opset 的预设值为13,需要将其修改为10
  16.     parser.add_argument('--opset', type=int, default=10, help='ONNX: opset version')
  17.     parser.add_argument('--topk-per-class', type=int, default=100, help='TF.js NMS: topk per class to keep')
  18.     parser.add_argument('--topk-all', type=int, default=100, help='TF.js NMS: topk for all classes to keep')
  19.     parser.add_argument('--iou-thres', type=float, default=0.45, help='TF.js NMS: IoU threshold')
  20.     parser.add_argument('--conf-thres', type=float, default=0.25, help='TF.js NMS: confidence threshold')
  21.     parser.add_argument('--include', nargs='+',
  22.                         default=['torchscript', 'onnx'],
  23.                         help='available formats are (torchscript, onnx, coreml, saved_model, pb, tflite, tfjs)')
  24.     opt = parser.parse_args()
  25.     print_args(FILE.stem, opt)
  26.     return opt


        之后将yolo的pt模型转换为onnx模型,如果此时直接将onnx转换为openvino的bin和xml使用demo进行推理的话,会报too many values to unpack的错误,主要是因为下图中的三个卷积造成的:

         使用netron打开onnx模型,找到这三个卷积的name

在openvino环境中的控制台终端输入如下指令:

mo --input_model best.onnx -s 255 --reverse_input_channels --output Conv_245,Conv_294,Conv_196 --input_shape [1,3,96,160]
        最后的input_shape看你是否需要改变输入的大小,我这里时改成了160*96的输入

        导出成功的话,会显示上面的信息,之后用demo中的yolov5_demo_OV2021.3.py进行推理就不会报too many values to unpack的错误。

原文链接:https://blog.csdn.net/athrunsunny/article/details/123719407

letterbox:将输入图像通过填充灰边的方式调整至(640,640)大小。YOLOv5可以自适应图像缩放,但用openvino推理必须保证传入网络的图像大小和模型转换时的输入图像大小相等
non_max_suppression:非极大值抑制函数。为了避免其它第三方库的依赖,用numpy实现
plot_one_box:可视化函数,将检测结果可视化
————————————————
版权声明:本文为CSDN博主「开鑫9575」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45930948/article/details/124359754

这篇博文也可以试试:

【玩转YOLOv5】YOLOv5转openvino并进行部署

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/125080823

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。