• 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

yolov5 – 导出onnx模型教程

深度学习 发布于2023-10-25 阅读 3,381次 0次评论 0次点赞 本文共3332个字,阅读需要9分钟。

1 yolov5导出onnx模型

yolov5 Github:https://github.com/ultralytics/yolov5

yolov5 导出模型官方文档:https://docs.ultralytics.com/yolov5/tutorials/model_export/

1.1 配置yolov5所需环境

yolov5运行环境需要Python>=3.8,Pytorch>=1.8,使用Anaconda创建一个名为yolov5的虚拟环境,并在该虚拟环境下安装Python>=3.8,Pytorch>=1.8,之后安装yolov5的相关依赖。

拉取项目,安装相关依赖

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

1.2 导出yolov5 onnx模型

先从yolov5的github下载相关模型的预训练模型,这里以yolov5s为例,下载完成之后放在yolov5 git仓库根目录。

切换到yolov5所在的虚拟环境,并在根目录下执行以下命令

python export.py --weights yolov5s.pt --include onnx

命令成功之后,会在根目录下生成yolov5s.onnx的onnx模型文件。

上述导出命令是比较简单的,很有可能在执行上述命令的过程中发生以下错误

ONNX: export failure 0.0s: Unsupported ONNX opset version: 17

出现这个错误,是因为不支持onnx opset 17,所以我们需要在导出命令中指定onnx opset version,所以将上述命令修改为

python export.py --weights yolov5s.pt --include onnx --opset 11

即可导出成功。

export.py中有很多导出模型时可以用到的参数,比如

def parse_opt(known=False):
    parser = argparse.ArgumentParser()
    parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')
    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model.pt path(s)')
    parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640, 640], 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('--keras', action='store_true', help='TF: use Keras')
    parser.add_argument('--optimize', action='store_true', help='TorchScript: optimize for mobile')
    parser.add_argument('--int8', action='store_true', help='CoreML/TF/OpenVINO INT8 quantization')
    parser.add_argument('--dynamic', action='store_true', help='ONNX/TF/TensorRT: dynamic axes')
    parser.add_argument('--simplify', action='store_true', help='ONNX: simplify model')
    parser.add_argument('--opset', type=int, default=17, help='ONNX: opset version')
    parser.add_argument('--verbose', action='store_true', help='TensorRT: verbose log')
    parser.add_argument('--workspace', type=int, default=4, help='TensorRT: workspace size (GB)')
    parser.add_argument('--nms', action='store_true', help='TF: add NMS to model')
    parser.add_argument('--agnostic-nms', action='store_true', help='TF: add agnostic NMS to model')
    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'],
        help='torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle')
    opt = parser.parse_known_args()[0] if known else parser.parse_args()
    print_args(vars(opt))
    return opt

根据上述的导出参数,我们可以自定义导出onnx模型。

比如我们可以导出fp16半精度的yolov5s的onnx模型,命令行如下

python export.py --weights yolov5s.pt --include onnx --opset 11 --half --device 0

默认导出的yolov5s模型时支持图片640x640,我们可以通过以下命令将输入图片的大小修改为320x320

python export.py --weights yolov5s.pt --include onnx --img-size 320 320

在导出时简化模型

python export.py --weights yolov5s.pt --include onnx --simplify

更多的命令参数作用可以慢慢去摸索和扩展。

参考

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:yolov5 – 导出onnx模型教程

原文链接:https://www.stubbornhuang.com/2867/

发布于:2023年10月25日 15:23:10

修改于:2023年10月25日 15:24:35

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
OnnxRuntime - 从内存数据中加载onnx模型进行推理
OnnxRuntime
下一篇
2023年免费好用的高清影视网站推荐,VIP影视资源集合
工具软件网站
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号