IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> paddleocr文本识别模型的训练 -> 正文阅读

[人工智能]paddleocr文本识别模型的训练

1、准备数据

? ? ? ? 训练自己的模型首先要有数据集,在我写的《paddleocr文本检测模型的训练》这篇文章的时候我已经提供了一份数据集,里面包含了文本检测和识别的数据集,由于那篇文章是文本检测的训练,所以只用到了文本检测的数据集,这里我用的是文本识别的数据集,有需要数据的可以去那篇文章里面找数据。文章链接。让我们来直观的感受一下数据集,数据集照片的图片如下所示:

? ? ? ? ?数据的标签如下图所示,就是每行的前面是图片的路径,后面为该图片的标签内容。

这里要注意的是:?txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。

2、准备字典

????????使模型在训练时,可以将所有出现的字符映射为字典的索引。因此字典需要包含所有希望被正确识别的字符,{word_dict_name}.txt需要写成如下格式,并以?utf-8?编码格式保存。这个字典的作用就是,我们神经网络识别出来的是一个数字,这个数字就要找到对应文本中的字,因此,如果是训练自己的数据集的话,可以用官方自带的比较大的字典,里面包含了各种常用和生僻的字。如下图所示,paddleocr开源项目中包含了大量的字典。而字典的形式就是每一行一个字或者符号,这样更容易去将识别的结果映射出来。而本本所将的实验就是利用icdar2015这个数据集,该数据集只有字母和数字。

3、?训练自己的数据集

3.1、预训练模型的下载

? ? ? ? 下载预训练模型。首先文本识别有几个算法内置到paddleocr中,百度官方也做了大量的实验来验证其效果。如下图所示,算法模型有Rosetta、CRNN、StarNet、RARE、SRN。而骨干网络基本只有两个MobileNetV3、Resnet34_vd这个两个网络骨干,可以明显的看出,Resnet34_vd网络骨架的参数比MobileNetV3在相同算法模型下要好,但是相应的模型的大小也会大一些。所以要根据自己的需求来。

? ? ? ? ?对应的backbone预训练模型可以从PaddleClas repo 主页中找到下载链接下载。本文章实验采用的是CRNN算法模型,Resnet34_vd网络骨架。

3.2、修改yml文件

? ? ? ? 由于本文利用的是CRNN算法模型,网络骨架为Resnet34_vd,因此要找到相应的yml文件才好,找到图中的rec_r34_vd_none_bilstm_ctc.yml这个yml文件来复制一份,并改名,这里改名为our.yml,这里复制粘贴一份新的是我个人的习惯,为了在改完yml文件之后还可以对比原来的文件,并不会破坏文件的原始性。

? ? ? ? ?yml文件中的含义如链接所示。这里我讲一下我自己修改的一些地方。首先这里我添加了自己的预训练权重的地址,但是这里的预训练权重的后缀名不需要写上,否则会出错。然后填写了字典的地址,这里用的是开源项目中自带的字典。如果是训练自己的数据集,有自己的字典的话,可以换成自己的字典的地址。

? ? ? ? ?如下图所示,将数据标注LMDBDataSet格式改为SimpleDataSet格式,因为paddlecor自己的标注工具标注出来的都是SimpleDataSet格式。然后再加上一行label_file_list:,这是用来填写数据集标签的地址的,这里最好是填写绝对路径。验证集改动和上述相同。

? ? ? ? 填写数据集和标签地址的时候有个坑要说一下:

????????我在训练的时候报错是找不到我的图片,仔细检查才发现,是路径中多了一个train/这样的路径,后面我打开标签文件我才知道其中的问题所在。

? ? ? ? ?因为我填写的图片的路径为D:/PycharmProjects/PaddleOCR/PaddleOCR-release-2.2/data/train/,然后读取标签文件的时候,先将标签文件的照片的路径取出和上面数据集的路径整合到一起,指向该照片的路径,然后再去后面的标签。这样就变成了一个照片一个路径,再对应一个标签。然后我将数据集的路径改为D:/PycharmProjects/PaddleOCR/PaddleOCR-release-2.2/data/,不要忘记后面的/,就可以了。验证集也是同理。

? ? ? ? ?然后在模型验证阶段,又出现了找不到数据的报错,仔细看了一下,这个路径中间是有空格的,当然是读取不到的。不符合我们上述的数据集的格式。txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。

? ? ? ? ?将验证集的标签文件打开后发现,的确标注中出现了大量的空格。利用如下的脚本将标签文件中的空格去除掉。

# 输入输出文件的地址
IN_PATH = r'test_label.txt'
OUT_PATH = r'test_label1.txt'

# 将文中的空格去除
new = []
f = open(IN_PATH, "r", encoding='utf-8')
f.readline()
for line in f:
    line = line.replace(' ', '')
    new.append(line)
print(new)


# 以写的方式打开文件,如果文件不存在,就会自动创建,如果存在就会覆盖原文件
file_write_obj = open(OUT_PATH, 'w')
for var in new:
    file_write_obj.writelines(var)
file_write_obj.close()

?利用如上的脚本后就可以将标签文件改正过来了。如下图可示:

? ? ? ? ?如下图所示,由于电脑的配置不同,所以输入网络的批次大小不一样,我的是3060,6GB的显卡,我输入网络的批次为64,核心数为4,根据的自己的显卡调整该大小,要不然会报错显存溢出,或者直接训练不了。这里的训练和验证的送入批次都需要修改。

?3.3 、开始训练模型

????????打开pycharm的终端。输入如下的命令。可以根据自己的yml文件来修改路径和名字。

python  tools/train.py -c configs/rec/our.yml

?????????出现下图的显示就表示训练已经开始了,一开始的精确度为0,训练几轮之后就好了。

? ? ? ? ?这是训练了12轮后的效果。可以看到精确度已经达到了65左右了。足以说明Resnet34_vd的效果的确是很不错的。

?????????训练结束以后,会在如下的目录中生成如下的权重文件。

?????????利用生成最好的权重文件对图中文字进行检测,利用如下的命令。

python tools/infer_rec.py -c output/rec/r34_vd_none_bilstm_ctc/config.yml -o Global.pretrained_model=output/rec/r34_vd_none_bilstm_ctc/best_accuracy Global.load_static_weights=f
alse Global.infer_img=data/test/

? ? ? ? 在pycharm终端中输入上面的命令,-c后面的是你的yml文件的地址,-o是你的训练好的权重的地址,但是后缀不要加,Global.infer_img为推理图片的文件夹位置。我的推理效果如下所示,可以看到,效果还是不错的。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:11:36  更:2021-10-21 12:12:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:37:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码