Lite_arm_cpp预测测试文档规范.md 4.5 KB
Newer Older
C
cuicheng01 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
# 背景

基础训练文档对应Lite\_arm\_cpp预测功能测试,主程序为`test_inference_cpp.sh`, 可以在ARM上基于Lite预测库测试模型的C++推理功能。本文介绍Lite\_arm\_cpp预测功能测试文档的撰写规范。

# 文档规范

本文档和[基础训练预测文档]()大体结构类似,主要去掉了训练相关的部分,文档目录结构如下:

# 目录
- [1.测试结论汇总](#测试结论汇总)
- [2.测试流程](#测试流程)
    - [2.1 功能测试](#功能测试)
        - [2.1.1 基于ARM_CPU测试](#基于ARM_CPU测试)
        - [2.1.1 基于ARM_GPU_OPENCL测试](#基于ARM_GPU_OPENCL测试)
    - [2.2 运行结果](#运行结果)
- [3.更多教程](#更多教程)

<a name="测试结论汇总"></a>
## 1. 测试结论汇总

目前Lite端的样本间支持以方式的组合:

**字段说明:**
- 模型类型:包括正常模型(FP32)和量化模型(INT8)
- batch-size:包括1和4
- threads:包括1和4
- predictor数量:包括单predictor预测和多predictor预测
- 预测库来源:包括下载方式和编译方式
- 测试硬件:ARM\_CPU/ARM\_GPU_OPENCL

| 模型类型 | batch-size | threads | predictor数量 | 预测库来源 | 测试硬件 |
|  :----:   |  :----:  | :----:  |  :----:  |  :----:  |  :----:  |
| 正常模型/量化模型 | 1 | 1/4 |  单/多 | 下载方式 | ARM\_CPU/ARM\_GPU_OPENCL |

<a name="测试流程"></a>
## 2. 测试流程
运行环境配置请参考[文档](./install.md)的内容配置TIPC的运行环境。

<a name="功能测试"></a>
### 2.1 功能测试

先运行`prepare_lite_cpp.sh`,运行后会在当前路径下生成`test_lite.tar`,其中包含了测试数据、测试模型和用于预测的可执行文件。将`test_lite.tar`上传到被测试的手机上,在手机的终端解压该文件,进入`test_lite`目录中,然后运行`test_lite_arm_cpp.sh`进行测试,最终在`test_lite/output`目录下生成`lite_*.log`后缀的日志文件。

<a name="基于ARM_CPU测试"></a>
#### 2.1.1 基于ARM\_CPU测试

```shell

# 数据和模型准备
bash test_tipc/prepare_lite_cpp.sh ./test_tipc/configs/ppocr_det_mobile/model_linux_gpu_normal_normal_lite_cpp_arm_cpu.txt

# 手机端测试:
bash test_lite_arm_cpp.sh model_linux_gpu_normal_normal_lite_cpp_arm_cpu.txt

```  

<a name="基于ARM_GPU_OPENCL测试"></a>
#### 2.1.2 基于ARM\_GPU\_OPENCL测试

```shell

# 数据和模型准备
bash test_tipc/prepare_lite_cpp.sh ./test_tipc/configs/ppocr_det_mobile/model_linux_gpu_normal_normal_lite_cpp_arm_gpu_opencl.txt

# 手机端测试:
bash test_lite_arm_cpp.sh model_linux_gpu_normal_normal_lite_cpp_arm_gpu_opencl.txt

```  


**注意**

1.由于运行该项目需要bash等命令,传统的adb方式不能很好的安装。所以此处推荐通在手机上开启虚拟终端的方式连接电脑,连接方式可以参考[安卓手机通过termux连接电脑](.https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/test_tipc/docs/termux_for_android.md)

2.如果测试文本检测和识别完整的pipeline,在执行`prepare_lite_cpp.sh`时,配置文件需替换为`test_tipc/configs/ppocr_system_mobile/model_linux_gpu_normal_normal_lite_cpp_arm_cpu.txt`。在手机端测试阶段,配置文件同样修改为该文件。

<a name="运行结果"></a>
### 2.2 运行结果

各测试的运行情况会打印在 `./output/` 中:
运行成功时会输出:

```
Run successfully with command - ./ocr_db_crnn det ch_PP-OCRv2_det_infer_opt.nb ARM_CPU FP32 1 1  ./test_data/icdar2015_lite/text_localization/ch4_test_images/ ./config.txt True > ./output/lite_ch_PP-OCRv2_det_infer_opt.nb_runtime_device_ARM_CPU_precision_FP32_batchsize_1_threads_1.log 2>&1!
Run successfully with command xxx
...
```

运行失败时会输出:

```
Run failed with command - ./ocr_db_crnn det ch_PP-OCRv2_det_infer_opt.nb ARM_CPU FP32 1 1  ./test_data/icdar2015_lite/text_localization/ch4_test_images/ ./config.txt True > ./output/lite_ch_PP-OCRv2_det_infer_opt.nb_runtime_device_ARM_CPU_precision_FP32_batchsize_1_threads_1.log 2>&1!
Run failed with command xxx
...
```

在./output/文件夹下,会存在如下日志,每一个日志都是不同配置下的log结果:

<img src="images/lite_log.png" width="1000">

在每一个log中,都会调用autolog打印如下信息:

<img src="images/lite_auto_log.png" width="1000">


<a name="更多教程"></a>
## 3. 更多教程

本文档为功能测试用,更详细的Lite端预测使用教程请参考:[Lite端部署](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/lite/readme.md)