PaddleOCR 使用总结三:文本检测、识别过程的训练

771 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ————————————————————————————————————————————————————————

文本检测过程的训练

1、数据集的构造

如果只是想要完整地熟悉一下文本检测的训练流程,那么可以直接采用官网提供的数据集,这样可以避免自己动手构造数据集。如果有自己特定的需求,需要构造自己的数据集,那么官网也有提供标注文件的格式,自己写个demo转化一下标注文件即可,需要注意的是标注文件中的“\t”和编码方式“utf-8”。

doc/doc_ch/dataset/ocr_datasets.md · PaddlePaddle/PaddleOCR - Gitee.com

2、训练权重下载

这里直接采用DBnet的预训练权重文件,自己也可以根据实际需要下载适合模型的权重文件。

doc/doc_ch/algorithm_det_db.md · PaddlePaddle/PaddleOCR - Gitee.com

3、配置文件(.yml文件)

这里推荐将原本的.yml文件拷贝一份,重新命名,之后再在里面修改必要的参数。

doc/doc_ch/algorithm_det_db.md · PaddlePaddle/PaddleOCR - Gitee.com

关于.yml配置文件中的参数,这里有详细的解释。

doc/doc_ch/config.md · PaddlePaddle/PaddleOCR - Gitee.com

在这里对配置文件中参数做一些说明,以免大家多走弯路。

# 权重文件名称后面不需要加后缀
pretrained_model: ./pretrain_models/ResNet50_vd_ssld_pretrained

# 这里的路径和label文件存的路径连接起来只要是对应图像的完整路径即可,没有必要严格按照官网要求组织文件
data_dir: ./train_data/icdar2015/text_localization/

# PaddleOCR支持的数据格式有两种lmdb和通用数据,因为训练所使用的为通用数据所以要进行修改
Train
--dataset
----name: SimpleDataSet
Eval
--dataset
----name: SimpleDataSet

4、训练

CPU训练执行下面的命令

# 单机单卡训练 mv3_db 模型
python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

GPU训练执行下面的命令

# 单机多卡训练,通过 --gpus 参数设置使用的GPU ID
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

文本识别过程的训练

1、数据集的构造

这里的要求和文本检测过程的训练中数据集的构造要求基本一样,可以参考下面的网址。

doc/doc_ch/recognition.md · PaddlePaddle/PaddleOCR - Gitee.com

2、训练权重的下载

这里采用CRNN的预训练权重文件。

doc/doc_ch/algorithm_rec_crnn.md · PaddlePaddle/PaddleOCR - Gitee.com

3、配置文件(.yml文件)

这里推荐将原本的.yml文件拷贝一份,重新命名,之后再在里面修改必要的参数。需要注意的是,在文本识别训练过程中,因为用到了CTCloss,所以需要dict.txt文件,里面存放的是网络需要识别出来的字符。

在这里对配置文件中参数做一些说明,以免大家多走弯路。

# 权重文件名称后面不需要加后缀
pretrained_model: ./checkpoints/rec_r34_vd_none_bilstm_ctc_v2.0_train/best_accuracy

# 将之修改为自己构造的dict
character_dict_path: ppocr/utils/dict/my_dict.txt

# 需要检测空格的话设置为True
use_space_char: True

# PaddleOCR支持的数据格式有两种lmdb和通用数据,因为训练所使用的为通用数据所以要进行修改
Train
--dataset
----name: SimpleDataSet
Eval
--dataset
----name: SimpleDataSet

4、训练

CPU训练执行下面的命令

# 单机单卡训练 mv3_db 模型
python3 tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy

GPU训练执行下面的命令

# 单机多卡训练,通过 --gpus 参数设置使用的GPU ID
python3 -m paddle.distributed.launch --gpus '0,1,2,3'  tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy