Files
fcb_photo_review/paddle_detection/deploy/EXPORT_MODEL.md
2024-08-27 14:42:45 +08:00

55 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PaddleDetection模型导出教程
## 一、模型导出
本章节介绍如何使用`tools/export_model.py`脚本导出模型。
### 1、导出模输入输出说明
- 输入变量以及输入形状如下:
| 输入名称 | 输入形状 | 表示含义 |
| :---------: | ----------- | ---------- |
| image | [None, 3, H, W] | 输入网络的图像None表示batch维度如果输入图像大小为变长则H,W为None |
| im_shape | [None, 2] | 图像经过resize后的大小表示为H,W, None表示batch维度 |
| scale_factor | [None, 2] | 输入图像大小比真实图像大小表示为scale_y, scale_x |
**注意**具体预处理方式可参考配置文件中TestReader部分。
- PaddleDetection中动转静导出模型输出统一为
- bbox, NMS的输出形状为[N, 6], 其中N为预测框的个数6为[class_id, score, x1, y1, x2, y2]。
- bbox\_num, 每张图片对应预测框的个数例如batch_size为2输出为[N1, N2], 表示第一张图包含N1个预测框第二张图包含N2个预测框并且预测框的总个数和NMS输出的第一维N相同
- mask如果网络中包含mask则会输出mask分支
**注意**模型动转静导出不支持模型结构中包含numpy相关操作的情况。
### 2、启动参数说明
| FLAG | 用途 | 默认值 | 备注 |
|:--------------:|:--------------:|:------------:|:-----------------------------------------:|
| -c | 指定配置文件 | None | |
| --output_dir | 模型保存路径 | `./output_inference` | 模型默认保存在`output/配置文件名/`路径下 |
### 3、使用示例
使用训练得到的模型进行试用,脚本如下
```bash
# 导出YOLOv3模型
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model \
-o weights=weights/yolov3_darknet53_270e_coco.pdparams
```
预测模型会导出到`inference_model/yolov3_darknet53_270e_coco`目录下,分别为`infer_cfg.yml`, `model.pdiparams`, `model.pdiparams.info`, `model.pdmodel`
### 4、设置导出模型的输入大小
使用Fluid-TensorRT进行预测时由于<=TensorRT 5.1的版本仅支持定长输入,保存模型的`data`层的图片大小需要和实际输入图片大小一致。而Fluid C++预测引擎没有此限制。设置TestReader中的`image_shape`可以修改保存模型中的输入图片大小。示例如下:
```bash
# 导出YOLOv3模型输入是3x640x640
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model \
-o weights=weights/yolov3_darknet53_270e_coco.pdparams TestReader.inputs_def.image_shape=[3,640,640]
```