Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
960de9db
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
960de9db
编写于
2月 19, 2020
作者:
W
wangguanzhong
提交者:
GitHub
2月 19, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add padstride in cpp_infer and refine doc (#241)
* add padstride in cpp_infer and refine doc * refine doc for export_model
上级
3db9da4c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
36 addition
and
0 deletion
+36
-0
docs/advanced_tutorials/inference/EXPORT_MODEL.md
docs/advanced_tutorials/inference/EXPORT_MODEL.md
+15
-0
docs/advanced_tutorials/inference/INFERENCE.md
docs/advanced_tutorials/inference/INFERENCE.md
+1
-0
tools/cpp_demo.yml
tools/cpp_demo.yml
+2
-0
tools/cpp_infer.py
tools/cpp_infer.py
+18
-0
未找到文件。
docs/advanced_tutorials/inference/EXPORT_MODEL.md
浏览文件 @
960de9db
...
...
@@ -2,6 +2,21 @@
训练得到一个满足要求的模型后,如果想要将该模型接入到C++预测库或者Serving服务,需要通过
`tools/export_model.py`
导出该模型。
**说明:**
-
导出模型输入为网络输入图像,即原始图片经过预处理后的图像,具体预处理方式可参考配置文件中TestReader部分。各类检测模型的输入格式分别为:
| 模型系列名称 | 输入图像预处理方式 | 其他输入信息 |
| :---------: | ----------- | ---------- |
| YOLO | 缩放至指定大小,归一化 | im
\_
size: 格式为[origin
\_
H, origin
\_
W], origin为原始图像 |
| SSD | 缩放至指定大小,归一化 | im
\_
shape: 格式为[origin
\_
H, origin
\_
W], origin为原始图像 |
| RCNN | 归一化,等比例缩放 | 1. im
\_
info: 格式为[input
\_
H, input
\_
W, scale],input为输入图像,scale为
```输入图像大小/原始图像大小```
<br>
2. im
\_
shape:格式为[origin
\_
H, origin
\_
W, 1.], origin为原始图像 |
| RCNN+FPN | 归一化,等比例缩放,对图像填充0使得长宽均为32的倍数 | 1. im
\_
info: 格式为[input
\_
H, input
\_
W, scale],input为输入图像,scale为
```输入图像大小/原始图像大小```
<br>
2. im
\_
shape:格式为[origin
\_
H, origin
\_
W, 1.], origin为原始图像 |
| RetinaNet | 归一化,等比例缩放,对图像填充0使得长宽均为128的倍数 | 1. im
\_
info: 格式为[input
\_
H, input
\_
W, scale],input为输入图像,scale为
```输入图像大小/原始图像大小```
<br>
2. im
\_
shape:格式为[origin
\_
H, origin
\_
W, 1.], origin为原始图像 |
-
导出模型输出统一为NMS的输出,形状为[N, 6], 其中N为预测框的个数,6为[class_id, score, x1, y1, x2, y2].
## 启动参数说明
| FLAG | 用途 | 默认值 | 备注 |
...
...
docs/advanced_tutorials/inference/INFERENCE.md
浏览文件 @
960de9db
...
...
@@ -25,6 +25,7 @@ python tools/cpp_infer.py --model_path=inference_model/faster_rcnn_r50_1x/ --con
1.
设置shape时必须保持与模型导出时shape大小一致;
2.
`min_subgraph_size`
的设置与模型arch相关,对部分arch需要调大该参数,一般设置为40适用于所有模型。适当的调小
`min_subgraph_size`
会对预测有加速效果,例如YOLO中该参数可设置为3。
3.
预处理中
`PadStride`
为输入图片右下角填充0,默认设置stride为0,即不对输入图片做padding操作。模型中包含FPN结构时,stride应设置为32。模型为RetinaNet系列模型时,stride应设置为128.
## Paddle环境搭建
需要基于develop分支编译TensorRT版本Paddle, 在编译命令中指定TensorRT路径:
...
...
tools/cpp_demo.yml
浏览文件 @
960de9db
...
...
@@ -25,3 +25,5 @@ Preprocess:
is_scale
:
True
-
type
:
Permute
to_bgr
:
False
-
type
:
PadStride
stride
:
0
# set 32 on FPN and 128 on RetinaNet
tools/cpp_infer.py
浏览文件 @
960de9db
...
...
@@ -169,6 +169,24 @@ class Permute(object):
return
im
class
PadStride
(
object
):
def
__init__
(
self
,
stride
=
0
):
assert
stride
>=
0
,
"Unsupported stride: {}, the stride in PadStride must be greater or equal to 0"
.
format
(
stride
)
self
.
coarsest_stride
=
stride
def
__call__
(
self
,
im
):
coarsest_stride
=
self
.
coarsest_stride
if
coarsest_stride
==
0
:
return
im
im_c
,
im_h
,
im_w
=
im
.
shape
pad_h
=
int
(
np
.
ceil
(
float
(
im_h
)
/
coarsest_stride
)
*
coarsest_stride
)
pad_w
=
int
(
np
.
ceil
(
float
(
im_w
)
/
coarsest_stride
)
*
coarsest_stride
)
padding_im
=
np
.
zeros
((
im_c
,
pad_h
,
pad_w
),
dtype
=
np
.
float32
)
padding_im
[:,
:
im_h
,
:
im_w
]
=
im
return
padding_im
def
Preprocess
(
img_path
,
arch
,
config
):
img
=
DecodeImage
(
img_path
)
orig_shape
=
img
.
shape
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录