百度飞桨paddleocr训练rec模型记录

目录

一、背景

二、训练流程

        2.1、下载paddleocr项目

        2.2、创建相关文件夹

        2.3、下载rec预训练模型

        2.4、修改训练配置文件

        2.5、训练

        2.6、预测

        2.7、保存inference

三、其他


一、背景

        在项目进行中,遇到了一个比较棘手的问题,爬虫遇到网站有验证码识别校验的情况。当时第一步是寻找了相关的python识别包直接去识别,第一个找的就是paddleocr这个包,但效果不是很好。可能是因为验证码图片上的干扰线太多导致的。调研后跟着也官方文档尝试了一下paddleocr的训练。

二、训练流程

        2.1、下载paddleocr项目

        两种方式,从GitHub上克隆paddleocr的项目到本地或者从GitHub上下载zip包再解压

git clone http://github.com/PaddlePaddle/PaddleOCR.git

        2.2、创建相关文件夹

paddleocr
    pretrain_models
    tranMyOCR
        rec
            test
                xxx.png
            train
                xxx1.png
                xxx2.png
            codeChar.txt
            rec_gt_train.txt
            rec_gt_test.txt

其中:
    pretrain_models文件夹存放下载的预训练模型;
    paddleocr是克隆下来的项目文件夹;
    tranMyOCR是我们训练主文件夹;
    rec文件夹用来标识我们训练的模型类别,常用的有det、cls、rec等;
    test文件夹下存放验证集;
    train文件夹下存放训练集;
    codeChar.txt是所有希望能被正确识别的字符;
    rec_gt_train.txt列出了所有训练集数据与标签集合;
        xxx.jpg    1a4d
    rec_gt_test.txt列出了所有测试集数据与标签集合;

        test文件夹下存放验证集:

        train文件夹下存放训练集:

        codeChar.txt文件内容:

./tranMyOCR/rec/train/

        rec_gt_train.txt文件内容:

         rec_gt_test.txt文件内容:

        2.3、下载rec预训练模型

        本文示例使用的是en_pp-ocrv3_rec版本的实验的,可能v4版本效果更好,需要自行去尝试。下载后移入到事先建好的pretrain_models文件夹下,再解压即可。

https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar

        2.4、修改训练配置文件

        rec模型训练配置文件路径:./configs/rec/PP-OCRv3 下的en_PP-OCRv3_rec.yml文件,同目录下有中文、英文分别。不明白有什么区别,不过我想既然要训练的是字符验证码,那肯定是要使用英文模型训练配置文件。

        配置文件中涉及到修改的参数有:

Global:
    use_gpu:是否开启GPU训练
    epoch_num:训练轮数
    print_batch_step:多少轮输出一次日志
    save_model_dir:最终模型保存路径
    save_epoch_step:多少轮保存一次模型
    eval_batch_step:一个区间,没搞懂
    pretrained_model:预训练模型路径
    save_inference_dir:导出inference模型路径,导出时候需要用到
    character_dict_path:字符字典路径
    use_space_char:是否正常识别空格

Train:
    dataset:
        data_dir:训练集数据文件夹
        label_file_list:训练标签文件路径,也就是rec_gt_train.txt文件的路径
    loader:
        shuffle: false
        batch_size_per_card: 每轮训练数量吧
        drop_last: false
        num_workers: 指定多少个线程训练吧

Eval:
    dataset:
        data_dir:验证集数据文件夹
        label_file_list:验证标签文件路径,也就是rec_gt_test.txt文件的路径

        2.5、训练

        进入到paddleocr项目文件夹下,打开命令行后执行训练命令。

# 训练
python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_new.yml

# 若训练配置文件没有配置pretrained_model
python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_zk.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy


