mindocr infer调试 - panshaowu/mindocr GitHub Wiki

paddleocr测试结果(倾斜带X身份证)

(ms-dev) psw@ubuntu-4-0:~/git/PaddleOCR$ python tools/infer/predict_det.py --image_dir="./id_card.PNG" --det_model_dir=./models/ch_PP-OCRv3_det_infer
E1010 20:49:46.553508 39844 analysis_config.cc:121] Please use PaddlePaddle with GPU version.
[2023/10/10 20:49:47] ppocr INFO: id_card.PNG   [[413.0, 611.0], [918.0, 627.0], [916.0, 662.0], [412.0, 646.0](/panshaowu/mindocr/wiki/[413.0,-611.0],-[918.0,-627.0],-[916.0,-662.0],-[412.0,-646.0), [159.0, 604.0], [365.0, 611.0], [364.0, 643.0], [158.0, 636.0](/panshaowu/mindocr/wiki/159.0,-604.0],-[365.0,-611.0],-[364.0,-643.0],-[158.0,-636.0), [270.0, 469.0], [423.0, 473.0], [422.0, 506.0], [269.0, 501.0](/panshaowu/mindocr/wiki/270.0,-469.0],-[423.0,-473.0],-[422.0,-506.0],-[269.0,-501.0), [269.0, 419.0], [654.0, 430.0], [654.0, 462.0], [268.0, 451.0](/panshaowu/mindocr/wiki/269.0,-419.0],-[654.0,-430.0],-[654.0,-462.0],-[268.0,-451.0), [162.0, 414.0], [244.0, 417.0], [242.0, 450.0], [161.0, 447.0](/panshaowu/mindocr/wiki/162.0,-414.0],-[244.0,-417.0],-[242.0,-450.0],-[161.0,-447.0), [271.0, 341.0], [580.0, 351.0], [579.0, 382.0], [271.0, 372.0](/panshaowu/mindocr/wiki/271.0,-341.0],-[580.0,-351.0],-[579.0,-382.0],-[271.0,-372.0), [165.0, 338.0], [246.0, 338.0], [246.0, 371.0], [165.0, 371.0](/panshaowu/mindocr/wiki/165.0,-338.0],-[246.0,-338.0],-[246.0,-371.0],-[165.0,-371.0), [163.0, 260.0], [503.0, 269.0], [502.0, 313.0], [162.0, 305.0](/panshaowu/mindocr/wiki/163.0,-260.0],-[503.0,-269.0],-[502.0,-313.0],-[162.0,-305.0), [167.0, 196.0], [283.0, 193.0], [284.0, 229.0], [168.0, 232.0](/panshaowu/mindocr/wiki/167.0,-196.0],-[283.0,-193.0],-[284.0,-229.0],-[168.0,-232.0), [274.0, 186.0], [409.0, 189.0], [408.0, 231.0], [273.0, 228.0](/panshaowu/mindocr/wiki/274.0,-186.0],-[409.0,-189.0],-[408.0,-231.0],-[273.0,-228.0)]

[2023/10/10 20:49:47] ppocr INFO: 0 The predict time of ./id_card.PNG: 0.8663969039916992
[2023/10/10 20:49:47] ppocr INFO: The visualized image saved in ./inference_results/det_res_id_card.PNG
(ms-dev) psw@ubuntu-4-0:~/git/PaddleOCR$ python tools/infer/predict_system.py --image_dir=./id_card.PNG --det_model_dir=./models/ch_PP-OCRv3_det_infer --rec_model_dir=./models/ch_PP-OCRv3_rec_infer
E1010 20:52:23.982564 41148 analysis_config.cc:121] Please use PaddlePaddle with GPU version.
E1010 20:52:24.365388 41148 analysis_config.cc:121] Please use PaddlePaddle with GPU version.
[2023/10/10 20:52:24] ppocr INFO: In PP-OCRv3, rec_image_shape parameter defaults to '3, 48, 320', if you are using recognition model with PP-OCRv2 or an older version, please set --rec_image_shape='3,32,320
[2023/10/10 20:52:25] ppocr DEBUG: dt_boxes num : 10, elapse : 0.9060564041137695
[2023/10/10 20:52:26] ppocr DEBUG: rec_res num  : 10, elapse : 0.9592304229736328
[2023/10/10 20:52:26] ppocr DEBUG: 0  Predict time of ./id_card.PNG: 1.870s
[2023/10/10 20:52:26] ppocr DEBUG: 陈萌伟, 0.998
[2023/10/10 20:52:26] ppocr DEBUG: 姓名庆, 0.584
[2023/10/10 20:52:26] ppocr DEBUG: 性别男民族汉, 0.990
[2023/10/10 20:52:26] ppocr DEBUG: 出生, 0.998
[2023/10/10 20:52:26] ppocr DEBUG: 1994年6月18日, 0.951
[2023/10/10 20:52:26] ppocr DEBUG: 住址, 0.970
[2023/10/10 20:52:26] ppocr DEBUG: 甘肃省成县城关镇东新街, 0.958
[2023/10/10 20:52:26] ppocr DEBUG: 31号8499, 0.962
[2023/10/10 20:52:26] ppocr DEBUG: 公民身份号码, 0.930
[2023/10/10 20:52:26] ppocr DEBUG: 62262419940618237X, 0.870
[2023/10/10 20:52:26] ppocr DEBUG: The visualized image saved in ./inference_results/id_card.PNG
[2023/10/10 20:52:26] ppocr INFO: The predict total time is 2.1909122467041016

