test_lite_arm_cpp.md 3.6 KB
Newer Older
1
# Lite\_arm\_cpp预测功能测试
C
cuicheng01 已提交
2

3
Lite\_arm\_cpp预测功能测试的主程序为`test_lite_arm_cpp.sh`,可以在ARM CPU上基于Lite预测库测试模型的C++推理功能。
C
cuicheng01 已提交
4 5 6 7 8 9 10 11 12 13 14

## 1. 测试结论汇总

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

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

17 18 19
| 模型类型 | batch-size | threads | predictor数量 | 预测库来源 | 测试硬件 |
|  :----:   |  :----:  | :----:  |  :----:  |  :----:  |  :----:  |
| 正常模型/量化模型 | 1 | 1/4 |  1/2 | 下载方式 | ARM\_CPU/ARM\_GPU_OPENCL |
C
cuicheng01 已提交
20 21 22 23 24 25 26


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

### 2.1 功能测试

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

#### 2.1.1 测试ARM\_CPU
C
cuicheng01 已提交
30 31 32 33

```shell

# 数据和模型准备
34
bash test_tipc/prepare_lite_cpp.sh ./test_tipc/configs/ppocr_det_mobile/model_linux_gpu_normal_normal_lite_cpp_arm_cpu.txt
C
cuicheng01 已提交
35 36

# 手机端测试:
37
bash test_lite_arm_cpp.sh model_linux_gpu_normal_normal_lite_cpp_arm_cpu.txt
C
cuicheng01 已提交
38 39 40

```  

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
#### 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连接电脑](./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.tx`。在手机端测试阶段,配置文件同样修改为该文件。
C
cuicheng01 已提交
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

#### 运行结果

各测试的运行情况会打印在 `./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="lite_log.png" width="1000">

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

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



## 3. 更多教程

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