添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
睿智的钢笔  ·  使用开源 AutoML 库 ...·  2 月前    · 
近视的鸡蛋  ·  [Java SE] ...·  4 月前    · 
含蓄的自行车  ·  android ...·  1 年前    · 
活泼的酱肘子  ·  从adb ...·  2 年前    · 
高大的蟠桃  ·  李宏宝-基础医学院·  2 年前    · 

高精度中文场景文本识别模型SVTR

1. 简介

PP-OCRv3是百度开源的超轻量级场景文本检测识别模型库,其中超轻量的场景中文识别模型SVTR_LCNet使用了SVTR算法结构。为了保证速度,SVTR_LCNet将SVTR模型的Local Blocks替换为LCNet,使用两层Global Blocks。在中文场景中,PP-OCRv3识别主要使用如下优化策略( 详细技术报告 ):

  • GTC:Attention指导CTC训练策略;
  • TextConAug:挖掘文字上下文信息的数据增广策略;
  • TextRotNet:自监督的预训练模型;
  • UDML:联合互学习策略;
  • UIM:无标注数据挖掘方案。
  • 其中 UIM:无标注数据挖掘方案 使用了高精度的SVTR中文模型进行无标注文件的刷库,该模型在PP-OCRv3识别的数据集上训练,精度对比如下表。

    中文识别算法
    git clone -b dygraph https://github.com/PaddlePaddle/PaddleOCR

    安装依赖库

    pip install -r PaddleOCR/requirements.txt -i https://mirror.baidu.com/pypi/simple

    获取SVTR中文模型文件,请扫码填写问卷,加入PaddleOCR官方交流群获取全部OCR垂类模型下载链接、《动手学OCR》电子书等全套OCR学习资料 🎁

    # 解压模型文件
    tar xf svtr_ch_high_accuracy.tar

    预测中文文本,以下图为例:

    预测命令:

    # CPU预测
    python tools/infer_rec.py -c configs/rec/rec_svtrnet_ch.yml -o Global.pretrained_model=./svtr_ch_high_accuracy/best_accuracy Global.infer_img=./doc/imgs_words/ch/word_1.jpg Global.use_gpu=False
    # GPU预测
    #python tools/infer_rec.py -c configs/rec/rec_svtrnet_ch.yml -o Global.pretrained_model=./svtr_ch_high_accuracy/best_accuracy Global.infer_img=./doc/imgs_words/ch/word_1.jpg Global.use_gpu=True

    可以看到最后打印结果为

  • result: 韩国小馆 0.9853458404541016
  • 0.9853458404541016为预测置信度。

    推理模型导出与预测

    inference 模型(paddle.jit.save保存的模型) 一般是模型训练,把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。 训练过程中保存的模型是checkpoints模型,保存的只有模型的参数,多用于恢复训练等。 与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。

    运行识别模型转inference模型命令,如下:

    python tools/export_model.py -c configs/rec/rec_svtrnet_ch.yml -o Global.pretrained_model=./svtr_ch_high_accuracy/best_accuracy Global.save_inference_dir=./inference/svtr_ch

    转换成功后,在目录下有三个文件:

    inference/svtr_ch/
        ├── inference.pdiparams         # 识别inference模型的参数文件
        ├── inference.pdiparams.info    # 识别inference模型的参数信息,可忽略
        └── inference.pdmodel           # 识别inference模型的program文件

    inference模型预测,命令如下:

    # CPU预测
    python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_1.jpg" --rec_algorithm='SVTR' --rec_model_dir=./inference/svtr_ch/ --rec_image_shape='3, 32, 320'  --rec_char_dict_path=ppocr/utils/ppocr_keys_v1.txt --use_gpu=False
    # GPU预测
    #python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_1.jpg" --rec_algorithm='SVTR' --rec_model_dir=./inference/svtr_ch/ --rec_image_shape='3, 32, 320'  --rec_char_dict_path=ppocr/utils/ppocr_keys_v1.txt --use_gpu=True
  • 使用SVTR算法时,需要指定--rec_algorithm='SVTR'
  • 如果使用自定义字典训练的模型,需要将--rec_char_dict_path=ppocr/utils/ppocr_keys_v1.txt修改为自定义的字典
  • --rec_image_shape='3, 32, 320' 该参数不能去掉
  •