diff --git a/tests/docs/compare_right.png b/tests/docs/compare_right.png new file mode 100644 index 00000000..3d74ef1c Binary files /dev/null and b/tests/docs/compare_right.png differ diff --git a/tests/docs/compare_wrong.png b/tests/docs/compare_wrong.png new file mode 100644 index 00000000..26ad576d Binary files /dev/null and b/tests/docs/compare_wrong.png differ diff --git a/tests/docs/test_python.md b/tests/docs/test_python.md index 71f0517c..b230ead6 100644 --- a/tests/docs/test_python.md +++ b/tests/docs/test_python.md @@ -4,40 +4,28 @@ Python功能测试的主程序为`test_python.sh`,可以测试基于Python的 ## 测试结论汇总 -训练相关:方式包括: -【单机单卡、单机多卡、多机多卡】*【正常训练、混合精度训练】*【裁剪、在线量化、蒸馏】 +- 训练相关: -| 算法名称 | 模型名称 | 单机单卡 | 单机多卡 | 多机多卡 | 模型压缩 | +| 算法名称 | 模型名称 | 单机单卡 | 单机多卡 | 多机多卡 | 模型压缩(单机多卡) | | :---- | :---- | :---- | :---- | :---- | :---- | -| DB | ch_ppocr_mobile_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | -| DB | ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | -| CRNN | ch_ppocr_mobile_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | -| CRNN | ch_ppocr_server_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | -|PP-OCR| ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | -|PP-OCR| ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 裁剪、在线/离线量化、蒸馏 | - -| 算法名称 | 模型名称 | 单机单卡 | 单机多卡 | 多机多卡 | -| :---- | :---- | :---- | :---- | :---- | -| DB | ch_ppocr_mobile_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | -| DB | ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | -| DB | ch_ppocr_mobile_v2.0_det_pact| 正常训练
混合精度 | 正常训练
混合精度 | -| DB | ch_ppocr_mobile_v2.0_det_fpgm| 正常训练
混合精度 | 正常训练
混合精度 | -| CRNN | ch_ppocr_mobile_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | -| CRNN | ch_ppocr_server_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | -| CRNN | ch_ppocr_mobile_v2.0_rec_pact| 正常训练
混合精度 | 正常训练
混合精度 | -| CRNN | ch_ppocr_mobile_v2.0_rec_fpgm| 正常训练
混合精度 | 正常训练
混合精度 | -|PP-OCR| ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | -|PP-OCR| ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | +| DB | ch_ppocr_mobile_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | +| DB | ch_ppocr_server_v2.0_det| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | +| CRNN | ch_ppocr_mobile_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | +| CRNN | ch_ppocr_server_v2.0_rec| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | +|PP-OCR| ch_ppocr_mobile_v2.0| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | +|PP-OCR| ch_ppocr_server_v2.0| 正常训练
混合精度 | 正常训练
混合精度 | 正常训练
混合精度 | 正常训练:FPGM裁剪、PACT量化 | -预测相关: +- 预测相关: -| 模型名称 | 算法名称 | 模型类型 |device | batchsize=1/6 | mkldnn | tensorrt | cpu多线程 | +| 算法名称 | 模型名称 |device | batchsize=1/6 | mkldnn | cpu多线程 | tensorrt | 离线量化 | | ---- | ---- | ---- | ---- | ---- | ---- | ----| --- | -|ch_ppocr_mobile_v2.0_det| DB | 检测 | CPU/GPU | 支持 | 支持 | fp32/fp16/int8 | 支持 | -|ch_ppocr_mobile_v2.0_rec| CRNN | 识别 | CPU/GPU | 支持 | 支持 | fp32/fp16/int8 | 支持 | -|ch_ppocr_server_v2.0_det| DB | 检测 | CPU/GPU | 支持 | 支持 | fp32/fp16/int8 | 支持 | -|ch_ppocr_server_v2.0_rec| CRNN | 识别 | CPU/GPU | 支持 | 支持 | fp32/fp16/int8 | 支持 | +| DB |ch_ppocr_mobile_v2.0_det| CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 | +| DB |ch_ppocr_server_v2.0_det| CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 +| CRNN |ch_ppocr_mobile_v2.0_rec| CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 | +| CRNN |ch_ppocr_server_v2.0_rec| CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 | +|PP-OCR|ch_ppocr_server_v2.0 | CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 | +|PP-OCR|ch_ppocr_server_v2.0 | CPU/GPU | 支持 | 支持 | 支持 | fp32/fp16/int8 | 支持 | @@ -91,4 +79,29 @@ bash tests/test.sh ./tests/configs/ppocr_det_mobile_params.txt 'whole_train_infe ``` -## 3. 精度测试 \ No newline at end of file +## 3. 精度测试 + +使用compare_results.py脚本比较模型预测的结果是否符合预期,主要步骤包括: +- 提取日志中的预测坐标; +- 从本地文件中提取保存好的坐标结果; +- 比较上述两个结果是否符合精度预期,误差大于设置阈值时会报错。 + +### 使用方式 +运行命令: +```shell +python3.7 tests/compare_results.py --gt_file=./tests/results/*.txt --log_file=./tests/output/infer_*.log --atol=1e-3 --rtol=1e-3 +``` + +参数介绍: +- gt_file: 指向事先保存好的预测结果路径,支持*.txt 结尾,会自动索引*.txt格式的文件,文件默认保存在tests/result/ 文件夹下 +- log_file: 指向运行tests/test.sh 脚本的infer模式保存的预测日志,预测日志中打印的有预测结果,比如:文本框,预测文本,类别等等,同样支持infer_*.log格式传入 +- atol: 设置的绝对误差 +- rtol: 设置的相对误差 + +### 运行结果 + +正常运行效果如下图: + + +出现不一致结果时的运行输出: +