readme.md 5.51 KB
Newer Older
LDOUBLEV's avatar
LDOUBLEV committed
1

MissPenguin's avatar
MissPenguin committed
2
# 推理部署导航
LDOUBLEV's avatar
LDOUBLEV committed
3

MissPenguin's avatar
MissPenguin committed
4
飞桨除了基本的模型训练和预测,还提供了支持多端多平台的高性能推理部署工具。本文档提供了PaddleOCR中所有模型的推理部署导航,方便用户查阅每种模型的推理部署打通情况,并可以进行一键测试。
LDOUBLEV's avatar
LDOUBLEV committed
5

MissPenguin's avatar
MissPenguin committed
6
<div align="center">
MissPenguin's avatar
MissPenguin committed
7
    <img src="docs/guide.png" width="1000">
MissPenguin's avatar
MissPenguin committed
8
</div>
LDOUBLEV's avatar
LDOUBLEV committed
9

MissPenguin's avatar
MissPenguin committed
10
打通情况汇总如下,已填写的部分表示可以使用本工具进行一键测试,未填写的表示正在支持中。
LDOUBLEV's avatar
LDOUBLEV committed
11

MissPenguin's avatar
MissPenguin committed
12
| 算法论文 | 模型名称 | 模型类型 | python训练预测 |   其他  |
MissPenguin's avatar
MissPenguin committed
13
| :--- | :--- |  :----  | :-------- |  :----  |
MissPenguin's avatar
MissPenguin committed
14
| DB     |ch_ppocr_mobile_v2.0_det_infer | 检测  | 支持 | C++预测 <br> Paddle Serving: Python, C++  <br> Paddle-Lite: Python, C++ / ARM CPU |
MissPenguin's avatar
MissPenguin committed
15
16
17
18
19
| DB     |ch_ppocr_server_v2.0_det_infer | 检测  | 支持 | C++预测 / Paddle Serving / Paddle-Lite |
| DB     |ch_PP-OCRv2_det_infer          | 检测  |
| CRNN   |ch_ppocr_mobile_v2.0_rec_infer | 识别  | 支持 | C++预测 / Paddle Serving / Paddle-Lite |
| CRNN   |ch_ppocr_server_v2.0_rec_infer | 识别  | 支持 | C++预测 / Paddle Serving / Paddle-Lite |
| CRNN   |ch_PP-OCRv2_rec_infer          | 识别  |
MissPenguin's avatar
MissPenguin committed
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| DB     |det_mv3_db_v2.0                | 检测  |
| DB     |det_r50_vd_db_v2.0             | 检测  |
| EAST   |det_mv3_east_v2.0              | 检测  |
| EAST   |det_r50_vd_east_v2.0           | 检测  |
| PSENet |det_mv3_pse_v2.0               | 检测  |
| PSENet |det_r50_vd_pse_v2.0            | 检测  |
| SAST   |det_r50_vd_sast_totaltext_v2.0 | 检测  |
| Rosetta|rec_mv3_none_none_ctc_v2.0     | 识别  |
| Rosetta|rec_r34_vd_none_none_ctc_v2.0  | 识别  |
| CRNN   |rec_mv3_none_bilstm_ctc_v2.0   | 识别  |
| CRNN   |rec_r34_vd_none_bilstm_ctc_v2.0| 识别  |
| StarNet|rec_mv3_tps_bilstm_ctc_v2.0    | 识别  |
| StarNet|rec_r34_vd_tps_bilstm_ctc_v2.0 | 识别  |
| RARE   |rec_mv3_tps_bilstm_att_v2.0    | 识别  |
| RARE   |rec_r34_vd_tps_bilstm_att_v2.0 | 识别  |
| SRN    |rec_r50fpn_vd_none_srn         | 识别  |
| NRTR   |rec_mtb_nrtr                   | 识别  |
| SAR    |rec_r31_sar                    | 识别  |
| PGNet  |rec_r34_vd_none_none_ctc_v2.0  | 端到端|
MissPenguin's avatar
MissPenguin committed
39
40


MissPenguin's avatar
MissPenguin committed
41
42
43

