Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
edabe3e8
P
PaddleOCR
项目概览
PaddlePaddle
/
PaddleOCR
大约 1 年 前同步成功
通知
1528
Star
32962
Fork
6643
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
108
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
108
Issue
108
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
edabe3e8
编写于
10月 22, 2021
作者:
M
MissPenguin
提交者:
GitHub
10月 22, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4410 from tink2123/PTDN_serving
add PTDN serving doc
上级
b088085f
d14e432f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
106 addition
and
28 deletion
+106
-28
PTDN/docs/test_inference_cpp.md
PTDN/docs/test_inference_cpp.md
+9
-9
PTDN/docs/test_serving.md
PTDN/docs/test_serving.md
+78
-0
PTDN/docs/test_train_inference_python.md
PTDN/docs/test_train_inference_python.md
+16
-16
PTDN/test_serving.sh
PTDN/test_serving.sh
+3
-3
未找到文件。
PTDN/docs/test_inference_cpp.md
浏览文件 @
edabe3e8
...
...
@@ -6,7 +6,7 @@ C++预测功能测试的主程序为`test_inference_cpp.sh`,可以测试基于
基于训练是否使用量化,进行本测试的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的C++预测功能汇总如下:
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| ---- | ---- | ---- | :----: | :----: | :----: |
| 正常模型 | GPU | 1/6 | fp32/fp16 | - | - |
| 正常模型 | CPU | 1/6 | - | fp32 | 支持 |
...
...
@@ -15,17 +15,17 @@ C++预测功能测试的主程序为`test_inference_cpp.sh`,可以测试基于
## 2. 测试流程
### 2.1 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_inference_cpp.sh`
进行测试,最终在
```
tests
/output```
目录下生成
`cpp_infer_*.log`
后缀的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_inference_cpp.sh`
进行测试,最终在
```
PTDN
/output```
目录下生成
`cpp_infer_*.log`
后缀的日志文件。
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
"cpp_infer"
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
"cpp_infer"
# 用法1:
bash
tests/test_inference_cpp.sh ./tests
/configs/ppocr_det_mobile_params.txt
bash
PTDN/test_inference_cpp.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash
tests/test_inference_cpp.sh ./tests
/configs/ppocr_det_mobile_params.txt
'1'
bash
PTDN/test_inference_cpp.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'1'
```
### 2.2 精度测试
...
...
@@ -37,12 +37,12 @@ bash tests/test_inference_cpp.sh ./tests/configs/ppocr_det_mobile_params.txt '1'
#### 使用方式
运行命令:
```
shell
python3.7
tests/compare_results.py
--gt_file
=
./tests/results/cpp_
*
.txt
--log_file
=
./tests
/output/cpp_
*
.log
--atol
=
1e-3
--rtol
=
1e-3
python3.7
PTDN/compare_results.py
--gt_file
=
./PTDN/results/cpp_
*
.txt
--log_file
=
./PTDN
/output/cpp_
*
.log
--atol
=
1e-3
--rtol
=
1e-3
```
参数介绍:
-
gt_file: 指向事先保存好的预测结果路径,支持
*.txt 结尾,会自动索引*
.txt格式的文件,文件默认保存在
tests
/result/ 文件夹下
-
log_file: 指向运行
tests/test.sh 脚本的infer模式保存的预测日志,预测日志中打印的有预测结果,比如:文本框,预测文本,类别等等,同样支持
infer_
*
.log格式传入
-
gt_file: 指向事先保存好的预测结果路径,支持
*.txt 结尾,会自动索引*
.txt格式的文件,文件默认保存在
PTDN
/result/ 文件夹下
-
log_file: 指向运行
PTDN/test_inference_cpp.sh 脚本的infer模式保存的预测日志,预测日志中打印的有预测结果,比如:文本框,预测文本,类别等等,同样支持cpp_
infer_
*
.log格式传入
-
atol: 设置的绝对误差
-
rtol: 设置的相对误差
...
...
PTDN/docs/test_serving.md
0 → 100644
浏览文件 @
edabe3e8
# PaddleServing预测功能测试
PaddleServing预测功能测试的主程序为
`test_serving.sh`
,可以测试基于PaddleServing的部署功能。
## 1. 测试结论汇总
基于训练是否使用量化,进行本测试的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的C++预测功能汇总如下:
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| ---- | ---- | ---- | :----: | :----: | :----: |
| 正常模型 | GPU | 1/6 | fp32/fp16 | - | - |
| 正常模型 | CPU | 1/6 | - | fp32 | 支持 |
| 量化模型 | GPU | 1/6 | int8 | - | - |
| 量化模型 | CPU | 1/6 | - | int8 | 支持 |
## 2. 测试流程
### 2.1 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_serving.sh`
进行测试,最终在
```PTDN/output```
目录下生成
`serving_infer_*.log`
后缀的日志文件。
```
shell
bash PTDN/prepare.sh ./PTDN/configs/ppocr_det_mobile_params.txt
"serving_infer"
# 用法:
bash PTND/test_serving.sh ./PTDN/configs/ppocr_det_mobile_params.txt
```
#### 运行结果
各测试的运行情况会打印在
`PTDN/output/results_serving.log`
中:
运行成功时会输出:
```
Run successfully with command - python3.7 pipeline_http_client.py --image_dir=../../doc/imgs > ../../tests/output/server_infer_cpu_usemkldnn_True_threads_1_batchsize_1.log 2>&1 !
Run successfully with command - xxxxx
...
```
运行失败时会输出:
```
Run failed with command - python3.7 pipeline_http_client.py --image_dir=../../doc/imgs > ../../tests/output/server_infer_cpu_usemkldnn_True_threads_1_batchsize_1.log 2>&1 !
Run failed with command - python3.7 pipeline_http_client.py --image_dir=../../doc/imgs > ../../tests/output/server_infer_cpu_usemkldnn_True_threads_6_batchsize_1.log 2>&1 !
Run failed with command - xxxxx
...
```
详细的预测结果会存在 PTDN/output/ 文件夹下,例如
`server_infer_gpu_usetrt_True_precision_fp16_batchsize_1.log`
中会返回检测框的坐标:
```
{'err_no': 0, 'err_msg': '', 'key': ['dt_boxes'], 'value': ['[[[ 78. 642.]\n [409. 640.]\n [409. 657.]\n
[ 78. 659.]]\n\n [[ 75. 614.]\n [211. 614.]\n [211. 635.]\n [ 75. 635.]]\n\n
[[103. 554.]\n [135. 554.]\n [135. 575.]\n [103. 575.]]\n\n [[ 75. 531.]\n
[347. 531.]\n [347. 549.]\n [ 75. 549.] ]\n\n [[ 76. 503.]\n [309. 498.]\n
[309. 521.]\n [ 76. 526.]]\n\n [[163. 462.]\n [317. 462.]\n [317. 493.]\n
[163. 493.]]\n\n [[324. 431.]\n [414. 431.]\n [414. 452.]\n [324. 452.]]\n\n
[[ 76. 412.]\n [208. 408.]\n [209. 424.]\n [ 76. 428.]]\n\n [[307. 409.]\n
[428. 409.]\n [428. 426.]\n [307 . 426.]]\n\n [[ 74. 385.]\n [217. 382.]\n
[217. 400.]\n [ 74. 403.]]\n\n [[308. 381.]\n [427. 380.]\n [427. 400.]\n
[308. 401.]]\n\n [[ 74. 363.]\n [195. 362.]\n [195. 378.]\n [ 74. 379.]]\n\n
[[303. 359.]\n [423. 357.]\n [423. 375.]\n [303. 377.]]\n\n [[ 70. 336.]\n
[239. 334.]\n [239. 354.]\ n [ 70. 356.]]\n\n [[ 70. 312.]\n [204. 310.]\n
[204. 327.]\n [ 70. 330.]]\n\n [[303. 308.]\n [419. 306.]\n [419. 326.]\n
[303. 328.]]\n\n [[113. 2 72.]\n [246. 270.]\n [247. 299.]\n [113. 301.]]\n\n
[[361. 269.]\n [384. 269.]\n [384. 296.]\n [361. 296.]]\n\n [[ 70. 250.]\n
[243. 246.]\n [243. 265.]\n [ 70. 269.]]\n\n [[ 65. 221.]\n [187. 220.]\n
[187. 240.]\n [ 65. 241.]]\n\n [[337. 216.]\n [382. 216.]\n [382. 240.]\n
[337. 240.]]\n\n [ [ 65. 196.]\n [247. 193.]\n [247. 213.]\n [ 65. 216.]]\n\n
[[296. 197.]\n [423. 191.]\n [424. 209.]\n [296. 215.]]\n\n [[ 65. 167.]\n [244. 167.]\n
[244. 186.]\n [ 65. 186.]]\n\n [[ 67. 139.]\n [290. 139.]\n [290. 159.]\n [ 67. 159.]]\n\n
[[ 68. 113.]\n [410. 113.]\n [410. 128.]\n [ 68. 129.] ]\n\n [[277. 87.]\n [416. 87.]\n
[416. 108.]\n [277. 108.]]\n\n [[ 79. 28.]\n [132. 28.]\n [132. 62.]\n [ 79. 62.]]\n\n
[[163. 17.]\n [410. 14.]\n [410. 50.]\n [163. 53.]]]']}
```
## 3. 更多教程
本文档为功能测试用,更详细的Serving预测使用教程请参考:
[
PPOCR 服务化部署
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/deploy/pdserving/README_CN.md
)
PTDN/docs/test_train_inference_python.md
浏览文件 @
edabe3e8
...
...
@@ -19,7 +19,7 @@
-
预测相关:基于训练是否使用量化,可以将训练产出的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的预测功能汇总如下,
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| 模型类型 |device | batchsize | tensorrt | mkldnn | cpu多线程 |
| ---- | ---- | ---- | :----: | :----: | :----: |
| 正常模型 | GPU | 1/6 | fp32/fp16 | - | - |
| 正常模型 | CPU | 1/6 | - | fp32 | 支持 |
...
...
@@ -46,42 +46,42 @@
### 2.2 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```
tests
/output```
目录下生成
`python_infer_*.log`
格式的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```
PTDN
/output```
目录下生成
`python_infer_*.log`
格式的日志文件。
`test_train_inference_python.sh`
包含5种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
-
模式1:lite_train_infer,使用少量数据训练,用于快速验证训练到预测的走通流程,不验证精度和速度;
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
'lite_train_infer'
bash
tests/test_train_inference_python.sh ./tests
/configs/ppocr_det_mobile_params.txt
'lite_train_infer'
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'lite_train_infer'
bash
PTDN/test_train_inference_python.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'lite_train_infer'
```
-
模式2:whole_infer,使用少量数据训练,一定量数据预测,用于验证训练后的模型执行预测,预测速度是否合理;
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
'whole_infer'
bash
tests/test_train_inference_python.sh ./tests
/configs/ppocr_det_mobile_params.txt
'whole_infer'
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'whole_infer'
bash
PTDN/test_train_inference_python.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'whole_infer'
```
-
模式3:infer,不训练,全量数据预测,走通开源模型评估、动转静,检查inference model预测时间和精度;
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
'infer'
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'infer'
# 用法1:
bash
tests/test_train_inference_python.sh ./tests
/configs/ppocr_det_mobile_params.txt
'infer'
bash
PTDN/test_train_inference_python.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'infer'
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash
tests/test_train_inference_python.sh ./tests
/configs/ppocr_det_mobile_params.txt
'infer'
'1'
bash
PTDN/test_train_inference_python.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'infer'
'1'
```
-
模式4:whole_train_infer,CE: 全量数据训练,全量数据预测,验证模型训练精度,预测精度,预测速度;
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
'whole_train_infer'
bash
tests/test_train_inference_python.sh ./tests
/configs/ppocr_det_mobile_params.txt
'whole_train_infer'
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'whole_train_infer'
bash
PTDN/test_train_inference_python.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'whole_train_infer'
```
-
模式5:klquant_infer,测试离线量化;
```
shell
bash
tests/prepare.sh ./tests
/configs/ppocr_det_mobile_params.txt
'klquant_infer'
bash
tests/test_train_inference_python.sh tests
/configs/ppocr_det_mobile_params.txt
'klquant_infer'
bash
PTDN/prepare.sh ./PTDN
/configs/ppocr_det_mobile_params.txt
'klquant_infer'
bash
PTDN/test_train_inference_python.sh PTDN
/configs/ppocr_det_mobile_params.txt
'klquant_infer'
```
...
...
@@ -95,12 +95,12 @@ bash tests/test_train_inference_python.sh tests/configs/ppocr_det_mobile_params.
#### 使用方式
运行命令:
```
shell
python3.7
tests/compare_results.py
--gt_file
=
./tests/results/python_
*
.txt
--log_file
=
./tests
/output/python_
*
.log
--atol
=
1e-3
--rtol
=
1e-3
python3.7
PTDN/compare_results.py
--gt_file
=
./PTDN/results/python_
*
.txt
--log_file
=
./PTDN
/output/python_
*
.log
--atol
=
1e-3
--rtol
=
1e-3
```
参数介绍:
-
gt_file: 指向事先保存好的预测结果路径,支持
*.txt 结尾,会自动索引*
.txt格式的文件,文件默认保存在
tests
/result/ 文件夹下
-
log_file: 指向运行
tests/test.sh 脚本的infer模式保存的预测日志,预测日志中打印的有预测结果,比如:文本框,预测文本,类别等等,同样支持
infer_
*
.log格式传入
-
gt_file: 指向事先保存好的预测结果路径,支持
*.txt 结尾,会自动索引*
.txt格式的文件,文件默认保存在
PTDN
/result/ 文件夹下
-
log_file: 指向运行
PTDN/test_train_inference_python.sh 脚本的infer模式保存的预测日志,预测日志中打印的有预测结果,比如:文本框,预测文本,类别等等,同样支持python_
infer_
*
.log格式传入
-
atol: 设置的绝对误差
-
rtol: 设置的相对误差
...
...
PTDN/test_serving.sh
浏览文件 @
edabe3e8
#!/bin/bash
source
tests
/common_func.sh
source
PTDN
/common_func.sh
FILENAME
=
$1
dataline
=
$(
awk
'NR==67, NR==83{print}'
$FILENAME
)
...
...
@@ -36,8 +36,8 @@ web_precision_key=$(func_parser_key "${lines[15]}")
web_precision_list
=
$(
func_parser_value
"
${
lines
[15]
}
"
)
pipeline_py
=
$(
func_parser_value
"
${
lines
[16]
}
"
)
LOG_PATH
=
"../../
tests
/output"
mkdir
-p
./
tests
/output
LOG_PATH
=
"../../
PTDN
/output"
mkdir
-p
./
PTDN
/output
status_log
=
"
${
LOG_PATH
}
/results_serving.log"
function
func_serving
(){
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录