449 Star 3.5K Fork 853

PaddlePaddle / PaddleOCR

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
algorithm_rec_rfl_en.md 5.23 KB
一键复制 编辑 原始数据 按行查看 历史
文幕 提交于 2022-10-13 06:23 . update rfl model link

RFL

1. Introduction

Paper:

Reciprocal Feature Learning via Explicit and Implicit Tasks in Scene Text Recognition Hui Jiang, Yunlu Xu, Zhanzhan Cheng, Shiliang Pu, Yi Niu, Wenqi Ren, Fei Wu, and Wenming Tan ICDAR, 2021

Using MJSynth and SynthText two text recognition datasets for training, and evaluating on IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE datasets, the algorithm reproduction effect is as follows:

Model Backbone config Acc Download link
RFL-CNT ResNetRFL rec_resnet_rfl_visual.yml 93.40% 训练模型
RFL-Att ResNetRFL rec_resnet_rfl_att.yml 88.63% 训练模型

2. Environment

Please refer to "Environment Preparation" to configure the PaddleOCR environment, and refer to "Project Clone" to clone the project code.

3. Model Training / Evaluation / Prediction

PaddleOCR modularizes the code, and training different recognition models only requires changing the configuration file.

Training:

Specifically, after the data preparation is completed, the training can be started. The training command is as follows:

#step1:train the CNT branch
#Single GPU training (long training period, not recommended)
python3 tools/train.py -c configs/rec/rec_resnet_rfl_visual.yml

#Multi GPU training, specify the gpu number through the --gpus parameter
python3 -m paddle.distributed.launch --gpus '0,1,2,3'  tools/train.py -c configs/rec/rec_resnet_rfl_visual.yml

#step2:joint training of CNT and Att branches
#Single GPU training (long training period, not recommended)
python3 tools/train.py -c configs/rec/rec_resnet_rfl_att.yml -o Global.pretrained_model={path/to/weights}/best_accuracy

#Multi GPU training, specify the gpu number through the --gpus parameter
python3 -m paddle.distributed.launch --gpus '0,1,2,3'  tools/train.py -c configs/rec/rec_resnet_rfl_att.yml  -o Global.pretrained_model={path/to/weights}/best_accuracy

Evaluation:

# GPU evaluation
python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec_resnet_rfl_att.yml -o Global.pretrained_model={path/to/weights}/best_accuracy

Prediction:

# The configuration file used for prediction must match the training
python3 tools/infer_rec.py -c configs/rec/rec_resnet_rfl_att.yml -o Global.infer_img='./doc/imgs_words_en/word_10.png' Global.pretrained_model={path/to/weights}/best_accuracy

4. Inference and Deployment

4.1 Python Inference

First, the model saved during the RFL text recognition training process is converted into an inference model. ( Model download link) ), you can use the following command to convert:

python3 tools/export_model.py -c configs/rec/rec_resnet_rfl_att.yml -o Global.pretrained_model={path/to/weights}/best_accuracy  Global.save_inference_dir=./inference/rec_resnet_rfl_att

Note:

  • If you are training the model on your own dataset and have modified the dictionary file, please pay attention to modify the character_dict_path in the configuration file to the modified dictionary file.
  • If you modified the input size during training, please modify the infer_shape corresponding to NRTR in the tools/export_model.py file.

After the conversion is successful, there are three files in the directory:

/inference/rec_resnet_rfl_att/
    ├── inference.pdiparams
    ├── inference.pdiparams.info
    └── inference.pdmodel

For RFL text recognition model inference, the following commands can be executed:

python3 tools/infer/predict_rec.py --image_dir='./doc/imgs_words_en/word_10.png' --rec_model_dir='./inference/rec_resnet_rfl_att/' --rec_algorithm='RFL' --rec_image_shape='1,32,100'

After executing the command, the prediction result (recognized text and score) of the image above is printed to the screen, an example is as follows: The result is as follows:

Predicts of ./doc/imgs_words_en/word_10.png:('pain', 0.9999927282333374)

4.2 C++ Inference

Not supported

4.3 Serving

Not supported

4.4 More

Not supported

5. FAQ

Citation

@article{2021Reciprocal,
  title     = {Reciprocal Feature Learning via Explicit and Implicit Tasks in Scene Text Recognition},
  author    = {Jiang, H.  and  Xu, Y.  and  Cheng, Z.  and  Pu, S.  and  Niu, Y.  and  Ren, W.  and  Wu, F.  and  Tan, W. },
  booktitle = {ICDAR},
  year      = {2021},
  url       = {https://arxiv.org/abs/2105.06229}
}
Python
1
https://gitee.com/paddlepaddle/PaddleOCR.git
git@gitee.com:paddlepaddle/PaddleOCR.git
paddlepaddle
PaddleOCR
PaddleOCR
release/2.6

搜索帮助