场景文本识别算法-SVTRv2¶
1. 算法简介¶
SVTRv2算法简介¶
🔥 该算法由来自复旦大学视觉与学习实验室(FVL)的OpenOCR团队研发,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,B榜端到端识别精度相比PP-OCRv4提升2.5%,推理速度持平。主要思路:1、检测和识别模型的Backbone升级为RepSVTR;2、识别教师模型升级为SVTRv2,可识别长文本。
模型 | 配置文件 | 端到端 | 下载链接 |
---|---|---|---|
PP-OCRv4 | A榜 62.77% B榜 62.51% |
Model List | |
SVTRv2(Rec Sever) | configs/rec/SVTRv2/rec_svtrv2_ch.yml | A榜 68.81% (使用PP-OCRv4检测模型) | 训练模型 / 推理模型 |
RepSVTR(Mobile) | 识别 识别蒸馏 检测 |
B榜 65.07% | 识别: 训练模型 / 推理模型 识别蒸馏: 训练模型 / 推理模型 检测: 训练模型 / 推理模型 |
🚀 快速使用:参考PP-OCR推理说明文档,将检测和识别模型替换为上表中对应的RepSVTR或SVTRv2推理模型即可使用。
2. 环境配置¶
请先参考《运行环境准备》配置PaddleOCR运行环境,参考《项目克隆》克隆项目代码。
3. 模型训练、评估、预测¶
3.1 模型训练¶
训练命令:
3.2 评估¶
3.3 预测¶
使用如下命令进行单张图片预测:
4. 推理部署¶
4.1 Python推理¶
首先将训练得到best模型,转换成inference model,以RepSVTR为例,可以使用如下命令进行转换:
注意: 如果您是在自己的数据集上训练的模型,并且调整了字典文件,请注意修改配置文件中的character_dict_path
是否为所正确的字典文件。
转换成功后,在目录下有三个文件:
执行如下命令进行模型推理:
执行命令后,上面图像的预测结果(识别的文本和得分)会打印到屏幕上,示例如下: 结果如下:
注意:
- 如果您调整了训练时的输入分辨率,需要通过参数
rec_image_shape
设置为您需要的识别图像形状。 - 在推理时需要设置参数
rec_char_dict_path
指定字典,如果您修改了字典,请修改该参数为您的字典文件。 - 如果您修改了预处理方法,需修改
tools/infer/predict_rec.py
中SVTR的预处理为您的预处理方法。
4.2 C++推理部署¶
准备好推理模型后,参考cpp infer教程进行操作即可。
4.3 Serving服务化部署¶
暂不支持
4.4 更多推理部署¶
- Paddle2ONNX推理:准备好推理模型后,参考paddle2onnx教程操作。
5. FAQ¶
引用¶
@article{Du2022SVTR,
title = {SVTR: Scene Text Recognition with a Single Visual Model},
author = {Du, Yongkun and Chen, Zhineng and Jia, Caiyan and Yin, Xiaoting and Zheng, Tianlun and Li, Chenxia and Du, Yuning and Jiang, Yu-Gang},
booktitle = {IJCAI},
year = {2022},
url = {https://arxiv.org/abs/2205.00159}
}