更换文档检测模型
This commit is contained in:
110
paddle_detection/deploy/EXPORT_ONNX_MODEL_en.md
Normal file
110
paddle_detection/deploy/EXPORT_ONNX_MODEL_en.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# PaddleDetection Model Export as ONNX Format Tutorial
|
||||
|
||||
PaddleDetection Model support is saved in ONNX format and the list of current test support is as follows
|
||||
| Model | OP Version | NOTE |
|
||||
| :---- | :----- | :--- |
|
||||
| YOLOv3 | 11 | Only batch=1 inferring is supported. Model export needs fixed shape |
|
||||
| PP-YOLO | 11 | Only batch=1 inferring is supported. A MatrixNMS will be converted to an NMS with slightly different precision; Model export needs fixed shape |
|
||||
| PP-YOLOv2 | 11 | Only batch=1 inferring is supported. MatrixNMS will be converted to NMS with slightly different precision; Model export needs fixed shape |
|
||||
| PP-YOLO Tiny | 11 | Only batch=1 inferring is supported. Model export needs fixed shape |
|
||||
| PP-YOLOE | 11 | Only batch=1 inferring is supported. Model export needs fixed shape |
|
||||
| PP-PicoDet | 11 | Only batch=1 inferring is supported. Model export needs fixed shape |
|
||||
| FCOS | 11 |Only batch=1 inferring is supported |
|
||||
| PAFNet | 11 |- |
|
||||
| TTFNet | 11 |-|
|
||||
| SSD | 11 |Only batch=1 inferring is supported |
|
||||
| PP-TinyPose | 11 | - |
|
||||
| Faster RCNN | 16 | Only batch=1 inferring is supported, require paddle2onnx>=0.9.7|
|
||||
| Mask RCNN | 16 | Only batch=1 inferring is supported, require paddle2onnx>=0.9.7|
|
||||
| Cascade RCNN | 16 | Only batch=1 inferring is supported, require paddle2onnx>=0.9.7|
|
||||
| Cascade Mask RCNN | 16 | Only batch=1 inferring is supported, require paddle2onnx>=0.9.7|
|
||||
|
||||
|
||||
The function of saving ONNX is provided by [Paddle2ONNX](https://github.com/PaddlePaddle/Paddle2ONNX). If there is feedback on related problems during conversion, Communicate with engineers in Paddle2ONNX's Github project via [ISSUE](https://github.com/PaddlePaddle/Paddle2ONNX/issues).
|
||||
|
||||
## Export Tutorial
|
||||
|
||||
### Step 1. Export the Paddle deployment model
|
||||
Export procedure reference document[Tutorial on PaddleDetection deployment model export](./EXPORT_MODEL_en.md), for example:
|
||||
|
||||
- Models except RCNN series, take YOLOv3 as example
|
||||
```
|
||||
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
|
||||
```
|
||||
The derived models were saved in `inference_model/yolov3_darknet53_270e_coco/`, with the structure as follows
|
||||
```
|
||||
yolov3_darknet
|
||||
├── infer_cfg.yml # Model configuration file information
|
||||
├── model.pdiparams # Static diagram model parameters
|
||||
├── model.pdiparams.info # Parameter Information is not required
|
||||
└── model.pdmodel # Static diagram model file
|
||||
```
|
||||
> check`TestReader.inputs_def.image_shape`, For YOLO series models, specify this parameter when exporting; otherwise, the conversion fails
|
||||
|
||||
- RCNN series models, take Faster RCNN as example
|
||||
|
||||
The conditional block needs to be removed in RCNN series when export ONNX model. Add `export_onnx=True` in command line
|
||||
```
|
||||
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
|
||||
```
|
||||
The derived models were saved in `inference_model/faster_rcnn_r50_fpn_1x_coco/`, with the structure as follows
|
||||
```
|
||||
faster_rcnn_r50_fpn_1x_coco
|
||||
├── infer_cfg.yml # Model configuration file information
|
||||
├── model.pdiparams # Static diagram model parameters
|
||||
├── model.pdiparams.info # Parameter Information is not required
|
||||
└── model.pdmodel # Static diagram model file
|
||||
```
|
||||
|
||||
### Step 2. Convert the deployment model to ONNX format
|
||||
Install Paddle2ONNX (version 0.9.7 or higher)
|
||||
```
|
||||
pip install paddle2onnx
|
||||
```
|
||||
Use the following command to convert
|
||||
```
|
||||
# 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
|
||||
```
|
||||
The transformed model is under the current path`yolov3.onnx` and `faster_rcnn.onnx`
|
||||
|
||||
### Step 3. Inference with onnxruntime
|
||||
Install onnxruntime
|
||||
```
|
||||
pip install onnxruntime
|
||||
```
|
||||
Inference code examples are in [deploy/third_engine/onnx](./third_engine/onnx)
|
||||
|
||||
Use the following commands for inference:
|
||||
```
|
||||
# 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