使用yolov5的export.py来进行onnx格式的转换

部署运行你感兴趣的模型镜像

        在模型部署的过程中我们经常会进行下面这张图片(图片来源自openmmlab)所展示的流程:

         所以接下来我们解决如何使用yolov5自带的export.py来进行onnx的转换。看到下面这串摘自export.py的代码:

        '--include',
        nargs='+',
        default=['onnx'],
        help='torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle')
    opt = parser.parse_args()
    print_args(vars(opt))
    return opt

        可以看到default=['onnx'],而默认的是torchscript。有些人可能会通过终端运行

python export.py --include onnx

来获得onnx格式文件,我们完全可以使用export.py进行转换onnx甚至是其他格式文件。我的分享到此结束,谢谢!

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

### YOLOv5 中 `export.py` 文件代码详细解析及功能说明 YOLOv5 的 `export.py` 是用于将训练好的 PyTorch 模型转换为其他框架支持的模型格式(如 ONNX、TensorRT 或 CoreML)。以下是对其核心功能和代码结构的详细解析: #### 1. **导入必要的库** 在脚本开头,会引入多个 Python 库以及 YOLOv5 自定义模块。这些库主要用于加载模型、处理数据流并完成不同格式之间的转换。 ```python import argparse, os, sys, glob from pathlib import Path import torch from models.common import DetectMultiBackend ``` 此部分通过标准库(如 `argparse`, `os` 和 `torch`)来设置参数解析器,并提供路径操作工具[^1]。 --- #### 2. **命令行参数配置** `export.py` 使用 `argparse.ArgumentParser()` 来接收来自用户的输入参数。常见的选项包括但不限于: - `--weights`: 输入预训练权重文件的位置。 - `--imgsz`: 图像尺寸大小,默认通常设为 `[640, 640]`。 - `--batch-size`: 导出时使用的批量大小。 - `--include`: 转换的目标格式列表(例如 `'onnx'`, `'coreml'` 等)。 这部分允许用户灵活指定所需的导出条件[^2]。 --- #### 3. **模型初始化与加载** 函数内部调用了自定义类 `DetectMultiBackend` 加载给定的 `.pt` 权重文件。如果成功,则继续执行后续逻辑;否则抛出错误提示。 ```python model = attempt_load(weights, device=device) if half: model.half() # to FP16 for k in model.state_dict().keys(): print(k) ``` 上述片段展示了如何读取网络层名称及其对应的张量形状信息以便进一步分析或调整[^1]。 --- #### 4. **ONNX 格式的具体实现细节** 当目标格式被设定为 `"onnx"` 后,程序进入特定分支进行如下操作: - 设置动态轴以适应不同的批次维度; - 定义简化规则减少冗余计算节点数量; - 输出最终生成的结果保存至磁盘目录下。 ```python dynamic_axes = {'images': {0: 'batch', ...}, 'output': {...}} torch.onnx.export( model, img, f, verbose=False, opset_version=opset, do_constant_folding=True, input_names=['images'], output_names=['output'], dynamic_axes=dynamic_axes or None ) print(f"ONNX export success, saved as {f}") ``` 这里的关键在于正确映射输入输出变量名并与实际需求保持一致[^2]。 --- #### 5. **扩展到其他平台的支持** 除了基本的 ONNX 外,还实现了针对 TensorRT、CoreML 及 TFLite 的适配方法。每种情况都遵循相似的设计思路——先准备基础环境再逐步完善特性直至满足官方文档的要求为止。 --- ### 总结 综上所述,《export.py》不仅提供了便捷的方式让用户能够轻松获取跨平台兼容版本的检测算法实例,同时也保留了一定程度上的可定制化空间供开发者深入探索优化潜力所在[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值