Yolov5——使用export.py把pt格式模型输出为onnx模型

前提依赖

需要Python>=3.8.0,并且含有PyTorch>=1.8,安装好yolov5所需要的所有依赖

git clone https://github.com/ultralytics/yolov5
# 用于克隆yolov5项目
cd yolov5
pip install -r requirements.txt  
# 安装所有依赖库

可转换的模型

Formatexport.py --includeModel
PyTorch-yolov5s.pt
TorchScripttorchscriptyolov5s.torchscript
ONNXonnxyolov5s.onnx
OpenVINOopenvinoyolov5s_openvino_model/
TensorRTengineyolov5s.engine
CoreMLcoremlyolov5s.mlmodel
TensorFlow SavedModelsaved_modelyolov5s_saved_model/
TensorFlow GraphDefpbyolov5s.pb
TensorFlow Litetfliteyolov5s.tflite
TensorFlow Edge TPUedgetpuyolov5s_edgetpu.tflite
TensorFlow.jstfjsyolov5s_web_model/
PaddlePaddlepaddleyolov5s_paddle_model/

export可选参数

可配置项

参数

解释

"--data"

type=str

default=ROOT/"data/coco128.yaml"

help="dataset.yaml path"

数据集配置目录,设置为训练模型时的数据集配置即可

"--weights"

nargs="+"

type=str

default=ROOT / "yolov5s.pt"

help="model.pt path(s)"

权重文件目录

"--imgsz"

"--img"

"--img-size"

nargs="+"

type=int

default=[640, 640]

help="image (h, w)"

输入模型的图片大小,默认为[640,640]

"--batch-size"

type=int

default=1

help="batch size"

batch大小,每次处理的图片数,默认为1

"--device"

default="cpu"

help="cuda device, i.e. 0 or 0,1,2,3 or cpu"

模型运行设备,默认为cpu

"--half"

action="store_true"

help="FP16 half-precision export"

是否使用半精度FP16export转换,默认False

"--inplace"

action="store_true"

help="set YOLOv5 Detect() inplace=True"

是否设置Detect()类的inplace属性为Treu,默认False

"--keras"

action="store_true"

help="TF: use Keras"

是否在TensorFlow中使用Keras默认False

"--optimize"

action="store_true"

help="TorchScript: optimize for mobile"

是否对TorchScript进行移动端量化默认False

"--int8"

action="store_true"

help="CoreML/TF/OpenVINO INT8 quantization"

是否进行INT8量化,用于CoreML或TensorFlow默认False

"--per-tensor"

action="store_true"

help="TF per-tensor quantization"

是否对TensorFlow进行per-tensor量化,默认False

"--dynamic"

action="store_true"

help="ONNX/TF/TensorRT: dynamic axes"

onnx转换参数,是否进行批处理变量,默认False

"--simplify"

action="store_true"

help="ONNX: simplify model"

onnx模型转换参数,是否简化onnx模型,默认False

"--mlmodel"

action="store_true"

help="CoreML: Export in *.mlmodel format"

是否将模型导出为CoreML格式,默认False

"--opset"

type=int

default=17

help="ONNX: opset version"

onnx模型转换参数,设置onnx版本,默认17

"--verbose"

action="store_true"

help="TensorRT: verbose log"

是否在 TensorRT 中提供详细日志默认False

"--workspace"

type=int

default=4

help="TensorRT: workspace size (GB)"

指定 TensorRT 的工作空间大小

"--nms"

action="store_true"

help="TF: add NMS to model"

是否在 TensorFlow 中添加非极大值抑制(NMS),默认False

"--agnostic-nms"

action="store_true"

help="TF: add agnostic NMS to model"

是否在 TensorFlow 中添加不可知的 NMS默认False

"--topk-per-class"

type=int

default=100

help="TF.js NMS: topk per class to keep"

在 TF.js 中,每个类别保留的检测框数量

"--topk-all"

type=int

default=100

help="TF.js NMS: topk for all classes to keep"

在 TF.js 中,所有类别保留的检测框数量

"--iou-thres"

type=float

default=0.45

help="TF.js NMS: IoU threshold"

在 TF.js 中,NMS 的 IoU 阈值默认为0.45

"--conf-thres"

type=float

default=0.25

help="TF.js NMS: confidence threshold"

在 TF.js 中,NMS 的置信度阈值默认为0.25

"--include"

nargs="+"

default=['torchscript', 'onnx']

help="torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle"

模型的输出格式,默认为[torchscript,onnx]

nargs="+"

有这个参数表示用户需要至少提供一个输入文件,如果他们提供多个文件,这几个文件名会被放入一个列表

python script.py --input file1.txt file2.txt file3.txt
# args.input 将是一个列表,包含了所有传递给 --input 的值
# ['file1.txt', 'file2.txt', 'file3.txt']

action="store_true"

如果命令行中包含该选项,相应的变量将被设置为 True,否则为默认 False

如果修改默认为True(加入参数default=True)不管包不包含都会被设置为True

设置参数并运行

要把pt模型转换为onnx模型,需要指定pt模型位置,所使用的数据配置文件

# 在yolov5目录下,命令行运行
python export.py --weights yolov5s.pt --data data/coco.yaml --include onnx
# 一般指定pt模型位置,数据配置文件,要输出的模型格式这三个参数即可,其他参数可以自行增加

转换完成,可以使用detect.py进行执行检测,也可以使用val.py验证模型性能

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值