## 一键测试工具使用
### 目录介绍
LDOUBLEV's avatar
LDOUBLEV committed
44

MissPenguin's avatar
MissPenguin committed
45
```shell
MissPenguin's avatar
MissPenguin committed
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
tests/
├── configs/  # 配置文件目录
	├── det_mv3_db.yml               # 测试mobile版ppocr检测模型训练的yml文件
	├── det_r50_vd_db.yml            # 测试server版ppocr检测模型训练的yml文件
	├── rec_icdar15_r34_train.yml    # 测试server版ppocr识别模型训练的yml文件
	├── ppocr_sys_mobile_params.txt     # 测试mobile版ppocr检测+识别模型串联的参数配置文件
	├── ppocr_det_mobile_params.txt     # 测试mobile版ppocr检测模型的参数配置文件
	├── ppocr_rec_mobile_params.txt     # 测试mobile版ppocr识别模型的参数配置文件
	├── ppocr_sys_server_params.txt     # 测试server版ppocr检测+识别模型串联的参数配置文件
	├── ppocr_det_server_params.txt     # 测试server版ppocr检测模型的参数配置文件
	├── ppocr_rec_server_params.txt     # 测试server版ppocr识别模型的参数配置文件
	├── ...                                
├── results/   # 预先保存的预测结果,用于和实际预测结果进行精读比对
	├── ppocr_det_mobile_results_fp32.txt           # 预存的mobile版ppocr检测模型fp32精度的结果
	├── ppocr_det_mobile_results_fp16.txt           # 预存的mobile版ppocr检测模型fp16精度的结果
	├── ppocr_det_mobile_results_fp32_cpp.txt       # 预存的mobile版ppocr检测模型c++预测的fp32精度的结果
	├── ppocr_det_mobile_results_fp16_cpp.txt       # 预存的mobile版ppocr检测模型c++预测的fp16精度的结果
	├── ...
├── prepare.sh                # 完成test_*.sh运行所需要的数据和模型下载
├── test_python.sh            # 测试python训练预测的主程序
├── test_cpp.sh               # 测试c++预测的主程序
├── test_serving.sh           # 测试serving部署预测的主程序
├── test_lite.sh              # 测试lite部署预测的主程序
├── compare_results.py        # 用于对比log中的预测结果与results中的预存结果精度误差是否在限定范围内
└── readme.md                 # 使用文档
```
LDOUBLEV's avatar
LDOUBLEV committed
72

MissPenguin's avatar
MissPenguin committed
73
### 测试流程
MissPenguin's avatar
MissPenguin committed
74
75
76
77
使用本工具,可以测试不同功能的支持情况,以及预测结果是否对齐,测试流程如下:
<div align="center">
    <img src="docs/test.png" width="800">
</div>
MissPenguin's avatar
MissPenguin committed
78

MissPenguin's avatar
MissPenguin committed
79
80
81
1. 运行prepare.sh准备测试所需数据和模型;
2. 运行要测试的功能对应的测试脚本`test_*.sh`,产出log,由log可以看到不同配置是否运行成功;
3. 【可选】用`compare_results.py`对比log中的预测结果和预存在results目录下的结果,判断预测精度是否符合预期(在误差范围内)。
DanielYang's avatar
DanielYang committed
82

MissPenguin's avatar
MissPenguin committed
83
84
85
86
87
其中,有4个测试主程序,功能如下:
- `test_python.sh`:测试基于Python的模型训练、评估、推理等基本功能,包括裁剪、量化、蒸馏。
- `test_cpp.sh`:测试基于C++的模型推理。
- `test_serving.sh`:测试基于Paddle Serving的服务化部署功能。
- `test_lite.sh`:测试基于Paddle-Lite的端侧预测部署功能。
DanielYang's avatar
DanielYang committed
88

MissPenguin's avatar
MissPenguin committed
89
90
91
92
93
各功能测试中涉及GPU/CPU、mkldnn、Tensorrt等多种参数配置,点击相应链接了解更多细节和使用教程:  
[test_python使用](docs/test_python.md)  
[test_cpp使用](docs/test_cpp.md)  
[test_serving使用](docs/test_serving.md)  
[test_lite使用](docs/test_lite.md)