高刘雅, 孙 冬, 高清维, 卢一相, 黄志祥, 吴 丹
(1.安徽大学 电气工程与自动化学院,安徽 合肥 230601;2.安徽大学 计算智能与信号处理教育部重点实验室,安徽 合肥 230601;3.安徽超远信息技术有限公司,安徽 合肥 230088)
文本检测是文本识别的前提条件,许多传统方法[1~3]在文本检测任务上采用的都是bottom-up的纵向检测,先检测目标图像中的字符,再将字符串成最终要标注的文本线,因为简单低级的字符更容易被准确识别出来。文献[4]中指出,文本检测的难点在于非字符组件的过滤以及进一步验证检测到的文本行的准确性。在复杂场景下,文本语言的多样性以及文本字符排序的多层次化、文本行的方向性、手工设计特征等因素都使得文本检测的鲁棒性和可靠性较低。正如文献[3]中所述,目前流行的bottom-up场景文本检测方法会在复杂模糊的场景下逐渐累积检测中的错误,降低最终的准确性。针对上述问题,近年来提出了许多基于深度学习的技术方案,它们从边缘[5]、手工特征提取[6]、文本字符置信度[7]等角度分别对传统目标检测方法进行了改造,极大地提升了复杂背景下图像中文本检测的准确率。论文根据2016年Tian Z等人[8]提出的 CTPN文本定位检测原理,在预处理阶段引入两帧相减的帧间差分法[9],并通过加入非极大值抑制(non-maxima suppression,NMS)算法进一步精简检测框,提升检测效果。从对比实验的结果看,改进的CTPN文本检测在驾驶证打印过程中的文本信息检测上用时更短,效果更加鲁棒。
基于CTPN模型,本文首先在预处理阶段引入两帧差分法,对打印的驾驶证图像进行差分运算去除背景,帧间差分差法的优点在于不受拍摄过程中微弱的光照变换的影响;其次,采用VGG—16网络的前5个卷积层输出作为图像的特征,并在第5个卷积层上使用基于滑动窗口的方法,检测图像中字符的候选区域;最后,引入NMS算法对文本行进行细化分割,提高检测的精度。
CTPN[8]是针对水平或微斜的文本行提出的文本检测方法,驾驶证的文本打印严格遵循水平排序,同一文本行的每个字符间可以互为上下文,训练模型时检测模型就会自动学习上下文之间的统计规律,以提高预测阶段的准确率。
CTPN模型在提取局部图像特征时,采用经典的VGG—16作为基础网络,其拥有的5个卷积段通过卷积层之间的参数共享和局部连接减少整个网络的计算参数量,不包含全连接的VGG—16网络模型示意如图1所示。
图1 VGG—16网络模型的前5层结构示意
网络使用前5个卷积(Conv)层即可进行深度特征的提取,每个卷积层后接入最大池化(max pooling)层,其中前4层均采用3×3的卷积核和2×2的最大池化层,卷积层不改变输入矩阵的大小,但加深了矩阵的深度,可以获取更多的特征;最大池化层用于缩小图片尺寸,将长宽变为1/2,可以认为是降低了图像分辨率,减少了网络的参数。
本文提取第5个卷积层作为待检测图像的特征,Conv_5后不再接入最大池化层,而是设计一个循环神经网络(RNN)层,将Conv_5上的滑动窗口产生的每个特征作为下一节点的连续输入,同时提出加入双向LSTM(BLSTM)层提取文本序列的上下文特征,BLSTM的双向链式结构可以遍历许多遗漏文本,减少了文本检测的错误。BLSTM的网络结构如图2所示,是一个无环图,网络的输出既考虑前一刻因素的影响,也考虑下一刻因素的影响,更能适应长度不同的文本序列,使算法更具鲁棒性。
图2 BLSTM网络结构
BLSTM网络建立在RNN层的LSTM结构基础上,通过双向链式连接形式构成,整个结构形成一个无环图,由下到上含有4个层,前向传播层与反馈传播层分别经过正向(0时刻到t时刻)计算和反向(t时刻到0时刻)计算保存每一时刻隐藏层的前向输出和反向输出,最终,在输出层输出每个时刻的结果为前向传播和后向传播的并行计算,表达式如下
y2=g(VA2+V′A′2)
(1)
A2=f(WA1+UX2)
(2)
(3)
如图3所示,CTPN模型使用VGG—16网络的5段卷积作为前端输入,并在Conv_5后输出特征图,大小为W×H×C,其中,C为特征图的个数;该网络结构中Conv_5后不再接max pooling层,而改用3×3的滑动窗口在获得到的特征图上进行特征提取;接着通过RNN层,利用RNN层中的双向LSTM结构继续学习上下文特征,输出一个W×256的结果到全连接层(FC)进行预测,最终输出3个预测结果的参数,分别是2k个纵向坐标y的值,2k个分数,k个文本框优化时产生的水平偏移量x。
图3 CTPN模型结构
改进CTPN算法相对于其他文本检测方法的创新性在于,对文本框的处理上。不是先画出Anchor,再对所有Anchor做回归;而是通过预处理,用(Xmin,Ymin,Xmax,Ymax)来表示每个图片上Anchor的位置坐标。先将每个Anchor划分成N个宽度固定(width=16)的子区域,对每个子区域进行预测后再合并,得到最后的文本框位置。该方法减少了传统方法里尺寸较大的Anchor对文本的漏检,引入NMS算法后的CTPN的可视化过程如图4所示。
图4 检测输出可视化过程
图4(a)检测出来的原始文本框相互交叉,产生很多重复检测,增加了运算量;图4(b)引入NMS算法,去掉Detection中得分较低且重复的检测框,检测框精简许多;对小区域检测框进行预测回归后,得到图4(c)的输出结果,检测框整行分割显示;调参后,文本框的检测精度进一步提高。
由于该网络输出3个预测结果参数,因此,CTPN损失函数主要包括三部分,即分类误差、坐标误差以及边缘修正误差
(4)
本次实验中,使用MSRA_TD500数据集训练网络,该数据集包含众多随机拍摄的街景图,具有相对复杂的背景,但文本位置清晰。训练过程中的Loss曲线变化如图5所示,随着Batch的增大,网络的Loss值逐渐下降,当Batch值达到600时,损失函数收敛趋于稳定,模型的整体损失较小,具有较好的稳定性。
图5 Loss变化曲线
本文使用3种不同的文本检测方法(MESR,EAST,CTPN)验证所提方法的优越性,检测效果如图6所示。
图6 不同方法检测结果
对比实验结果表明,MSER文本检测方法[10],即使引入了NMS算法,对于包含多类型文本的图像,检测效果不是很理想;EAST文本检测方法在驾驶证的打印文本识别中,不能完整获取更多长文本信息,输出的文本框预测效果不具有鲁棒性,且多语言背景下的文本检测丢失了驾驶证中的重要信息(如驾驶人照片下的身份证号信息);相比之下,CTPN文本检测方法在水平方向含长文本行时,具有更完整的检测输出。进一步分析,改进后的CTPN的方法对打印的驾驶证进行文本检测时,能够更好地查找定位图片中的信息,而且对于不同位置、不同大小的字符,该算法能自动调整输出的文本框的尺度,漏检概率低,几乎可以检测出图像中所有的关键信息,本实验中对于处理后图像的平均检测速度只需0.87 s。
为了验证本文所提算法对驾驶证打印文本的信息检测的有效性,实验选取多张模拟打印驾驶证信息页,以其中一个样本为例(分辨率为3 120像素×4 160像素)进一步分析。首先,对打印的驾驶证做背景擦除,因为检测的目标是打印的文本信息,所以,去除模板背景中的纹理和字符是提高检测速度的关键。如图7所示,两个输入分别是打印之前采集的图像和打印结束后采集的图像,两帧图像时间间隔短,空间位置相同,做帧间差分后的图像即只保留打印的文本信息,所有图像均放入测试集。
图7 帧差预处理流程框图
然后,同时对测试集内各类图像做CTPN文本检测,比较图8中处理前和处理后的图像,发现原始图像中的噪声干扰对检测结果影响较大,顶部标注的文本框有交叉现象,且检测时间久;通过滤波后,识别精度有所提升,但红色公章部分的文字没有被单独识别出来;引入帧间差分后,驾驶证的背景纹理和原始字符可以有效地去除,虽然帧差后的图像像素值较低,但在CTPN算法下的检测精度很高。
图8 文本检测结果对比
本文记录一系列该过程的处理时间,并以运算时间的平均值作为最终指标,检测结果如表1所示,帧间差分后的图像在检测时间上取得了有效的提升。
表1 文本检测时间
本文针对驾驶证打印文本的特点,提出引入帧间差分和NMS算法的CTPN文本检测方法,改进后的方法去除了纹理、原始字符对待检测文本的干扰,提高了算法的鲁棒性。对比原始检测方法,帧间差分后的弱文本图像的信息完整度不变,但检测速度更快,该方法对于自助驾驶证打印系统的优化有很大的参考价值。文中对于换行打印的长文本内容,本文检测方法输出上下平行的两个文本框,没有自动识别文本的上下文连续性,该不足之处还有待进一步分析形成原因,下一步将继续对此进行研究,改善检测的精度。