Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_41840029
PaddleOCR
提交
b6c0db3b
P
PaddleOCR
项目概览
weixin_41840029
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b6c0db3b
编写于
9月 14, 2022
作者:
文幕地方
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dygraph' of
https://github.com/PaddlePaddle/PaddleOCR
into kl_pact
上级
541954da
31ed44d1
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
173 addition
and
164 deletion
+173
-164
deploy/slim/quantization/export_model.py
deploy/slim/quantization/export_model.py
+10
-3
test_tipc/docs/jeston_test_train_inference_python.md
test_tipc/docs/jeston_test_train_inference_python.md
+1
-6
test_tipc/docs/mac_test_train_inference_python.md
test_tipc/docs/mac_test_train_inference_python.md
+17
-29
test_tipc/docs/test_inference_cpp.md
test_tipc/docs/test_inference_cpp.md
+10
-12
test_tipc/docs/test_paddle2onnx.md
test_tipc/docs/test_paddle2onnx.md
+8
-7
test_tipc/docs/test_ptq_inference_python.md
test_tipc/docs/test_ptq_inference_python.md
+51
-0
test_tipc/docs/test_serving.md
test_tipc/docs/test_serving.md
+12
-39
test_tipc/docs/test_train_inference_python.md
test_tipc/docs/test_train_inference_python.md
+47
-38
test_tipc/docs/win_test_train_inference_python.md
test_tipc/docs/win_test_train_inference_python.md
+17
-30
未找到文件。
deploy/slim/quantization/export_model.py
浏览文件 @
b6c0db3b
...
...
@@ -151,17 +151,24 @@ def main():
arch_config
=
config
[
"Architecture"
]
arch_config
=
config
[
"Architecture"
]
if
arch_config
[
"algorithm"
]
==
"SVTR"
and
arch_config
[
"Head"
][
"name"
]
!=
'MultiHead'
:
input_shape
=
config
[
"Eval"
][
"dataset"
][
"transforms"
][
-
2
][
'SVTRRecResizeImg'
][
'image_shape'
]
else
:
input_shape
=
None
if
arch_config
[
"algorithm"
]
in
[
"Distillation"
,
]:
# distillation model
archs
=
list
(
arch_config
[
"Models"
].
values
())
for
idx
,
name
in
enumerate
(
model
.
model_name_list
):
sub_model_save_path
=
os
.
path
.
join
(
save_path
,
name
,
"inference"
)
export_single_model
(
model
.
model_list
[
idx
],
archs
[
idx
],
sub_model_save_path
,
logger
,
quanter
)
sub_model_save_path
,
logger
,
input_shape
,
quanter
)
else
:
save_path
=
os
.
path
.
join
(
save_path
,
"inference"
)
export_single_model
(
model
,
arch_config
,
save_path
,
logger
,
quanter
)
export_single_model
(
model
,
arch_config
,
save_path
,
logger
,
input_shape
,
quanter
)
if
__name__
==
"__main__"
:
...
...
test_tipc/docs/jeston_test_train_inference_python.md
浏览文件 @
b6c0db3b
...
...
@@ -24,12 +24,7 @@ Jetson端基础训练预测功能测试的主程序为`test_inference_inference.
```
-
安装autolog(规范化日志输出工具)
```
git clone https://github.com/LDOUBLEV/AutoLog
cd AutoLog
pip install -r requirements.txt
python setup.py bdist_wheel
pip install ./dist/auto_log-1.0.0-py3-none-any.whl
cd ../
pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
```
-
安装PaddleSlim (可选)
```
...
...
test_tipc/docs/mac_test_train_inference_python.md
浏览文件 @
b6c0db3b
# Mac端基础训练预测功能测试
Mac端基础训练预测功能测试的主程序为
`test_train_inference_python.sh`
,可以测试基于Python的模型CPU训练,包括裁剪、量化、蒸馏训练,以及评估、CPU推理等基本功能。
Mac端基础训练预测功能测试的主程序为
`test_train_inference_python.sh`
,可以测试基于Python的模型CPU训练,包括裁剪、
PACT在线
量化、蒸馏训练,以及评估、CPU推理等基本功能。
注:Mac端测试用法同linux端测试方法类似,但是无需测试需要在GPU上运行的测试。
...
...
@@ -10,7 +10,7 @@ Mac端基础训练预测功能测试的主程序为`test_train_inference_python.
| 算法名称 | 模型名称 | 单机单卡(CPU) | 单机多卡 | 多机多卡 | 模型压缩(CPU) |
| :---- | :---- | :---- | :---- | :---- | :---- |
| DB | ch_ppocr_mobile_v2.0_det| 正常训练 | - | - | 正常训练:FPGM裁剪、PACT量化
<br>
离线量化(无需训练)
|
| DB | ch_ppocr_mobile_v2.0_det| 正常训练 | - | - | 正常训练:FPGM裁剪、PACT量化 |
-
预测相关:基于训练是否使用量化,可以将训练产出的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的预测功能汇总如下,
...
...
@@ -26,19 +26,14 @@ Mac端基础训练预测功能测试的主程序为`test_train_inference_python.
Mac端无GPU,环境准备只需要Python环境即可,安装PaddlePaddle等依赖参考下述文档。
### 2.1 安装依赖
-
安装PaddlePaddle >= 2.
0
-
安装PaddlePaddle >= 2.
3
-
安装PaddleOCR依赖
```
pip install -r ../requirements.txt
```
-
安装autolog(规范化日志输出工具)
```
git clone https://github.com/LDOUBLEV/AutoLog
cd AutoLog
pip install -r requirements.txt
python setup.py bdist_wheel
pip install ./dist/auto_log-1.0.0-py3-none-any.whl
cd ../
pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
```
-
安装PaddleSlim (可选)
```
...
...
@@ -49,53 +44,46 @@ Mac端无GPU,环境准备只需要Python环境即可,安装PaddlePaddle等
### 2.2 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`
python_infer_
*.log`
格式的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`
,model_name/lite_train_lite_infer/
*.log`
格式的日志文件。
`test_train_inference_python.sh`
包含
5
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
`test_train_inference_python.sh`
包含
基础链条的4
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
-
模式1:lite_train_lite_infer,使用少量数据训练,用于快速验证训练到预测的走通流程,不验证精度和速度;
```
shell
# 同linux端运行不同的是,Mac端测试使用新的配置文件mac_ppocr_det_mobile_params.txt,
# 配置文件中默认去掉了GPU和mkldnn相关的测试链条
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_lite_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_lite_infer'
```
-
模式2:lite_train_whole_infer,使用少量数据训练,一定量数据预测,用于验证训练后的模型执行预测,预测速度是否合理;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'lite_train_whole_infer'
```
-
模式3:whole_infer,不训练,全量数据预测,走通开源模型评估、动转静,检查inference model预测时间和精度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
# 用法1:
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
'1'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_infer'
'1'
```
-
模式4:whole_train_whole_infer,CE: 全量数据训练,全量数据预测,验证模型训练精度,预测精度,预测速度;(Mac端不建议运行此模式)
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_mac_cpu_normal_normal_infer_python_mac_cpu.txt
'whole_train_whole_infer'
```
-
模式5:klquant_whole_infer,测试离线量化;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_mac_cpu.txt
'klquant_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_mac_cpu.txt
'klquant_whole_infer'
```
运行相应指令后,在
`test_tipc/output`
文件夹下自动会保存运行日志。如
`lite_train_lite_infer`
模式下,会运行训练+inference的链条,因此,在
`test_tipc/output`
文件夹有以下文件:
```
test_tipc/output/
test_tipc/output/
model_name/lite_train_lite_infer/
|- results_python.log # 运行指令状态的日志
|- norm_train_gpus_-1_autocast_null/ # CPU上正常训练的训练日志和模型保存文件夹
|- pact_train_gpus_-1_autocast_null/ # CPU上量化训练的训练日志和模型保存文件夹
......
|- python_infer_cpu_usemkldnn_False_threads_1_
batchsize_1.log # CPU上关闭Mkldnn线程数设置为1,测试batch_size=1条件下的
预测运行日志
|- python_infer_cpu_usemkldnn_False_threads_1_
precision_fp32_batchsize_1.log # CPU上关闭Mkldnn线程数设置为1,测试batch_size=1条件下的fp32精度
预测运行日志
......
```
...
...
test_tipc/docs/test_inference_cpp.md
浏览文件 @
b6c0db3b
...
...
@@ -17,15 +17,15 @@ C++预测功能测试的主程序为`test_inference_cpp.sh`,可以测试基于
运行环境配置请参考
[
文档
](
./install.md
)
的内容配置TIPC的运行环境。
### 2.1 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_inference_cpp.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`cpp_infer_*.log`
后缀的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_inference_cpp.sh`
进行测试,最终在
```test_tipc/output
/{model_name}/cpp_infer
```
目录下生成
`cpp_infer_*.log`
后缀的日志文件。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
ppocr_mobile_v2.0_det
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
"cpp_infer"
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
PP-OCRv2_rec
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
"cpp_infer"
# 用法1:
bash test_tipc/test_inference_cpp.sh test_tipc/configs/ch_
ppocr_mobile_v2.0_det
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
bash test_tipc/test_inference_cpp.sh test_tipc/configs/ch_
PP-OCRv2_rec
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash test_tipc/test_inference_cpp.sh test_tipc/configs/ch_
ppocr_mobile_v2.0_det
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
'1'
bash test_tipc/test_inference_cpp.sh test_tipc/configs/ch_
PP-OCRv2_rec
/model_linux_gpu_normal_normal_infer_cpp_linux_gpu_cpu.txt
'1'
```
运行预测指令后,在
`test_tipc/output`
文件夹下自动会保存运行日志,包括以下文件:
...
...
@@ -33,23 +33,21 @@ bash test_tipc/test_inference_cpp.sh test_tipc/configs/ch_ppocr_mobile_v2.0_det/
```
shell
test_tipc/output/
|- results_cpp.log
# 运行指令状态的日志
|- cpp_infer_cpu_usemkldnn_False_threads_1_precision_fp32_batchsize_1.log
# CPU上不开启Mkldnn,线程数设置为1,测试batch_size=1条件下的预测运行日志
|- cpp_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_1.log
# CPU上不开启Mkldnn,线程数设置为6,测试batch_size=1条件下的预测运行日志
|- cpp_infer_gpu_usetrt_False_precision_fp32_batchsize_1.log
# GPU上不开启TensorRT,测试batch_size=1的fp32精度预测日志
|- cpp_infer_gpu_usetrt_True_precision_fp16_batchsize_1.log
# GPU上开启TensorRT,测试batch_size=1的fp16精度预测日志
|- cpp_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_6.log
# CPU上不开启Mkldnn,线程数设置为6,测试batch_size=6条件下的预测运行日志
|- cpp_infer_gpu_usetrt_False_precision_fp32_batchsize_6.log
# GPU上不开启TensorRT,测试batch_size=6的fp32精度预测日志
......
```
其中results_cpp.log中包含了每条指令的运行状态,如果运行成功会输出:
```
Run successfully with command - ./deploy/cpp_infer/build/ppocr det --use_gpu=False --enable_mkldnn=False --cpu_threads=6 --det_model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ --benchmar k=True > ./test_tipc/output/cpp_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_1.log 2>&1 !
Run successfully with command - ./deploy/cpp_infer/build/ppocr det --use_gpu=True --use_tensorrt=False --precision=fp32 --det_model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ --benchmark =True > ./test_tipc/output/cpp_infer_gpu_usetrt_False_precision_fp32_batchsize_1.log 2>&1 !
[33m Run successfully with command - ch_PP-OCRv2_rec - ./deploy/cpp_infer/build/ppocr --rec_char_dict_path=./ppocr/utils/ppocr_keys_v1.txt --rec_img_h=32 --use_gpu=True --use_tensorrt=False --precision=fp32 --rec_model_dir=./inference/ch_PP-OCRv2_rec_infer/ --rec_batch_num=6 --image_dir=./inference/rec_inference/ --benchmark=True --det=False --rec=True --cls=False --use_angle_cls=False > ./test_tipc/output/ch_PP-OCRv2_rec/cpp_infer/cpp_infer_gpu_usetrt_False_precision_fp32_batchsize_6.log 2>&1 ! [0m
[33m Run successfully with command - ch_PP-OCRv2_rec - ./deploy/cpp_infer/build/ppocr --rec_char_dict_path=./ppocr/utils/ppocr_keys_v1.txt --rec_img_h=32 --use_gpu=False --enable_mkldnn=False --cpu_threads=6 --rec_model_dir=./inference/ch_PP-OCRv2_rec_infer/ --rec_batch_num=6 --image_dir=./inference/rec_inference/ --benchmark=True --det=False --rec=True --cls=False --use_angle_cls=False > ./test_tipc/output/ch_PP-OCRv2_rec/cpp_infer/cpp_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_6.log 2>&1 ! [0m
......
```
如果运行失败,会输出:
```
Run failed with command -
./deploy/cpp_infer/build/ppocr det --use_gpu=True --use_tensorrt=True --precision=fp32 --det_model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ --benchmark=True > ./test_tipc/output/cpp_infer_gpu_usetrt_True_precision_fp32_batchsize_1
.log 2>&1 !
Run failed with command -
./deploy/cpp_infer/build/ppocr det --use_gpu=True --use_tensorrt=True --precision=fp16 --det_model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ --benchmark=True > ./test_tipc/output/cpp_infer_gpu_usetrt_True_precision_fp16_batchsize_1
.log 2>&1 !
Run failed with command -
ch_PP-OCRv2_rec - ./deploy/cpp_infer/build/ppocr --rec_char_dict_path=./ppocr/utils/ppocr_keys_v1.txt --rec_img_h=32 --use_gpu=True --use_tensorrt=False --precision=fp32 --rec_model_dir=./inference/ch_PP-OCRv2_rec_infer/ --rec_batch_num=6 --image_dir=./inference/rec_inference/ --benchmark=True --det=False --rec=True --cls=False --use_angle_cls=False > ./test_tipc/output/ch_PP-OCRv2_rec/cpp_infer/cpp_infer_gpu_usetrt_False_precision_fp32_batchsize_6
.log 2>&1 !
Run failed with command -
ch_PP-OCRv2_rec - ./deploy/cpp_infer/build/ppocr --rec_char_dict_path=./ppocr/utils/ppocr_keys_v1.txt --rec_img_h=32 --use_gpu=False --enable_mkldnn=False --cpu_threads=6 --rec_model_dir=./inference/ch_PP-OCRv2_rec_infer/ --rec_batch_num=6 --image_dir=./inference/rec_inference/ --benchmark=True --det=False --rec=True --cls=False --use_angle_cls=False > ./test_tipc/output/ch_PP-OCRv2_rec/cpp_infer/cpp_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_6
.log 2>&1 !
......
```
可以很方便的根据results_cpp.log中的内容判定哪一个指令运行错误。
...
...
test_tipc/docs/test_paddle2onnx.md
浏览文件 @
b6c0db3b
...
...
@@ -15,29 +15,30 @@ PaddleServing预测功能测试的主程序为`test_paddle2onnx.sh`,可以测
## 2. 测试流程
### 2.1 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_paddle2onnx.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`paddle2onnx_infer_*.log`
后缀的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_paddle2onnx.sh`
进行测试,最终在
```test_tipc/output
/{model_name}/paddle2onnx
```
目录下生成
`paddle2onnx_infer_*.log`
后缀的日志文件。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/
ppocr_det_mobile
/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt
"paddle2onnx_infer"
bash test_tipc/prepare.sh ./test_tipc/configs/
ch_PP-OCRv2_det
/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt
"paddle2onnx_infer"
# 用法:
bash test_tipc/test_paddle2onnx.sh ./test_tipc/configs/
ppocr_det_mobile
/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt
bash test_tipc/test_paddle2onnx.sh ./test_tipc/configs/
ch_PP-OCRv2_det
/model_linux_gpu_normal_normal_paddle2onnx_python_linux_cpu.txt
```
#### 运行结果
各测试的运行情况会打印在
`test_tipc/output/results_paddle2onnx.log`
中:
各测试的运行情况会打印在
`test_tipc/output/
{model_name}/paddle2onnx/
results_paddle2onnx.log`
中:
运行成功时会输出:
```
Run successfully with command - paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10 --enable_onnx_checker=True!
Run successfully with command - python test_tipc/onnx_inference/predict_det.py --use_gpu=False --image_dir=./inference/ch_det_data_50/all-sum-510/ --det_model_dir=./inference/det_mobile_onnx/model.onnx 2>&1 !
Run successfully with command - ch_PP-OCRv2_det - paddle2onnx --model_dir=./inference/ch_PP-OCRv2_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_v2_onnx/model.onnx --opset_version=10 --enable_onnx_checker=True!
Run successfully with command - ch_PP-OCRv2_det - python3.7 tools/infer/predict_det.py --use_gpu=True --image_dir=./inference/ch_det_data_50/all-sum-510/ --det_model_dir=./inference/det_v2_onnx/model.onnx --use_onnx=True > ./test_tipc/output/ch_PP-OCRv2_det/paddle2onnx/paddle2onnx_infer_gpu.log 2>&1 !
Run successfully with command - ch_PP-OCRv2_det - python3.7 tools/infer/predict_det.py --use_gpu=False --image_dir=./inference/ch_det_data_50/all-sum-510/ --det_model_dir=./inference/det_v2_onnx/model.onnx --use_onnx=True > ./test_tipc/output/ch_PP-OCRv2_det/paddle2onnx/paddle2onnx_infer_cpu.log 2>&1 !
```
运行失败时会输出:
```
Run failed with command -
paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_mobile_onnx/model.onnx --opset_version=10
--enable_onnx_checker=True!
Run failed with command -
ch_PP-OCRv2_det - paddle2onnx --model_dir=./inference/ch_PP-OCRv2_det_infer/ --model_filename=inference.pdmodel --params_filename=inference.pdiparams --save_file=./inference/det_v2_onnx/model.onnx --opset_version=10
--enable_onnx_checker=True!
...
```
...
...
test_tipc/docs/test_ptq_inference_python.md
0 → 100644
浏览文件 @
b6c0db3b
# Linux GPU/CPU KL离线量化训练推理测试
Linux GPU/CPU KL离线量化训练推理测试的主程序为
`test_ptq_inference_python.sh`
,可以测试基于Python的模型训练、评估、推理等基本功能。
## 1. 测试结论汇总
-
训练相关:
| 算法名称 | 模型名称 | 单机单卡 |
| :----: | :----: | :----: |
| | model_name | KL离线量化训练 |
-
推理相关:
| 算法名称 | 模型名称 | device_CPU | device_GPU | batchsize |
| :----: | :----: | :----: | :----: | :----: |
| | model_name | 支持 | 支持 | 1 |
## 2. 测试流程
### 2.1 准备数据和模型
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_ptq_inference_python.sh`
进行测试,最终在
```test_tipc/output/{model_name}/whole_infer```
目录下生成
`python_infer_*.log`
后缀的日志文件。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_ptq_infer_python.txt
"whole_infer"
# 用法:
bash test_tipc/test_ptq_inference_python.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_ptq_infer_python.txt
"whole_infer"
```
#### 运行结果
各测试的运行情况会打印在
`test_tipc/output/{model_name}/paddle2onnx/results_paddle2onnx.log`
中:
运行成功时会输出:
```
Run successfully with command - ch_PP-OCRv2_det_KL - python3.7 deploy/slim/quantization/quant_kl.py -c configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_cml.yml -o Global.pretrained_model=./inference/ch_PP-OCRv2_det_infer/ Global.save_inference_dir=./inference/ch_PP-OCRv2_det_infer/_klquant > ./test_tipc/output/ch_PP-OCRv2_det_KL/whole_infer/whole_infer_export_0.log 2>&1 !
Run successfully with command - ch_PP-OCRv2_det_KL - python3.7 tools/infer/predict_det.py --use_gpu=False --enable_mkldnn=False --cpu_threads=6 --det_model_dir=./inference/ch_PP-OCRv2_det_infer/_klquant --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ --precision=int8 > ./test_tipc/output/ch_PP-OCRv2_det_KL/whole_infer/python_infer_cpu_usemkldnn_False_threads_6_precision_int8_batchsize_1.log 2>&1 !
Run successfully with command - ch_PP-OCRv2_det_KL - python3.7 tools/infer/predict_det.py --use_gpu=True --use_tensorrt=False --precision=int8 --det_model_dir=./inference/ch_PP-OCRv2_det_infer/_klquant --rec_batch_num=1 --image_dir=./inference/ch_det_data_50/all-sum-510/ > ./test_tipc/output/ch_PP-OCRv2_det_KL/whole_infer/python_infer_gpu_usetrt_False_precision_int8_batchsize_1.log 2>&1 !
```
运行失败时会输出:
```
Run failed with command - ch_PP-OCRv2_det_KL - python3.7 deploy/slim/quantization/quant_kl.py -c configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_cml.yml -o Global.pretrained_model=./inference/ch_PP-OCRv2_det_infer/ Global.save_inference_dir=./inference/ch_PP-OCRv2_det_infer/_klquant > ./test_tipc/output/ch_PP-OCRv2_det_KL/whole_infer/whole_infer_export_0.log 2>&1 !
...
```
## 3. 更多教程
本文档为功能测试用,更详细的量化使用教程请参考:
[
量化
](
../../deploy/slim/quantization/README.md
)
test_tipc/docs/test_serving.md
浏览文件 @
b6c0db3b
...
...
@@ -18,71 +18,44 @@ PaddleServing预测功能测试的主程序为`test_serving_infer_python.sh`和`
### 2.1 功能测试
**python serving**
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_serving_infer_python.sh`
进行测试,最终在
```test_tipc/output
```
目录下生成
`serving_infer_python
*.log`
后缀的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_serving_infer_python.sh`
进行测试,最终在
```test_tipc/output
/{model_name}/serving_infer/python```
目录下生成
`python_
*.log`
后缀的日志文件。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
ppocr_mobile_v2.0_det
/model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt
"serving_infer"
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
PP-OCRv2
/model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt
"serving_infer"
# 用法:
bash test_tipc/test_serving_infer_python.sh ./test_tipc/configs/ch_
ppocr_mobile_v2.0_det
/model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt
"serving_infer"
bash test_tipc/test_serving_infer_python.sh ./test_tipc/configs/ch_
PP-OCRv2
/model_linux_gpu_normal_normal_serving_python_linux_gpu_cpu.txt
"serving_infer"
```
**cpp serving**
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_serving_infer_cpp.sh`
进行测试,最终在
```test_tipc/output
```
目录下生成
`serving_infer_cpp
*.log`
后缀的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_serving_infer_cpp.sh`
进行测试,最终在
```test_tipc/output
/{model_name}/serving_infer/cpp```
目录下生成
`cpp_
*.log`
后缀的日志文件。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
ppocr_mobile_v2.0/model_linux_gpu_normal_normal_serving_python
_linux_gpu_cpu.txt
"serving_infer"
bash test_tipc/prepare.sh ./test_tipc/configs/ch_
PP-OCRv2/model_linux_gpu_normal_normal_serving_cpp
_linux_gpu_cpu.txt
"serving_infer"
# 用法:
bash test_tipc/test_serving_infer_cpp.sh ./test_tipc/configs/ch_
ppocr_mobile_v2.0
/model_linux_gpu_normal_normal_serving_cpp_linux_gpu_cpu.txt
"serving_infer"
bash test_tipc/test_serving_infer_cpp.sh ./test_tipc/configs/ch_
PP-OCRv2
/model_linux_gpu_normal_normal_serving_cpp_linux_gpu_cpu.txt
"serving_infer"
```
#### 运行结果
各测试的运行情况会打印在
`test_tipc/output/
results
_serving.log`
中:
各测试的运行情况会打印在
`test_tipc/output/
{model_name}/serving_infer/python(cpp)/results_python(cpp)
_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 successfully
with command - ch_PP-OCRv2_rec - nohup python3.7 web_service_rec.py --config=config.yml --opt op.rec.concurrency="1" op.det.local_service_conf.devices= op.det.local_service_conf.use_mkldnn=False op.det.local_service_conf.thread_num=6 op.rec.local_service_conf.model_config=ppocr_rec_v2_serving > ./test_tipc/output/ch_PP-OCRv2_rec/serving_infer/python/python_server_cpu_usemkldnn_False_threads_6.log 2>&1 &
!
Run successfully with command - ch_PP-OCRv2_rec - python3.7 pipeline_http_client.py --det=False --image_dir=../../inference/rec_inference > ./test_tipc/output/ch_PP-OCRv2_rec/serving_infer/python/python_client_cpu_pipeline_http_usemkldnn_False_threads_6_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_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
Run failed with command - ch_PP-OCRv2_rec - nohup python3.7 web_service_rec.py --config=config.yml --opt op.rec.concurrency="1" op.det.local_service_conf.devices= op.det.local_service_conf.use_mkldnn=False op.det.local_service_conf.thread_num=6 op.rec.local_service_conf.model_config=ppocr_rec_v2_serving > ./test_tipc/output/ch_PP-OCRv2_rec/serving_infer/python/python_server_cpu_usemkldnn_False_threads_6.log 2>&1 &!
Run failed with command - ch_PP-OCRv2_rec - python3.7 pipeline_http_client.py --det=False --image_dir=../../inference/rec_inference > ./test_tipc/output/ch_PP-OCRv2_rec/serving_infer/python/python_client_cpu_pipeline_http_usemkldnn_False_threads_6_batchsize_1.log 2>&1 !
...
```
详细的预测结果会存在 test_tipc/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.]]]']}
```
详细的预测结果会存在 test_tipc/output/{model_name}/serving_infer/python(cpp)/ 文件夹下
## 3. 更多教程
...
...
test_tipc/docs/test_train_inference_python.md
浏览文件 @
b6c0db3b
# Linux端基础训练预测功能测试
Linux端基础训练预测功能测试的主程序为
`test_train_inference_python.sh`
,可以测试基于Python的模型训练、评估、推理等基本功能,包括
裁剪、量化、蒸馏
。
Linux端基础训练预测功能测试的主程序为
`test_train_inference_python.sh`
,可以测试基于Python的模型训练、评估、推理等基本功能,包括
PACT在线量化
。
-
Mac端基础训练预测功能测试参考
[
链接
](
./mac_test_train_inference_python.md
)
-
Windows端基础训练预测功能测试参考
[
链接
](
./win_test_train_inference_python.md
)
...
...
@@ -11,13 +11,14 @@ Linux端基础训练预测功能测试的主程序为`test_train_inference_pytho
| 算法名称 | 模型名称 | 单机单卡 | 单机多卡 | 多机多卡 | 模型压缩(单机多卡) |
| :---- | :---- | :---- | :---- | :---- | :---- |
| DB | ch_ppocr_mobile_v2
.0_det| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:FPGM裁剪、PACT量化
<br>
离线量化(无需训练)
|
| DB | ch_ppocr_server_v2
.0_det| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:FPGM裁剪、PACT量化
<br>
离线量化(无需训练)
|
| CRNN | ch_ppocr_mobile_v2
.0_rec| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:PACT量化
<br>
离线量化(无需训练)
|
| CRNN | ch_ppocr_server_v2
.0_rec| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:PACT量化
<br>
离线量化(无需训练)
|
|PP-OCR| ch_ppocr_mobile_v2
.
0| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
|PP-OCR| ch_ppocr_server_v2
.
0| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
| DB | ch_ppocr_mobile_v2
_0_det| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:FPGM裁剪、PACT量化
|
| DB | ch_ppocr_server_v2
_0_det| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:FPGM裁剪、PACT量化
|
| CRNN | ch_ppocr_mobile_v2
_0_rec| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:PACT量化
|
| CRNN | ch_ppocr_server_v2
_0_rec| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练:PACT量化
|
|PP-OCR| ch_ppocr_mobile_v2
_
0| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
|PP-OCR| ch_ppocr_server_v2
_
0| 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
|PP-OCRv2| ch_PP-OCRv2 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
|PP-OCRv3| ch_PP-OCRv3 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | 正常训练
<br>
混合精度 | - |
-
预测相关:基于训练是否使用量化,可以将训练产出的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的预测功能汇总如下,
...
...
@@ -35,19 +36,14 @@ Linux端基础训练预测功能测试的主程序为`test_train_inference_pytho
运行环境配置请参考
[
文档
](
./install.md
)
的内容配置TIPC的运行环境。
### 2.1 安装依赖
-
安装PaddlePaddle >= 2.
0
-
安装PaddlePaddle >= 2.
3
-
安装PaddleOCR依赖
```
pip3 install -r ../requirements.txt
```
-
安装autolog(规范化日志输出工具)
```
git clone https://github.com/LDOUBLEV/AutoLog
cd AutoLog
pip3 install -r requirements.txt
python3 setup.py bdist_wheel
pip3 install ./dist/auto_log-1.0.0-py3-none-any.whl
cd ../
pip3 install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
```
-
安装PaddleSlim (可选)
```
...
...
@@ -57,60 +53,57 @@ Linux端基础训练预测功能测试的主程序为`test_train_inference_pytho
### 2.2 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`python_infer_*.log`
格式的日志文件。
#### 2.2.1 基础训练推理链条
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`,model_name/lite_train_lite_infer/*.log`
格式的日志文件。
`test_train_inference_python.sh`
包含
5
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
`test_train_inference_python.sh`
包含
基础链条的4
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
-
模式1:lite_train_lite_infer,使用少量数据训练,用于快速验证训练到预测的走通流程,不验证精度和速度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'lite_train_lite_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'lite_train_lite_infer'
```
-
模式2:lite_train_whole_infer,使用少量数据训练,一定量数据预测,用于验证训练后的模型执行预测,预测速度是否合理;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ../test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'lite_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ../test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'lite_train_whole_infer'
```
-
模式3:whole_infer,不训练,全量数据预测,走通开源模型评估、动转静,检查inference model预测时间和精度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'whole_infer'
# 用法1:
bash test_tipc/test_train_inference_python.sh ../test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'whole_infer'
bash test_tipc/test_train_inference_python.sh ../test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'whole_infer'
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'whole_infer'
'1'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'whole_infer'
'1'
```
-
模式4:whole_train_whole_infer,CE: 全量数据训练,全量数据预测,验证模型训练精度,预测精度,预测速度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_infer_python.txt
'whole_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_infer_python.txt
'whole_train_whole_infer'
```
-
模式5:klquant_whole_infer,测试离线量化;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_linux_gpu_cpu.txt
'klquant_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_linux_gpu_cpu.txt
'klquant_whole_infer'
```
运行相应指令后,在
`test_tipc/output`
文件夹下自动会保存运行日志。如'lite_train_lite_infer'模式下,会运行训练+inference的链条,因此,在
`test_tipc/output`
文件夹有以下文件:
```
test_tipc/output/
test_tipc/output/
model_name/lite_train_lite_infer/
|- results_python.log # 运行指令状态的日志
|- norm_train_gpus_0_autocast_null/ # GPU 0号卡上正常训练的训练日志和模型保存文件夹
|-
pact_train_gpus_0_autocast_null/ # GPU 0号卡上量化
训练的训练日志和模型保存文件夹
|- norm_train_gpus_0_autocast_null/ # GPU 0号卡上正常
单机单卡
训练的训练日志和模型保存文件夹
|-
norm_train_gpus_0,1_autocast_null/ # GPU 0,1号卡上正常单机多卡
训练的训练日志和模型保存文件夹
......
|- python_infer_cpu_usemkldnn_
True_threads_1_batchsize_1.log # CPU上开启Mkldnn线程数设置为1,测试batch_size=1条件下的
预测运行日志
|- python_infer_gpu_usetrt_
True_precision_fp16_batchsize_1.log # GPU上开启TensorRT,测试batch_size=1的半
精度预测日志
|- python_infer_cpu_usemkldnn_
False_threads_6_precision_fp32_batchsize_1.log # CPU上关闭Mkldnn线程数设置为6,测试batch_size=1条件下的fp32精度
预测运行日志
|- python_infer_gpu_usetrt_
False_precision_fp32_batchsize_1.log # GPU上关闭TensorRT,测试batch_size=1的fp32
精度预测日志
......
```
其中
`results_python.log`
中包含了每条指令的运行状态,如果运行成功会输出:
```
Run successfully with command - python3.7 tools/train.py -c tests/configs/det_mv3_db.yml -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained Global.use_gpu=True Global.save_model_dir=./tests/output/norm_train_gpus_0_autocast_null Global.epoch_num=1 Train.loader.batch_size_per_card=2 !
Run successfully with command - python3.7 tools/export_model.py -c tests/configs/det_mv3_db.yml -o Global.pretrained_model=./tests/output/norm_train_gpus_0_autocast_null/latest Global.save_inference_dir=./tests/output/norm_train_gpus_0_autocast_null!
[33m Run successfully with command - ch_ppocr_mobile_v2_0_det - python3.7 tools/train.py -c configs/det/ch_ppocr_v2_0/ch_det_mv3_db_v2_0.yml -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained Global.use_gpu=True Global.save_model_dir=./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null Global.epoch_num=100 Train.loader.batch_size_per_card=2 ! [0m
[33m Run successfully with command - ch_ppocr_mobile_v2_0_det - python3.7 tools/export_model.py -c configs/det/ch_ppocr_v2_0/ch_det_mv3_db_v2_0.yml -o Global.checkpoints=./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null/latest Global.save_inference_dir=./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null > ./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null_nodes_1_export.log 2>&1 ! [0m
[33m Run successfully with command - ch_ppocr_mobile_v2_0_det - python3.7 tools/infer/predict_det.py --use_gpu=True --use_tensorrt=False --precision=fp32 --det_model_dir=./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null --rec_batch_num=1 --image_dir=./train_data/icdar2015/text_localization/ch4_test_images/ --benchmark=True > ./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/python_infer_gpu_usetrt_False_precision_fp32_batchsize_1.log 2>&1 ! [0m
[33m Run successfully with command - ch_ppocr_mobile_v2_0_det - python3.7 tools/infer/predict_det.py --use_gpu=False --enable_mkldnn=False --cpu_threads=6 --det_model_dir=./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/norm_train_gpus_0_autocast_null --rec_batch_num=1 --image_dir=./train_data/icdar2015/text_localization/ch4_test_images/ --benchmark=True --precision=fp32 > ./test_tipc/output/ch_ppocr_mobile_v2_0_det/lite_train_lite_infer/python_infer_cpu_usemkldnn_False_threads_6_precision_fp32_batchsize_1.log 2>&1 ! [0m
......
```
如果运行失败,会输出:
...
...
@@ -121,6 +114,22 @@ Run failed with command - python3.7 tools/export_model.py -c tests/configs/det_m
```
可以很方便的根据
`results_python.log`
中的内容判定哪一个指令运行错误。
#### 2.2.2 PACT在线量化链条
此外,
`test_train_inference_python.sh`
还包含PACT在线量化模式,命令如下:
以ch_PP-OCRv2_det为例,如需测试其他模型更换配置即可。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_pact_infer_python.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_pact_infer_python.txt
'lite_train_lite_infer'
```
#### 2.2.3 混合精度训练链条
此外,
`test_train_inference_python.sh`
还包含混合精度训练模式,命令如下:
以ch_PP-OCRv2_det为例,如需测试其他模型更换配置即可。
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_PP-OCRv2_det/train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt
'lite_train_lite_infer'
```
### 2.3 精度测试
...
...
test_tipc/docs/win_test_train_inference_python.md
浏览文件 @
b6c0db3b
...
...
@@ -8,7 +8,7 @@ Windows端基础训练预测功能测试的主程序为`test_train_inference_pyt
| 算法名称 | 模型名称 | 单机单卡 | 单机多卡 | 多机多卡 | 模型压缩(单机多卡) |
| :---- | :---- | :---- | :---- | :---- | :---- |
| DB | ch_ppocr_mobile_v2
.0_det| 正常训练
<br>
混合精度 | - | - | 正常训练:FPGM裁剪、PACT量化
<br>
离线量化(无需训练)
|
| DB | ch_ppocr_mobile_v2
_0_det| 正常训练
<br>
混合精度 | - | - | 正常训练:FPGM裁剪、PACT量化
|
-
预测相关:基于训练是否使用量化,可以将训练产出的模型可以分为
`正常模型`
和
`量化模型`
,这两类模型对应的预测功能汇总如下:
...
...
@@ -29,19 +29,14 @@ Windows端基础训练预测功能测试的主程序为`test_train_inference_pyt
### 2.1 安装依赖
-
安装PaddlePaddle >= 2.
0
-
安装PaddlePaddle >= 2.
3
-
安装PaddleOCR依赖
```
pip install -r ../requirements.txt
```
-
安装autolog(规范化日志输出工具)
```
git clone https://github.com/LDOUBLEV/AutoLog
cd AutoLog
pip install -r requirements.txt
python setup.py bdist_wheel
pip install ./dist/auto_log-1.0.0-py3-none-any.whl
cd ../
pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
```
-
安装PaddleSlim (可选)
```
...
...
@@ -51,54 +46,46 @@ Windows端基础训练预测功能测试的主程序为`test_train_inference_pyt
### 2.2 功能测试
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`
python_infer_
*.log`
格式的日志文件。
先运行
`prepare.sh`
准备数据和模型,然后运行
`test_train_inference_python.sh`
进行测试,最终在
```test_tipc/output```
目录下生成
`
,model_name/lite_train_lite_infer/
*.log`
格式的日志文件。
`test_train_inference_python.sh`
包含
5
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
`test_train_inference_python.sh`
包含
基础链条的4
种运行模式,每种模式的运行数据不同,分别用于测试速度和精度,分别是:
-
模式1:lite_train_lite_infer,使用少量数据训练,用于快速验证训练到预测的走通流程,不验证精度和速度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_lite_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_lite_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_lite_infer'
```
-
模式2:lite_train_whole_infer,使用少量数据训练,一定量数据预测,用于验证训练后的模型执行预测,预测速度是否合理;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'lite_train_whole_infer'
```
-
模式3:whole_infer,不训练,全量数据预测,走通开源模型评估、动转静,检查inference model预测时间和精度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
# 用法1:
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
# 用法2: 指定GPU卡预测,第三个传入参数为GPU卡号
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
'1'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_infer'
'1'
```
-
模式4:whole_train_whole_infer,CE: 全量数据训练,全量数据预测,验证模型训练精度,预测精度,预测速度;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
.
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_train_whole_infer'
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_train_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2
_
0_det/train_windows_gpu_normal_normal_infer_python_windows_cpu_gpu.txt
'whole_train_whole_infer'
```
-
模式5:klquant_whole_infer,测试离线量化;
```
shell
bash test_tipc/prepare.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_windows_gpu_cpu.txt
'klquant_whole_infer'
bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ch_ppocr_mobile_v2.0_det_KL/model_linux_gpu_normal_normal_infer_python_windows_gpu_cpu.txt
'klquant_whole_infer'
```
运行相应指令后,在
`test_tipc/output`
文件夹下自动会保存运行日志。如'lite_train_lite_infer'模式下,会运行训练+inference的链条,因此,在
`test_tipc/output`
文件夹有以下文件:
```
test_tipc/output/
test_tipc/output/
model_name/lite_train_lite_infer/
|- results_python.log # 运行指令状态的日志
|- norm_train_gpus_0_autocast_null/ # GPU 0号卡上正常训练的训练日志和模型保存文件夹
|- pact_train_gpus_0_autocast_null/ # GPU 0号卡上量化训练的训练日志和模型保存文件夹
......
|- python_infer_cpu_usemkldnn_
True_threads_1_batchsize_1.log # CPU上开启Mkldnn线程数设置为1,测试batch_size=1条件下的
预测运行日志
|- python_infer_gpu_usetrt_
True_precision_fp16_batchsize_1.log # GPU上开启TensorRT,测试batch_size=1的半
精度预测日志
|- python_infer_cpu_usemkldnn_
False_threads_6_precision_fp32_batchsize_1.log # CPU上关闭Mkldnn线程数设置为6,测试batch_size=1条件下的fp32精度
预测运行日志
|- python_infer_gpu_usetrt_
False_precision_fp32_batchsize_1.log # GPU上关闭TensorRT,测试batch_size=1的fp32
精度预测日志
......
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录