最近在看天池大赛的学习赛 零基础入门CV - 街景字符编码识别,其中官方给出的demo中baseline就有CRNN版本,因此在这里看一看CRNN的论文。
前期知识储备:
再增加几个问题:
该内容采用: 摘录重点部分+提出问题的方式,来阅读该篇论文。 后面会逐一的解答提出来的的问题。
论文名称:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
基于图像序列识别的端到端可训练神经网络及其在场景文本中识别中的应用
作者:Baoguang Shi, Xiang Bai and Cong Yao
机构:中国武汉华中科技大学电子信息与通信学院
年份:2015 CVPR
是否精读:是
做出决定日期:2021-6-7
论文地址:https://arxiv.org/pdf/1507.05717.pdf
场景文本识别系统相比,所提出的体系结构具有四个显著的特性:
(1) 它是端到端可训练的,这与大多数现有算法的组件是分别训练和调整的相反。
(2) 它自然地处理任意长度的序列,不涉及字符分割或水平尺度归一化。
(3) 它不局限于任何预定义的字典,在无字典和基于字典的场景文本识别任务中都取得了显著的性能
(4) 它生成了一个有效但小得多的模型,这对于现实世界的应用场景更为实用。
在标准基准上的实验,包括IIIT-5k、Street View Text 和ICDAR数据集上证明了该算法优于现有的技术。此外、该算法在基于图像的乐谱识别任务中表现良好,验证了算法的通用性。
最近,社区看到了神经网络的强劲复兴,这主要是受到深度神经网络模型,特别是深度卷积神经网络(DCNN)在各种视觉任务中的巨大成功的刺激。然而,最近大多数与深度神经网络相关的工作都致力于对象类别的检测或分类[12,25]。在本文中,我们关注计算机视觉中的一个经典问题:基于图像的序列识别。在现实世界中,一组稳定的视觉对象,如场景文本、笔迹和乐谱,往往以序列的形式出现,而不是孤立出现。与一般的对象识别不同,识别这种类似序列的对象通常需要系统预测一系列的对象标签,而不是单个标签。因此,这种对象的识别自然可以归结为一个序列识别问题。序列状物体的另一个独特性质是它们的长度可能会有很大的不同。例如,英语单词既可以由2个字符组成,如“OK”,也可以由15个字符组成,如“congratulations”。因此,像DCNN [25,26]这样最流行的深度模型不能直接应用于序列预测,因为DCNN模型通常对具有固定维数的输入和输出进行操作,因此不能产生可变长度的标签序列。
已经进行了一些尝试来针对特定的类似序列的对象(例如场景文本)解决这个问题。例如,[35,8]中的算法首先检测单个字符,然后用DCNN模型识别这些检测到的字符,DCNN模型使用标记的字符图像进行训练。这种方法通常需要训练一个强有力的字符检测器来准确地检测并从原始单词图像中剪切出每个字符。其他一些方法(如[22])将场景文本识别视为图像分类问题,并为每个英语单词(总共90K个单词)分配一个类别标签。它是一个庞大的训练模型,有大量的类,很难推广到其他类型的序列类对象,如中文文本、乐谱等。,因为这种序列的基本组合数可以大于100万。总之,目前基于DCNN的系统不能直接用于基于图像的序列识别。递归神经网络(RNN)模型是深度神经网络家族的另一个重要分支,主要设计用于处理序列。RNN的优点之一是在训练和测试中不需要序列目标图像中每个元素的位置。然而,将输入对象转换成图像特征序列的预处理步骤通常是必要的。
(…)
本文的主要贡献是提出了一种新的神经网络模型,其网络结构是专门为识别图像中的序列状对象而设计的。所提出的神经网络模型被命名为卷积递归神经网络(CRNN),因为它是DCNN和RNN的组合。对于序列类对象,CRNN比传统的神经网络模型具有几个明显的优势:
在本文中,我们提出了一种新的神经网络结构,称为卷积递归神经网络,它综合了卷积神经网络和递归神经网络(RNN)的优点。CRNN能够获取不同维度的输入图像,并产生不同长度的预测。它直接在粗略的级别标签(例如单词)上运行,在训练阶段不需要对每个单独的元素(例如字符)进行详细的注释。此外,由于CRNN放弃了传统神经网络中使用的完全连接的层,它导致了更紧凑和有效的模型。所有这些特性使得CRNN成为一种优秀的基于图像的序列识别方法。
在场景文本识别基准上的实验表明,与传统方法以及其他基于CNN和RNN的算法相比,该算法取得了优越或高度竞争的性能。这证实了所提出算法的优点。此外,CRNN在光学音乐识别(OMR)的基准上明显优于其他竞争对手,验证了CRNN的通用性。
实际上,CRNN是一个通用框架,因此它可以应用于其他领域和问题(如汉字识别),这些领域和问题涉及图像中的序列预测。进一步加快CRNN的速度,使其在现实应用中更加实用,是未来值得探索的另一个方向。
如下图所示,CRNN的网络结构从下到上由三个部分组成,包括卷积层、循环层和转录层。在CRNN的底部,卷积层自动从每个输入图像中提取特征序列。
在卷积网络的顶部,建立一个递归网络,用于对卷积层输出的特征序列的每一帧进行预测。采用循环神经网络顶部的转录层将循环层的每帧预测翻译成标签序列。虽然该神经网络由不同类型的网络结构(如CNN和RNN)组成,但它可以用一个损失函数进行联合训练。
图1。网络架构。该体系结构由三部分组成:
1)卷积层,从输入图像中提取特征序列;
2)递归层,预测每个帧的标签分布;
3)转录层,其将每帧预测翻译成最终的标记序列。
在CRNN模型中,卷积层的组成部分是通过从标准的CNN模型中提取卷积层和最大池层(去除全连接层)来构造的。这种组件用于从输入图像中提取顺序特征表示。在输入网络之前,所有图像都需要缩放到相同的高度。然后,从卷积层的分量产生的特征映射中提取特征向量序列,这是递归层的输入。具体地,特征序列的每个特征向量在特征图上按列从左到右生成。这意味着第I个特征向量是所有地图的第I列的连接。在我们的设置中,每一列的宽度都固定为一个像素。
由于卷积、最大池和元素激活函数的层在局部区域上操作,它们是平移不变的。因此,特征图的每一列对应于原始图像的矩形区域(称为感受野),并且这样的矩形区域从左到右与它们在特征图上的对应列的顺序相同。如图2所示,特征序列中的每个向量与感受野相关联,并且可以被认为是该区域的图像描述符。
深度卷积特征具有鲁棒性、丰富性和可训练性,已被广泛用于不同类型的视觉识别任务[25,12]。一些以前的方法已经使用CNN学习像场景文本这样的序列对象的鲁棒表示[22]。然而,这些方法通常通过CNN提取整个图像的整体表示,然后收集局部深层特征以识别连续对象的每个组成部分。由于CNN需要将输入图像缩放到固定的大小,以满足其固定的输入维度,因此它不适用于类似序列的对象,因为它们的长度变化很大。在CRNN中,我们将深层特征表达成序列表示,以便对序列状对象的长度变化保持不变。
深层双向递归神经网络建立在卷积层的顶部,作为递归层。
在特征序列中 x = x 1 , , x T x = x_1,,x_T x=x1,,xT,循环特征层为每一帧 x t x_t xt预测一个标签 y t y_t yt。循环层的优势有三个方面。
首先,RNN有很强的捕捉序列中上下文信息的能力。使用上下文线索进行基于图像的序列识别比单独处理每个符号更稳定、更有帮助。以场景文字识别为例,宽字符可能需要连续几帧才能完整描述(参见图2)。
此外,一些模棱两可的字符在观察它们的上下文时更容易区分,例如,通过对比字符高度比分别识别它们更容易识别“il”。
其次,RNN可以将误差微分反向传播到其输入端,即卷积层,从而允许我们在一个统一的网络中联合训练递归层和卷积层。
第三,RNN能够操作任意长度的序列,从头到尾遍历。
传统的RNN单元在其输入和输出层之间有一个自连接的隐藏层。每次接收序列中的帧 x t x_t xt时,它都会用一个非线性函数更新其内部状态 h t h_t ht,该函数将当前输入 x t x_t xt和过去的状态 x t − 1 x_{t-1} xt−1作为其输入: h t = g ( x t , h t − 1 ) h_t= g(x_t,h_{t-1}) ht=g(xt,ht−1)。然后基于 h t h_t ht进行预测。这样,过去的上下文 { x t ′ } t ′ < t \{x_{t'}\}_{{t'}
LSTM是方向性的,它只使用过去的语境。然而,在基于图像的序列中,来自两个方向的上下文是有用的,并且彼此互补。因此,我们按照[17]的方法,将两个一前一后的地表移动合成一个双向LSTM。此外,可以堆叠多个双向LSTM,从而产生如图3b所示的深度双向LSTM。深度结构允许比浅层次结构更高层次的抽象,并且在语音识别任务中实现了显著的性能改进[17]。
在循环层中,误差微分沿图3b所示箭头的相反方向传播,即沿时间的反向传播(BPTT)。在循环层的底部,传播的差分序列被连接成映射,将特征映射转换成特征序列的操作反转,并反馈到卷积层。实际上,我们创建了一个自定义网络层,称为“映射到序列”,作为卷积层和递归层之间的桥梁。
转录是将RNN的每帧预测转换成标签序列的过程。从数学上讲,转录是以每帧预测为条件,寻找概率最高的标签序列。在实践中,存在两种转录模式,即无词汇转录和基于词汇的转录。词典是一组受预测约束的标签序列,例如拼写检查词典。在词汇自由模式下,预测是在没有任何词汇的情况下进行的。在基于词典的模式中,通过选择具有最高概率的标签序列来进行预测。
我们采用Graves等人[15]提出的连接时序分类(CTC)层中定义的条件概率。基于每帧预测y = y1,,yT,为标签序列l定义概率,并且它忽略l中每个标签的位置。因此,当我们使用该概率的负对数似然L(y)=−log(y)作为目标来训练网络时,我们只需要图像及其对应的标签序列,避免了标记单个字符位置的劳动。
条件概率的公式简述如下:输入是序列y = y1…yt,其中T是序列长度。这里,每个 y t = R ∣ L ′ ∣ y_t=R^{|L'|} yt=R∣L′∣是集合 L ′ = L ∪ L'=L\cup L′=L∪上的概率分布,其中 L L L含任务中的所有标签(例如,所有英文字符),以及由表示的“空白”标签。在序列 π ∈ L ′ T π ∈ L'^T π∈L′T上定义了序列到序列的映射函数B,其中T为长度。B将 π π π映射到 l l l上,首先去掉重复的标签,然后去掉空白。例如,B将“-hh-e-l-ll-oo-”(“-”代表“空白”)映射到“hello”上。然后,条件概率被定义为由B映射到l的所有π的概率之和:
其中π的概率定义为 p ( π ∣ y ) = ∏ t = 1 T y π t t p(π|y) = \textstyle \prod_{t=1}^{T}y^t_{π_t} p(π∣y)=∏t=1Tyπtt, y π t t y^t_{π_t} yπtt代表的是在时间步t上的标签为 π t π_t πt的条件概率。直接使用公式1在计算上是不可行的,因为求和项的数量是指数级的。然而,可以使用[15]中描述的前后向算法有效地计算等式1。
在此模式下,序列 l ∗ l^∗ l∗具有等式1中定义的最高概率的被视为预测。由于不存在可处理的算法来精确地找到解决方案,我们使用了[15]中采用的策略。序列 l ∗ l∗ l∗由这个公式生成: l ∗ ≈ B ( a r g m a x π p ( π ∣ y ) l∗ ≈ B(arg max_πp(π|y) l∗≈B(argmaxπp(π∣y),在每个时间戳t上取最可能的标签 π t π_t πt,并将结果序列映射到 l ∗ l^∗ l∗上.
用 X = { I i , l i } X=\{I_i,l_i\} X={Ii,li}i表示训练数据集,其中 I i I_i Ii是训练图像, l i l_i li是真实标签序列。目标是最小化真实标签条件概率的负对数可能性:
式中, Y i Y_i Yi是由 I i I_i Ii的循环层和卷积层产生的序列。该目标函数直接从图像及其地面真值标签序列计算成本值。因此,可以在成对的图像和序列上对网络进行端到端的训练,从而消除了在训练图像中手动标记所有单个组件的过程。
该网络采用随机梯度下降法(SGD)进行训练。梯度由反向传播算法计算。特别是,在转录层,错误差异通过前向-后向算法进行反向传播,如[15]所述。在递归层中,通过时间反向传播(BPTT)计算误差差。
为了优化,我们使用ADADDelta[37]自动计算每个维度的学习率。与传统动量[31]方法相比,ADADELTA不需要手动设置学习速率。更重要的是,我们发现使用ADADDelta的优化比动量法收敛更快。
E2E train: 表示模型是否是端到端进行训练的,没有任何的预处理或通过几个独立的步骤,这表明对于训练来说是优雅干净的。
Conv Ftrs:说明模型是直接从训练图像中学习的卷积特征还是把手动特征作为基本表示。
CharGT-Free: 表示会不会用到字符级的注释。由于RCNN的输入和输出标签可以是一个序列,因此不需要字符级注释。
Unconstrainted:是不是限制在特定的词典上的。
ModelSize: 模型大小
本文讨论的主要问题是:自然场景下端到端文本识别和检测
本文的创新点是:
(1) 它是端到端可训练的,这与大多数现有算法的组件是分别训练和调整的相反。
(2) 它自然地处理任意长度的序列,不涉及字符分割或水平尺度归一化。
(3) 它不局限于任何预定义的字典,在无字典和基于字典的场景文本识别任务中都取得了显著的性能
(4) 它生成了一个有效但小得多的模型,这对于现实世界的应用场景更为实用。
创新点从何而来:
主要是从已有的论文中获得灵感,
本文的主要贡献是提出了一种新的神经网络模型,其网络结构是专门为识别图像中的序列状对象而设计的。所提出的神经网络模型被命名为卷积递归神经网络(CRNN),因为它是DCNN和RNN的组合。对于序列类对象,CRNN比传统的神经网络模型具有几个明显的优势:
因为传统OCR面临的许多困难,当时无法解决。不同功能模块独立难以实现端到端训练,需要精准定位字符BBOX且基于bbox分割字符,未使用CNN特征提取不充分,模型参数量太大难以落地,准确率不足
作者所提出的方法主要由以下几个好处:
理论论据:作者结合了CNN,LSTM,CTC三大部分来提出了一个模型,CNN层实现序列特征提取,LSTM层实现字符预测输出,CTC层实现输出与图像标签对齐。
实验论据:为了评估作者所提出的CRNN模型的有效性,作者分别在场景文本识别和乐谱识别上进行了标准实验,这两项都是具有挑战性的视觉任务。最后实验结果证明,CRNN的方法确实比当时已有的方法有效。
作者提出的CRNN网络,其鲁棒性不是很高。因为在如今自然场景文本识别下,不单单存在水平方向下规整的文本,还需要存在极端纵横比的文本
和弯曲文本,CRNN对于这类文本的识别效果并不是很好。
作者通过CNN、RNN和CTC不同的特性,在根据文本样本的特点从而将这三部分组合成一个网络。对于自己的研究来说,也可以通过这种组合的方式针对自己的数据的特点来进行创新。
其主要目的就是为了评估 CRNN模型的有效性。通过在如下几个方面进行比较
1)端到端可培训;
2)使用直接从图像中学习的卷积特征,而不是使用手工制作的特征;
3)在训练期间不要求字符的基本事实边界框;
4)不局限于预定义的字典(无约束);
5)模型大小(如果使用端到端可训练模型),由模型参数的数量来衡量(模型大小,M代表百万)。
来证明CRNN五个方面都具备,并且在模型大小方面比已有的端到端模型都小好多。
然后,从卷积层的分量产生的特征映射中提取特征向量序列,这是递归层的输入