paddle ocr 文字识别模型训练 svtr

训练模型方法参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md

实践:https://aistudio.baidu.com/projectdetail/4482681

SVTR 算法原理

SVTR: Scene Text Recognition with a Single Visual Model Yongkun Du and Zhineng Chen and Caiyan Jia and Xiaoting Yin and Tianlun Zheng and Chenxia Li and Yuning Du and Yu-Gang Jiang IJCAI, 2022

假设我们要识别一张图片上的文本,这个过程可以分为几个阶段:

  1. 初步分块和特征提取:
    ○ 首先将图像分成小块,每个小块提取出初步的特征(例如颜色、形状等)。
  2. 组件级别的混合、合并和组合:
    ○ 对每个小块的特征进行混合、合并和组合。这一步骤是分层次进行的,每一层次都进一步整合前一层次的特征。
    ○ 例如,第一层次可能仅处理字符的局部特征(如笔画),而第二层次开始整合整个字符,第三层次则开始整合多个字符之间的关系。
  3. 全局和局部混合:
    ○ 全局混合:整合整张图片的特征,理解字符之间的相对位置和关系。
    ○ 局部混合:细化每个字符内部的细节,确保模型能够识别出单个字符的精确特征。
  4. 多层次感知:
    ○ 通过多层次的处理,模型不仅能够识别出每个字符,还能理解字符之间的关系,从而准确地识别出整个文本内容。

在这里插入图片描述

下载识别模型

https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/algorithm_rec_svtrv2.md

下载最新的SVTR2训练模型
https://paddleocr.bj.bcebos.com/openatom/openatom_rec_svtrv2_ch_train.tar

在这里插入图片描述

数据

https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md

每张图片只有一行文字

ICDAR2015数据集(全英文)

在这里插入图片描述

中文数据集
参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/dataset/datasets.md
中文文档文字识别
● 数据来源:https://github.com/YCG09/chinese_ocr

● 数据简介:
○ 共约364万张图片,按照99:1划分成训练集和验证集。
○ 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成
○ 包含汉字、英文字母、数字和标点共5990个字符(字符集合:https://github.com/YCG09/chinese_ocr/blob/master/train/char_std_5990.txt )
○ 每个样本固定10个字符,字符随机截取自语料库中的句子
○ 图片分辨率统一为280x32
https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/datasets/ch_doc1.jpghttps://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/datasets/ch_doc3.jpg

● 下载地址:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m)

图片:
在这里插入图片描述

100,000张图片,标签如下:

训练命令

下载Paddle OCR源码 git clone https://github.com/PaddlePaddle/PaddleOCR.git

配置文件参数解释:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/config.md

使用下载的识别模型当预训练模型

训练模型命令:python tools/train.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml

识别模型训练速度较慢
在这里插入图片描述

第三轮差不多就达到精度最高98%
在这里插入图片描述

评估

python tools/eval.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml

如果用预训练模型预测,准确度只有68%
在这里插入图片描述

通过微调准确率提高了30%
在这里插入图片描述

推理命令

将训练得到best模型,转换成inference model

python  tools/export_model.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml -o Global.pretrained_model=output/rec_svtrv2_ch/best_accuracy Global.save_inference_dir=./inference/rec_svtrv2_ch

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

在这里插入图片描述

使用自己的识别模型:

python tools/infer/predict_rec.py   --image_dir='E:/BaiduNetdiskDownload/DataSet/Chinese_dataset/images/img_0000001.jpg'  --rec_model_dir='./inference/rec_svtrv2_ch'  --rec_char_dict_path=''

在这里插入图片描述

训练后参数分布会变,所以预测的图片与训练的图片分布相似时,准确率会更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值