205服务器配置

mindspore lite配置 (推理似乎仅适配到ms2.0)

编译云侧MindSpore Lite export MSLITE_ENABLE_CLOUD_INFERENCE=on export MSLITE_GPU_BACKEND=off export MSLITE_ENABLE_ACL=off bash build.sh -I x86_64 -j56 -K off

PATH /data3/psw/software/mindspore-lite-2.2.0-linux-x64/tools/converter/converter LD_LIBRARY_PATH /data3/psw/software/mindspore-lite-2.2.0-linux-x64/tools/converter/lib

78服务器: export LITE_HOME=/home/z00579964/software/2.1/mindspore-lite-2.1.1.20230816-linux-x64 export PATH=$LITE_HOME/tools/converter/converter:$LITE_HOME/tools/benchmark:$PATH export LD_LIBRARY_PATH=$LITE_HOME/runtime/lib:$LITE_HOME/runtime/third_party/dnnl:$LITE_HOME/tools/converter/lib:$LD_LIBRARY_PATH

检测模型

名称:ch_pp_det_OCRv3 结构:DBNet | MobileNetV3 (MLT17) yaml:deploy/py_infer/src/configs/det/ppocr/ch_PP-OCRv3_det_cml.yaml weight:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar

转onnx

路径:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar 指令:paddle2onnx --model_dir /data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_det_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file det_db.onnx
--opset_version 11
--input_shape_dict="{'x':[-1,3,-1,-1]}"
--enable_onnx_checker True

40服务器(动态shape): paddle2onnx --model_dir /home/psw/git/PaddleOCR/models/ch_PP-OCRv3_det_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file det_db.onnx
--opset_version 11
--input_shape_dict="{'x':[-1,3,-1,-1]}"
--enable_onnx_checker True

78服务器(动态shape): paddle2onnx --model_dir /home/z00579964/test/PaddleOCR/models/ch_PP-OCRv3_det_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file det_db.onnx
--opset_version 11
--input_shape_dict="{'x':[-1,3,-1,-1]}"
--enable_onnx_checker True

40服务器(静态shape): paddle2onnx --model_dir /home/psw/git/PaddleOCR/models/ch_PP-OCRv3_det_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file det_db.onnx
--opset_version 11
--enable_onnx_checker True

[ascend_context]
input_format=NCHW
input_shape=x:[1,3,736,1280]

转mindir

converter_lite
--saveType=MINDIR
--fmk=ONNX
--modelFile=det_db.onnx
--outputFile=det_db_output
--configFile=config.txt

推理测试

cd /data3/psw/git/mindocr/ python ./deploy/py_infer/infer.py
--input_images_dir=/data3/psw/git/mindocr/
--det_model_path=/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=ch_pp_det_OCRv3
--vis_det_save_dir true

78服务器: python ./deploy/py_infer/infer.py
--input_images_dir=/home/z00579964/test/mindocr/id_card.jpg
--det_model_path=/home/z00579964/test/PaddleOCR/models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=ch_pp_det_OCRv3
--vis_det_save_dir true

识别模型

名称:ch_pp_rec_OCRv3 结构:SVTR | MobileNetV1Enhance (MLT17) 字典文件:ppocr/utils/ppocr_keys_v1.txt yaml:deploy/py_infer/src/configs/rec/ppocr/ch_PP-OCRv3_rec_distillation.yaml weight:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar

转onnx

路径:/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_rec_infer 指令:paddle2onnx
--model_dir /data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_rec_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file rec_crnn.onnx
--opset_version 11
--input_shape_dict="{'x':[-1,3,48,-1]}"
--enable_onnx_checker True

