更换文档检测模型
This commit is contained in:
112
paddle_detection/deploy/EXPORT_ONNX_MODEL.md
Normal file
112
paddle_detection/deploy/EXPORT_ONNX_MODEL.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# PaddleDetection模型导出为ONNX格式教程
|
||||
|
||||
PaddleDetection模型支持保存为ONNX格式,目前测试支持的列表如下
|
||||
| 模型 | OP版本 | 备注 |
|
||||
| :---- | :----- | :--- |
|
||||
| YOLOv3 | 11 | 仅支持batch=1推理;模型导出需固定shape |
|
||||
| PP-YOLO | 11 | 仅支持batch=1推理;MatrixNMS将被转换NMS,精度略有变化;模型导出需固定shape |
|
||||
| PP-YOLOv2 | 11 | 仅支持batch=1推理;MatrixNMS将被转换NMS,精度略有变化;模型导出需固定shape |
|
||||
| PP-YOLO Tiny | 11 | 仅支持batch=1推理;模型导出需固定shape |
|
||||
| PP-YOLOE | 11 | 仅支持batch=1推理;模型导出需固定shape |
|
||||
| PP-PicoDet | 11 | 仅支持batch=1推理;模型导出需固定shape |
|
||||
| FCOS | 11 |仅支持batch=1推理 |
|
||||
| PAFNet | 11 |- |
|
||||
| TTFNet | 11 |-|
|
||||
| SSD | 11 |仅支持batch=1推理 |
|
||||
| PP-TinyPose | 11 | - |
|
||||
| Faster RCNN | 16 | 仅支持batch=1推理, 依赖0.9.7及以上版本|
|
||||
| Mask RCNN | 16 | 仅支持batch=1推理, 依赖0.9.7及以上版本|
|
||||
| Cascade RCNN | 16 | 仅支持batch=1推理, 依赖0.9.7及以上版本|
|
||||
| Cascade Mask RCNN | 16 | 仅支持batch=1推理, 依赖0.9.7及以上版本|
|
||||
|
||||
保存ONNX的功能由[Paddle2ONNX](https://github.com/PaddlePaddle/Paddle2ONNX)提供,如在转换中有相关问题反馈,可在Paddle2ONNX的Github项目中通过[ISSUE](https://github.com/PaddlePaddle/Paddle2ONNX/issues)与工程师交流。
|
||||
|
||||
## 导出教程
|
||||
|
||||
### 步骤一、导出PaddlePaddle部署模型
|
||||
|
||||
|
||||
导出步骤参考文档[PaddleDetection部署模型导出教程](./EXPORT_MODEL.md), 导出示例如下
|
||||
|
||||
- 非RCNN系列模型, 以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系列模型注意导出时指定该参数,否则无法转换成功
|
||||
|
||||
- RCNN系列模型,以Faster RCNN为例
|
||||
|
||||
RCNN系列模型导出ONNX模型时,需要去除模型中的控制流,因此需要额外添加`export_onnx=True` 字段
|
||||
```
|
||||
cd PaddleDetection
|
||||
python tools/export_model.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml \
|
||||
-o weights=https://paddledet.bj.bcebos.com/models/faster_rcnn_r50_fpn_1x_coco.pdparams \
|
||||
export_onnx=True \
|
||||
--output_dir inference_model
|
||||
```
|
||||
|
||||
导出的模型保存在`inference_model/faster_rcnn_r50_fpn_1x_coco/`目录中,结构如下
|
||||
```
|
||||
faster_rcnn_r50_fpn_1x_coco
|
||||
├── infer_cfg.yml # 模型配置文件信息
|
||||
├── model.pdiparams # 静态图模型参数
|
||||
├── model.pdiparams.info # 参数额外信息,一般无需关注
|
||||
└── model.pdmodel # 静态图模型文件
|
||||
```
|
||||
|
||||
### 步骤二、将部署模型转为ONNX格式
|
||||
安装Paddle2ONNX(高于或等于0.9.7版本)
|
||||
```
|
||||
pip install paddle2onnx
|
||||
```
|
||||
使用如下命令转换
|
||||
```
|
||||
# YOLOv3
|
||||
paddle2onnx --model_dir inference_model/yolov3_darknet53_270e_coco \
|
||||
--model_filename model.pdmodel \
|
||||
--params_filename model.pdiparams \
|
||||
--opset_version 11 \
|
||||
--save_file yolov3.onnx
|
||||
|
||||
# Faster RCNN
|
||||
paddle2onnx --model_dir inference_model/faster_rcnn_r50_fpn_1x_coco \
|
||||
--model_filename model.pdmodel \
|
||||
--params_filename model.pdiparams \
|
||||
--opset_version 16 \
|
||||
--save_file faster_rcnn.onnx
|
||||
```
|
||||
转换后的模型即为在当前路径下的`yolov3.onnx`和`faster_rcnn.onnx`
|
||||
|
||||
### 步骤三、使用onnxruntime进行推理
|
||||
安装onnxruntime
|
||||
```
|
||||
pip install onnxruntime
|
||||
```
|
||||
推理代码示例在[deploy/third_engine/onnx](./third_engine/onnx)下
|
||||
|
||||
使用如下命令进行推理:
|
||||
```
|
||||
# YOLOv3
|
||||
python deploy/third_engine/onnx/infer.py
|
||||
--infer_cfg inference_model/yolov3_darknet53_270e_coco/infer_cfg.yml \
|
||||
--onnx_file yolov3.onnx \
|
||||
--image_file demo/000000014439.jpg
|
||||
|
||||
# Faster RCNN
|
||||
python deploy/third_engine/onnx/infer.py
|
||||
--infer_cfg inference_model/faster_rcnn_r50_fpn_1x_coco/infer_cfg.yml \
|
||||
--onnx_file faster_rcnn.onnx \
|
||||
--image_file demo/000000014439.jpg
|
||||
```
|
||||
Reference in New Issue
Block a user