# 训练日志(省略中间部分)
(base) Dell:~/GitHub/PaddleOCR$ /home/zhangke/miniconda3/bin/python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_zk.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy
[2024/11/26 16:17:29] ppocr INFO: Architecture : 
[2024/11/26 16:17:29] ppocr INFO:     Backbone : 
[2024/11/26 16:17:29] ppocr INFO:         last_conv_stride : [1, 2]
[2024/11/26 16:17:29] ppocr INFO:         last_pool_kernel_size : [2, 2]
[2024/11/26 16:17:29] ppocr INFO:         last_pool_type : avg
[2024/11/26 16:17:29] ppocr INFO:         name : MobileNetV1Enhance
[2024/11/26 16:17:29] ppocr INFO:         scale : 0.5
[2024/11/26 16:17:29] ppocr INFO:     Head : 
[2024/11/26 16:17:29] ppocr INFO:         head_list : 
[2024/11/26 16:17:29] ppocr INFO:             CTCHead : 
[2024/11/26 16:17:29] ppocr INFO:                 Head : 
[2024/11/26 16:17:29] ppocr INFO:                     fc_decay : 1e-05
[2024/11/26 16:17:29] ppocr INFO:                 Neck : 
[2024/11/26 16:17:29] ppocr INFO:                     depth : 2
[2024/11/26 16:17:29] ppocr INFO:                     dims : 64
[2024/11/26 16:17:29] ppocr INFO:                     hidden_dims : 120
[2024/11/26 16:17:29] ppocr INFO:                     name : svtr
[2024/11/26 16:17:29] ppocr INFO:                     use_guide : True
[2024/11/26 16:17:29] ppocr INFO:             SARHead : 
[2024/11/26 16:17:29] ppocr INFO:                 enc_dim : 512
[2024/11/26 16:17:29] ppocr INFO:                 max_text_length : 25
[2024/11/26 16:17:29] ppocr INFO:         name : MultiHead
[2024/11/26 16:17:29] ppocr INFO:     Transform : None
[2024/11/26 16:17:29] ppocr INFO:     algorithm : SVTR_LCNet
[2024/11/26 16:17:29] ppocr INFO:     model_type : rec
[2024/11/26 16:17:29] ppocr INFO: Eval : 
[2024/11/26 16:17:29] ppocr INFO:     dataset : 
[2024/11/26 16:17:29] ppocr INFO:         data_dir : ./tranMyOCR/rec/test/
[2024/11/26 16:17:29] ppocr INFO:         label_file_list : ['./tranMyOCR/rec/rec_gt_test.txt']
[2024/11/26 16:17:29] ppocr INFO:         name : SimpleDataSet
[2024/11/26 16:17:29] ppocr INFO:         transforms : 
[2024/11/26 16:17:29] ppocr INFO:             DecodeImage : 
[2024/11/26 16:17:29] ppocr INFO:                 channel_first : False
[2024/11/26 16:17:29] ppocr INFO:                 img_mode : BGR
[2024/11/26 16:17:29] ppocr INFO:             MultiLabelEncode : None
[2024/11/26 16:17:29] ppocr INFO:             RecResizeImg : 
[2024/11/26 16:17:29] ppocr INFO:                 image_shape : [3, 48, 320]
[2024/11/26 16:17:29] ppocr INFO:             KeepKeys : 
[2024/11/26 16:17:29] ppocr INFO:                 keep_keys : ['image', 'label_ctc', 'label_sar', 'length', 'valid_ratio']
[2024/11/26 16:17:29] ppocr INFO:     loader : 
[2024/11/26 16:17:29] ppocr INFO:         batch_size_per_card : 1
[2024/11/26 16:17:29] ppocr INFO:         drop_last : False
[2024/11/26 16:17:29] ppocr INFO:         num_workers : 1
[2024/11/26 16:17:29] ppocr INFO:         shuffle : False
[2024/11/26 16:17:29] ppocr INFO: Global : 
[2024/11/26 16:17:29] ppocr INFO:     cal_metric_during_train : True
[2024/11/26 16:17:29] ppocr INFO:     character_dict_path : tranMyOCR/rec/codeChar.txt
[2024/11/26 16:17:29] ppocr INFO:     checkpoints : None
[2024/11/26 16:17:29] ppocr INFO:     debug : False
[2024/11/26 16:17:29] ppocr INFO:     distributed : False
[2024/11/26 16:17:29] ppocr INFO:     epoch_num : 100
[2024/11/26 16:17:29] ppocr INFO:     eval_batch_step : [0, 2000]
[2024/11/26 16:17:29] ppocr INFO:     infer_img : doc/imgs_words/ch/word_1.jpg
[2024/11/26 16:17:29] ppocr INFO:     infer_mode : False
[2024/11/26 16:17:29] ppocr INFO:     log_smooth_window : 20
[2024/11/26 16:17:29] ppocr INFO:     max_text_length : 25
[2024/11/26 16:17:29] ppocr INFO:     pretrained_model : ./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy
[2024/11/26 16:17:29] ppocr INFO:     print_batch_step : 10
[2024/11/26 16:17:29] ppocr INFO:     save_epoch_step : 10
[2024/11/26 16:17:29] ppocr INFO:     save_inference_dir : None
[2024/11/26 16:17:29] ppocr INFO:     save_model_dir : ./output/v3_en_mobile/rec
[2024/11/26 16:17:29] ppocr INFO:     save_res_path : ./output/rec/predicts_ppocrv3_en.txt
[2024/11/26 16:17:29] ppocr INFO:     use_gpu : False
[2024/11/26 16:17:29] ppocr INFO:     use_space_char : False
[2024/11/26 16:17:29] ppocr INFO:     use_visualdl : False
[2024/11/26 16:17:29] ppocr INFO: Loss : 
[2024/11/26 16:17:29] ppocr INFO:     loss_config_list : 
[2024/11/26 16:17:29] ppocr INFO:         CTCLoss : None
[2024/11/26 16:17:29] ppocr INFO:         SARLoss : None
[2024/11/26 16:17:29] ppocr INFO:     name : MultiLoss
[2024/11/26 16:17:29] ppocr INFO: Metric : 
[2024/11/26 16:17:29] ppocr INFO:     ignore_space : False
[2024/11/26 16:17:29] ppocr INFO:     main_indicator : acc
[2024/11/26 16:17:29] ppocr INFO:     name : RecMetric
[2024/11/26 16:17:29] ppocr INFO: Optimizer : 
[2024/11/26 16:17:29] ppocr INFO:     beta1 : 0.9
[2024/11/26 16:17:29] ppocr INFO:     beta2 : 0.999
[2024/11/26 16:17:29] ppocr INFO:     lr : 
[2024/11/26 16:17:29] ppocr INFO:         learning_rate : 0.001
[2024/11/26 16:17:29] ppocr INFO:         name : Cosine
[2024/11/26 16:17:29] ppocr INFO:         warmup_epoch : 5
[2024/11/26 16:17:29] ppocr INFO:     name : Adam
[2024/11/26 16:17:29] ppocr INFO:     regularizer : 
[2024/11/26 16:17:29] ppocr INFO:         factor : 3e-05
[2024/11/26 16:17:29] ppocr INFO:         name : L2
[2024/11/26 16:17:29] ppocr INFO: PostProcess : 
[2024/11/26 16:17:29] ppocr INFO:     name : CTCLabelDecode
[2024/11/26 16:17:29] ppocr INFO: Train : 
[2024/11/26 16:17:29] ppocr INFO:     dataset : 
[2024/11/26 16:17:29] ppocr INFO:         data_dir : ./tranMyOCR/rec/train/code/
[2024/11/26 16:17:29] ppocr INFO:         ext_op_transform_idx : 1
[2024/11/26 16:17:29] ppocr INFO:         label_file_list : ['./tranMyOCR/rec/rec_gt_train.txt']
[2024/11/26 16:17:29] ppocr INFO:         name : SimpleDataSet
[2024/11/26 16:17:29] ppocr INFO:         transforms : 
[2024/11/26 16:17:29] ppocr INFO:             DecodeImage : 
[2024/11/26 16:17:29] ppocr INFO:                 channel_first : False
[2024/11/26 16:17:29] ppocr INFO:       
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值