crnn文字识别训练过程出现的nan问题

crnn 文字识别中数据集应该注意问题:

a)训练图片高度不能超过32并且要能整除16
b)训练图片宽度不能小于高度的八倍256不然在寻找输出的的出现
c)原则上最好的训练就是图片的高度都是32宽度都是280的字条里面的文字可以多可以少
d)如果出现丢字修改池化层的第二个参数为1可以减少丢字

详细代码阅读:

模型训练出现关于nan问题的方案
以crnn_chinese_characters_rec为例
打开 https://github.com/Sierkinhane/crnn_chinese_characters_rec

**找到脚本params.py脚本
阅读里面的相关超参数,这个其实就是模型的cfg文件
在17-19行写出了限制
为什么要对模型的输入尺寸限制这个是为了全连接层的输入是固定原因
想修就要对全连接层前面加上空间金字塔池化spp这种结构在crnn里该结
结构是blstm控制

**具体代码crnn_main.py
164行说明了尺寸限制传入参数
168行详细的说明参数下传的过程
161行可以看出是使用torch框架自带的ctcloss
代码返回到crnn.py里面
尺寸在14行有了新的计算
在25行输出尺寸在32行解释说明长度的变化尺寸nm的字典里面
66行可以打印出来看自己的尺寸是否正确

整体过程:输出图片特征调用ctcloss计算和使用blstm输出识别的文本

**以chineseocr为例
https://github.com/chineseocr/chineseocr
在crnn_torch.py脚本中
45行可以看出是尺寸限制条件
该限制条件主要的作用在config.py的40行
然后在crnn文件夹中utils.py脚本中
定义了一个方法来使用strlabelconverter
相关的尺寸变化在29行开始计算

很高兴回答您的问题。CRNN文字识别系统是一种将卷积神经网络(CNN)和循环神经网络(RNN)结合的深度学习算法,主要用于识别文本或图像中的文字。下面是CRNN文字识别系统的设计和实现过程: 1. 数据集准备 首先需要准备大量的图像数据集,包含各种不同的文字和字体。数据集需要进行预处理,如裁剪、旋转、模糊等,以增加模型的鲁棒性和准确率。 2. CNN特征提取 对于每一张图片,需要先将其经过卷积神经网络(CNN)进行特征提取。CNN可以有效地将图像中的特征提取出来,如线条、圆弧等,其中,卷积层和池化层交替进行,最后得到一个固定大小的特征图。 3. RNN序列建模 将CNN提取出来的特征图输入到循环神经网络(RNN)中进行序列建模。RNN主要用于文本或语音等序列数据的处理,可以有效地捕捉到序列之间的依赖性。 4. CTC损失计算 利用连接时序分类(CTC)算法求得模型的损失函数。CTC算法是一种基于RNN的序列分类算法,它可以将不定长的序列映射到一个固定输出大小的类别序列上,可以允许序列输入和序列输出,非常适合文字识别任务。 5. 模型训练和评估 最后需要对模型进行训练,并使用测试数据进行评估。在训练过程中,使用随机梯度下降等优化算法对模型的参数进行优化,直到达到预设的训练指标。 希望以上内容能够对您有所帮助。如有任何问题,请随时回复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值