40服务器: paddle2onnx --model_dir /home/psw/git/PaddleOCR/models/ch_PP-OCRv3_rec_infer
--model_filename inference.pdmodel
--params_filename inference.pdiparams
--save_file rec_crnn.onnx
--opset_version 11
--input_shape_dict="{'x':[-1,3,48,-1]}"
--enable_onnx_checker True

转mindir

converter_lite
--saveType=MINDIR
--fmk=ONNX
--modelFile=rec_crnn.onnx
--outputFile=rec_crnn_output
--configFile=config.txt

推理测试

cd /data3/psw/git/mindocr/ python ./deploy/py_infer/infer.py
--input_images_dir=//data3/psw/git/mindocr/
--det_model_path=/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=ch_pp_det_OCRv3
--vis_det_save_dir true

python infer.py
--input_images_dir=/path/to/mlt17_en
--rec_model_path=/path/to/mindir/en_PP-OCRv3_rec_infer.mindir
--rec_model_name_or_config=en_pp_rec_OCRv3
--character_dict_path=/path/to/en_dict.txt
--res_save_dir=/path/to/en_rec_infer_results

python3 /data3/psw/git/mindocr/deploy/py_infer/infer.py
--input_images_dir=/data3/psw/git/mindocr/id_card.jpg
--det_model_path=/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=/data3/psw/git/mindocr/deploy/py_infer/src/configs/det/ppocr/ch_PP-OCRv3_det_cml.yaml
--rec_model_path=/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_rec_infer/rec_crnn_output.mindir
--rec_model_name_or_config=/data3/psw/git/mindocr/deploy/py_infer/src/configs/rec/ppocr/ch_PP-OCRv3_rec_distillation.yaml
--character_dict_path=/data3/psw/git/PaddleOCR/infer_models/ch_PP-OCRv3_rec_infer/ppocr_keys_v1.txt
--backend=lite
--res_save_dir=/data3/psw/git/mindocr/inference_results
--vis_pipeline_save_dir=/data3/psw/git/mindocr/inference_results

40服务器: python3 /home/psw/git/mindocr/deploy/py_infer/infer.py
--input_images_dir=/home/psw/git/PaddleOCR/id_card.jpg
--det_model_path=/home/psw/git/PaddleOCR/models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=/home/psw/git/mindocr/deploy/py_infer/src/configs/det/ppocr/ch_PP-OCRv3_det_cml.yaml
--rec_model_path=/home/psw/git/PaddleOCR/models/ch_PP-OCRv3_rec_infer/rec_crnn_output.mindir
--rec_model_name_or_config=/home/psw/git/mindocr/deploy/py_infer/src/configs/rec/ppocr/ch_PP-OCRv3_rec_distillation.yaml
--character_dict_path=/home/psw/git/PaddleOCR/ppocr/utils/ppocr_keys_v1.txt
--backend=lite
--res_save_dir=/home/psw/git/mindocr/inference_results
--vis_pipeline_save_dir=/home/psw/git/mindocr/inference_results

python /home/psw/git/mindocr/deploy/py_infer/infer.py
--input_images_dir=/home/psw/git/PaddleOCR/id_card.jpg
--det_model_path=/home/psw/git/PaddleOCR/models/ch_PP-OCRv3_det_infer/det_db_output.mindir
--det_model_name_or_config=/home/psw/git/mindocr/deploy/py_infer/src/configs/det/ppocr/ch_PP-OCRv3_det_cml.yaml
--res_save_dir=/home/psw/git/mindocr/inference_results
--vis_det_save_dir /home/psw/git/mindocr/inference_results --device CPU --show_log True

PaddleOCR推理

推理原理

  • save_crop_res和crop_res_save_dir 是否保存文本检测结果,以及保存到哪个路径
  • use_onnx 是否开启onnx预测

DB算法参数

  • det_limit_side_len和det_limit_type 检测的图像边长限制,检测的变成限制类型,目前支持min, max,min表示保证图像最短边不小于det_limit_side_len,max表示保证图像最长边不大于det_limit_side_len
  • use_dilation 是否对分割结果进行膨胀以获取更优检测效果

CRNN算法参数

  • rec_image_shape 识别时的图像尺寸
  • max_text_length 识别结果最大长度,在SRN中有效
  • use_space_char 是否包含空格,如果为True,则会在最后字符字典中补充空格字符

方向检测算法参数

  • cls_image_shape 预测尺寸
  • label_list 分类的角度值,包括0°和180°
  • cls_thresh 预测阈值,模型预测结果为180度,且得分大于该阈值时,认为最终预测结果为180度,需要翻转