赞
踩
标题:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
《一种基于图像的序列识别端到端可训练神经网络及其在场景文本识别中的应用》
作者:Baoguang Shi, Xiang Bai, Cong Yao
团队:NaN
时间:2015.07
在现实世界中,像场景文本、手写字体以及乐谱通常是以序列,识别这种序列目标通常需要系统预测一序列标签。序列识别一个独特的特性是目标的长度是任意的。但是,深度卷积网络(DCNN)只能用于解决固定输入与输出维度的问题,因此不适用于本文基于图像的可变长度的序列识别问题。为解决这个问题,一些尝试例如,首先检测单个字符,然后使用DCNN模型识别这些检测到的字符,DCNN模型使用标记的字符图像进行训练。这种方法通常需要训练一个强大的字符检测器来准确地检测和裁剪原始单词图像中的每个字符;其他一些方法将场景文本识别视为图像分类问题,并为每个英语单词分配一个类标签,但难以推广到其他类型的类序列对象。综上所述,目前基于DCNN的系统还不能直接用于基于图像的序列识别。
循环神经网络(RNN)就是为解决序列识别问题而设计的。RNN的优势之一是在训练和测试中都不需要序列对象图像中每个元素的位置。但是,预处理过程是极其重要的:将输入的目标图像转换为图像特征序列。预处理步骤独立于管道中的后续组件,因此基于RNN的现有系统无法以端到端方式进行训练和优化。
本文的主要贡献是一种新的神经网络模型,该模型的网络结构专门用于识别图像中的序列类物体。所提出的神经网络模型被命名为卷积递归神经网络(CRNN),它是DCNN和RNN的结合。
对于类序列对象,CRNN与传统神经网络模型相比具有几个明显的优势:
它是训练过程是端到端的,可以识别任意长度的文本序列,并且不局限于任何预定义的词库,生成一个有效且更小的网络模型。
CRNN的网络架构由三个部分组成,从下到上依次为卷积层、循环层和转录层。
卷积层用于从输入图像中提取特征序列;卷积层的输出作为循环层的输入,然后循环层为每一特征序列做预测,输出预测的标签序列;循环层的输出作为转录层的输入,最后转录层将循环层的输出标签序列转换为最终的标签序列,即去除冗余字符。
虽然CRNN包含CNN和RNN两种不同的网络结构,但是可被一个损失函数训练(CTCLoss)。
在CRNN中,卷积层由卷积层和最大池化层组成,去除了全连接层部分。在输入到网络之前,所有的图像都需要缩放到相同的高度。然后从卷积层分量产生的特征映射中提取特征向量序列,作为循环层的输入。具体来说,特征序列的每个特征向量在特征映射上按列从左到右生成。这意味着第i个特征向量是所有映射的第i列的连接,每列的宽度固定为单个像素1 pixel。
卷积层的架构基于VGG-VeryDeep架构。一共有四个最大池化层,但是最后两个池化层的窗口尺寸由2x2改为1x2,也就是图片的高度减半了四次(除以
2
4
2^4
24),而宽度则只减半了两次(除以
2
2
2^2
22),这是因为文本图像多数都是高较小而宽较长,所以其特征图也是这种高小宽长的矩形形状,使用1×2的池化窗口可以尽量保证不丢失在宽度方向的信息,更适合英文字母识别(如“i”和“l”)。
该网络不仅具有深度卷积层,而且具有循环层,这两者都很难训练。因此在5th和6th卷积层分别添加Batch Normalization层,加速网络的训练。
例如,输入图像为灰度图像;高度为32,这是固定的,图片通过 CNN 后,高度变为1;宽度为160,宽度也可以为其他的值,但需要统一,所以输入CNN的数据尺寸为 (1, 32, 160),输出尺寸为 (512, 1, 40)。即 CNN 最后得到512个特征图,每个特征图的高度为1,宽度为40。
从 CNN 模型产生的特征图中提取特征向量序列,每一个特征向量(如上图中的一个红色框)在特征图上按列从左到右生成,每一列包含512维特征,这意味着第 i 个特征向量是所有的特征图第 i 列像素的连接,这些特征向量就构成一个序列。
由于卷积层、最大池化层和元素激活函数在局部区域上操作,特征映射的每一列对应于原始图像的一个矩形区域图像(接受野),这样的矩形区域与从左到右的特征图上相应的列的顺序相同。特征序列中的每个向量都与一个接受域相关联,并且可以视为该区域的图像描述符。
CRNN正是将CNN这种深层输出特征转换为序列式的表达,来保持不变性以应对序列目标长度的变化。(将CNN的输出特征图转换为向量特征序列作为RNN的输入,RNN可以训练变长特征输入。)
CRNN的循环层是一个双向RNN,连接卷积层的输出。循环层对卷积层输出的每一个特征向量 x t x_t xt进行预测,输出 y t y_t yt即标签。循环层具有以下三个优点:
然而,传统的RNN存在梯度消失问题,这限制了它可以存储的上下文范围,增加了训练过程的负担。长短期记忆( LSTM)是一种专门为解决这一问题而设计的RNN单元。LSTM由一个记忆单元和三个Gate组成,即输入门、输出门和遗忘门。LSTM是定向的,它只能使用过去的上下文信息。然而,在基于图像的序列中,两个方向的上下文都是有用的,并且是相互补充的。因此,CRNN使用了双向LSTM。这种深层的LSTM结构可以获得更高级别的抽象特征,在语音识别任务上获得了显著的性能提升。
采用两层各256单元的双向 LSTM 网络:
通过上面一步,我们得到了40个特征向量,每个特征向量长度为512,在 LSTM 中一个时间步就传入一个特征向量进行分类,这里一共有40个时间步。一个特征向量就相当于原图中的一个小矩形区域,RNN 的目标就是预测这个矩形区域为哪个字符,即根据输入的特征向量,进行预测,得到所有字符的softmax概率分布,输出为 40 个长度为字符类别数的向量构成的后验概率矩阵。这是一个长度为字符类别数的向量,作为CTC层的输入。
在循环层中,误差微分沿图中所示箭头的相反方向传播,即时间反向传播(BPTT)。在循环层的底部,传播的微分序列被连接成映射,将特征映射转换为特征序列的操作反过来,并反馈到卷积层。
转录是将RNN所做的逐帧预测转换成标签序列的过程。从数学上讲,转录是在每帧预测的条件下,以最高的概率找到标签序列。在实践中,有两种转录模式,即无词典转录和基于词典转录。词典是一组标签序列,预测受其约束,例如拼写检查字典。在无词典模式下,进行预测时不需要任何词典。在基于词典模式下,通过选择概率最高的标签序列进行预测。
标签序列的概率采用Connectionist Temporal Classification(CTC)中定义的条件概率。在每帧预测
y
=
y
1
,
.
.
.
,
y
T
y=y_1,...,y_T
y=y1,...,yT的条件下计算标签序列l的概率。使用概率的负对数似然作为训练网络的目标时,只需要图像及其对应的标签序列,避免了标记单个字符位置的劳动。
条件概率公式如下所示:
p
(
l
∣
y
)
=
∑
π
:
β
(
π
)
=
l
p
(
π
∣
y
)
p(l|y)=\sum_{π:β(π)=l}p(π|y)
p(l∣y)=π:β(π)=l∑p(π∣y)
π
π
π表示一个可能标签序列,
l
l
l表示真实标签序列,
β
(
π
)
=
l
β(π)=l
β(π)=l表示将一个可能的标签序列映射为真实标签序列,
β
(
)
β()
β()表示映射函数,它用于去除冗余字符以及’-’ blank字符。
p
(
π
∣
y
)
=
∏
t
=
1
t
=
T
(
y
π
t
t
)
p(π|y)=∏_{t=1}^{t=T}(y^t_{π_t})
p(π∣y)=∏t=1t=T(yπtt),其中
y
π
t
t
y^t_{π_t}
yπtt表示t时刻预测标签为
π
t
π_t
πt的概率。
在无词典转录模式下,序列 l ∗ l^* l∗定义为有最高概率值。由于不存在可用的算法可以精确找到最高概率值的序列。论文使用了近似算法求得序列 l ∗ ≈ β ( a r g m a x π ( p ( π ∣ y ) ) ) l^∗≈β(argmax_π(p(π|y))) l∗≈β(argmaxπ(p(π∣y))),比如在时刻 t t t获得最大概率的 π t π_t πt,然后通过映射函数将标签序列映射为 l ∗ l^* l∗。
在基于词典的模式中,每个测试样本都与词典相关联。基本上,识别label序列可通过在词典中挑选最高条件概率的序列来实现。但是,词典一般都是比较大的,在大词典上进行完全查找将耗费很长的时间。因此采用无词典转录的方法来转录预测的标签序列通常是更接近真实标签序列的(在距离度量标准)。这允许仅在最近邻候选中查找,即
N
δ
(
l
′
)
N_δ(l^′)
Nδ(l′)。这里
δ
δ
δ是最大的度量距离(个人理解为threshold, 查找的label序列与ground truth label序列的距离应该小于或等于这个threshold),
l
′
l^′
l′是在无词典模式下从y转录的序列:
l
∗
=
a
r
g
m
a
x
l
∈
N
δ
(
l
′
)
p
(
l
∣
y
)
l^∗= arg\underset{l∈N_δ(l^′)}{max}p(l|y)
l∗=argl∈Nδ(l′)maxp(l∣y)
N
δ
(
l
′
)
N_δ(l^′)
Nδ(l′)可通过BK-Tree这种数据结构来高效查找,bk树是为词典离线构建的。然后通过查找与查询序列的编辑距离小于或等于δ的序列,对树进行快速在线搜索。
训练数据集表示为
χ
=
{
I
i
,
l
i
}
χ=\{I_i,l_i\}
χ={Ii,li},
I
i
I_i
Ii为训练图像,
l
i
l_i
li为真实标签序列。网络训练的目标是最小化基础真值条件概率的负对数似然:
O
=
−
∑
I
i
,
l
i
∈
χ
log
p
(
l
i
∣
y
i
)
O=-\sum_{I_i,l_i∈χ}\log p(l_i|y_i)
O=−Ii,li∈χ∑logp(li∣yi)
y
i
y_i
yi表示循环层输出的标签序列,这个函数用于计算输入图像和真实标签序列的损失值。因此,这个网络是在输入为图像和真实标签序列的端到端训练网络,省去手动标注输入图像的每一个字符的过程。
该网络采用随机梯度下降法(SGD)进行训练。梯度由反向传播算法计算。特别是,在转录层,误差微分通过前向-后向算法进行反向传播。在循环层中,采用时间反向传播(BPTT)来计算误差微分。为了优化,使用ADADELTA自动计算每维学习率。与传统的动量方法相比,ADADELTA不需要手动设置学习率,比动量方法收敛更快。
在Torch7框架内实现网络,并为LSTM单元(在Torch7/CUDA中),转录层(c++)和bk树数据结构(c++)定制实现。
使用ADADELTA训练网络,将参数ρ设为0.9。在训练过程中,为了加速训练过程,所有图像都缩放到100 × 32(测试图像的高度被缩放为32。宽度与高度按比例缩放,但至少为100像素)。训练过程大约需要50个小时才能达到收敛。
在没有词典的IC03上,平均测试时间为0.16s/sample。将近似词典搜索应用于IC03的50k词典,参数δ设为3。测试每个样本平均需要0.53秒。
E2E Train:端到端可训练。
Conv Ftrs:直接从图像中学习的卷积特征,而不是使用手工制作的卷积特征。
CharGT-Free:在训练过程中不需要为角色设置真实边界框。
Unconstrained:不局限于预定义的字典。
Model Size:模型大小(如果使用端到端可训练的模型),通过模型参数的数量来衡量(模型大小,M代表百万)。
准确率 Accuracy:所有的预测正确(正类负类)的占总的比重。
提出了一种新的神经网络架构——卷积递归神经网络(CRNN),融合了卷积神经网络和递归神经网络的优点。CRNN能够接受不同维度的输入图像,并产生不同长度的预测。它直接运行在粗糙的标签上,在训练阶段不需要对每个单独的元素进行详细的注释。此外,由于CRNN放弃了传统神经网络中使用的全连接层,它产生了一个更紧凑和高效的模型。所有这些特性使CRNN成为基于图像的序列识别的一种优秀方法。
在场景文本识别基准上的实验表明,与传统方法以及其他基于CNN和RNN的算法相比,CRNN取得了优越或极具竞争力的性能。这证实了所提算法的优越性。此外,在光学音乐识别(OMR)的基准测试中,CRNN显著优于其他竞争对手,验证了CRNN的通用性。
实际上,CRNN是一个通用框架,因此它可以应用于其他涉及图像序列预测的领域和问题。进一步加快CRNN的速度,使其在实际应用中更具实效性,是未来值得探索的另一个方向。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。