1 Star 0 Fork 253

strongerfly / PaddleDetection

forked from PaddlePaddle / PaddleDetection 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
EXPORT_MODEL.md 2.74 KB
一键复制 编辑 原始数据 按行查看 历史
yzl19940819 提交于 2021-05-20 13:41 . update doc, test=document_fix (#3049)

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、使用示例

使用训练得到的模型进行试用,脚本如下

# 导出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可以修改保存模型中的输入图片大小。示例如下:

# 导出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]
Python
1
https://gitee.com/strongerfly/PaddleDetection.git
git@gitee.com:strongerfly/PaddleDetection.git
strongerfly
PaddleDetection
PaddleDetection
release/2.3

搜索帮助