yolov5转openvino学习笔记
首先编辑一下export.py文件中的一些参数,opset的值设为10
-
def parse_opt():
-
parser = argparse.ArgumentParser()
-
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')
-
parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='weights path')
-
parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[96,160], help='image (h, w)')
-
parser.add_argument('--batch-size', type=int, default=1, help='batch size')
-
parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
-
parser.add_argument('--half', action='store_true', help='FP16 half-precision export')
-
parser.add_argument('--inplace', action='store_true', help='set YOLOv5 Detect() inplace=True')
-
parser.add_argument('--train', action='store_true', help='model.train() mode')
-
parser.add_argument('--optimize', action='store_true', help='TorchScript: optimize for mobile')
-
parser.add_argument('--int8', action='store_true', help='CoreML/TF INT8 quantization')
-
parser.add_argument('--dynamic', action='store_true', help='ONNX/TF: dynamic axes')
-
parser.add_argument('--simplify', action='store_true', help='ONNX: simplify model')
-
# opset 的预设值为13,需要将其修改为10
-
parser.add_argument('--opset', type=int, default=10, help='ONNX: opset version')
-
parser.add_argument('--topk-per-class', type=int, default=100, help='TF.js NMS: topk per class to keep')
-
parser.add_argument('--topk-all', type=int, default=100, help='TF.js NMS: topk for all classes to keep')
-
parser.add_argument('--iou-thres', type=float, default=0.45, help='TF.js NMS: IoU threshold')
-
parser.add_argument('--conf-thres', type=float, default=0.25, help='TF.js NMS: confidence threshold')
-
parser.add_argument('--include', nargs='+',
-
default=['torchscript', 'onnx'],
-
help='available formats are (torchscript, onnx, coreml, saved_model, pb, tflite, tfjs)')
-
opt = parser.parse_args()
-
print_args(FILE.stem, opt)
-
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
- 点赞
- 收藏
- 关注作者
评论(0)