PaddleDetection模型支持保存为ONNX格式,目前测试支持的列表如下
模型 | OP版本 | 备注 |
---|---|---|
YOLOv3 | 11 | 仅支持batch=1推理;模型导出需固定shape |
PPYOLO | 11 | 仅支持batch=1推理;MatrixNMS将被转成NMS,精度略有变化;模型导出需固定shape |
PPYOLOv2 | 11 | 仅支持batch=1推理;MatrixNMS将被转换NMS,精度略有变化;模型导出需固定shape |
PPYOLO-Tiny | 11 | 仅支持batch=1推理;模型导出需固定shape |
FCOS | 11 | 仅支持batch=1推理 |
PAFNet | 11 | - |
TTFNet | 11 | - |
SSD | 11 | 仅支持batch=1推理 |
保存ONNX的功能由Paddle2ONNX提供,如在转换中有相关问题反馈,可在Paddle2ONNX的Github项目中通过ISSUE与工程师交流。
导出步骤参考文档PaddleDetection部署模型导出教程, 以COCO数据集训练的YOLOv3为例,导出示例如下
cd PaddleDetection
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml \
-o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams \
TestReader.inputs_def.image_shape=[3,608,608] \
--output_dir inference_model
导出后的模型保存在inference_model/yolov3_darknet53_270e_coco/
目录中,结构如下
yolov3_darknet
├── infer_cfg.yml # 模型配置文件信息
├── model.pdiparams # 静态图模型参数
├── model.pdiparams.info # 参数额外信息,一般无需关注
└── model.pdmodel # 静态图模型文件
注意导出时的参数
TestReader.inputs_def.image_shape
,对于YOLO系列模型注意导出时指定该参数,否则无法转换成功
安装Paddle2ONNX(高于或等于0.6版本)
pip install paddle2onnx
使用如下命令转换
paddle2onnx --model_dir inference_model/yolov3_darknet53_270e_coco \
--model_filename model.pdmodel \
--params_filename model.pdiparams \
--opset_version 11 \
--save_file yolov3.onnx
转换后的模型即为在当前路径下的yolov3.onnx