刘业鑫, 卜 巍, 邬向前
(1 哈尔滨工业大学 计算机科学与技术学院, 哈尔滨150001; 2 哈尔滨工业大学 媒体技术与艺术学院, 哈尔滨 150001)
对自然场景中的文本进行检测,是计算机视觉方向中一项颇具挑战性的研究课题,并广泛应用于各种识别系统、导航系统、图像检索系统等等,其目的是对于一张给定的自然场景图像,检测其文本区域所在的区域,一般采用矩形或多边形边界框进行表示。传统的光学字符识别方法对于扫描文档的字符检测识别能够取得很好的效果,但面对自然场景图像,由于其背景区域过于复杂,且文本含有不同的颜色、尺寸、方向、字体,效果并不理想,分析原因后可做阐释解析如下。
(1)大部分的OCR方法都是针对扫描文本来做出设计的,能够很好地区分出文字像素和背景像素,由此得到文本区域,而对于自然场景,背景复杂,就会比扫描文本困难许多。
(2)自然场景中的图像,其成像的条件非常多,对于文本区域来说,含有更多的噪声,如颜色影响、模糊、遮挡等。
(3)传统的OCR检测的图像布局简单、且有结构,容易划分,而自然场景图像中的文本只占很少一部分,而且其位置和形状都不存在容易进行划分的结构。
近些年来,由于深度学习的快速发展,各种目标检测方法陆续涌现,与此同时文本检测的方法也基于通用目标检测在探索中持续不断地寻求改进与突破。本文中,对于自然场景中的各种文本区域,采用了基于文本中心线和文本宽度的表示法,并通过一个卷积神经网络进行学习,最终能够检测自然场景中的水平、倾斜和弯曲的文本区域。文中拟对此展开研究论述如下。
时下,文本检测已然成为学界的热门研究课题。但迄今为止推出的大部分研究都是基于通用目标检测进行的,这些方法在基本的目标检测的基础上,可以分为3种类别。对此可得研究概述如下。
(1)基于字符的检测方法。通过检测单个字符,这类方法大多采用滑动窗口或其他的候选区域提取方法进行检测,再将其分组、且合并成单词,后处理的合并算法也会影响到检测器的性能。
(2)基于单词的检测方法。直接检测单词区域,该方法通常直接采用一些深度神经网络的结构进行检测,并针对文字检测进行相应的优化。
(3)基于文本行的检测方法。考虑某些语系、如汉语等语言,由于不存在明显的空格区分,因此采用直接检测整行长文本来进行检测,某些方法也采用了图像分割的方式进行检测。整体研究内容详见如下。
目前的基于深度学习的目标检测方法,可以分为2类,即:两阶段的检测方法和一个阶段的检测方法。其中,两阶段的检测方法,就是在第一阶段产生一个候选目标框的集合,在第二阶段对产生的大量目标框进行分类,并通过滑动窗口等方式来优化候选框的位置坐标值。此方法从 RCNN[1]开始即已进入广泛应用、做出各类改进。Faster-RCNN[2]在第一阶段通过一个轻量级的神经网络预测滑动窗口的边界和得分这两个要素,继而提出的特征金字塔结构[3]和多尺度检测方法[4-5],同样进一步地提升了两阶段检测器的性能,并广泛应用在各种检测器中。而与两阶段的检测器相比,单一阶段的检测器没有预先生成候选框的阶段,只通过一个单独的深度卷积神经网络,一次性得到预测的边界框和类别分数。大部分的单一阶段检测方法[6-7]都依赖于预先设定的Anchor Box来枚举出目标的可能位置,相比2个阶段的检测方法,单一阶段的检测方法网络更加简单,速度更快。
在深度学习出现之前,自然场景文本检测的主要方法是基于手工特征的自底向上的方法,主要使用各种手工提取的特征、如 MSER[8]和 SWT[9]。目前基于深度学习方法的文本检测方法是近年来日趋流行的一种新方法,并取得了很好的效果。其良好的检测结果大多得益于通用目标检测方法的发展,如基于RCNN[2]的方法、基于SSD[6]的方法、以及基于FCN[10-11]的方法等等。
虽然现如今通用的目标检测方法在大部分环境下能取得较好的效果,但若将通用的目标检测方法应用于文本检测,还将面临一定挑战,对此可表述为:
(1)单词或是文本行的长/宽比往往比一般的对象要大得多,一些基于 R-CNN或 YOLOv3、SSD等方法的文本检测器,由于需要基于Anchor Box进行检测,对于Anchor Box的手工设计存在一些困难。
(2)一些非拉丁语族文本的单词之间没有空格,因此边界框的长/宽比会非常大,对通用的目标检测来说更加困难。
(3)文本具有一个明确的方向性[12],对于后续很多处理,候选框是否能够精确地拟合文本区域则至关重要,而大多数的目标检测方法却未曾考虑到方向角度的问题。
近年来,随着深度学习的发展,全卷积神经网络在语义分割、显著性检测、关键点检测、目标计数等方面取得了不错的结果。但对于目标检测方面,大多方法都是非纯卷积神经网络的,这与 Anchor Box的使用有关。根据检测回归这两个步骤,基于Anchor Box 的检测方法可以分为2类,即两个阶段的检测方法与单一阶段的检测方法。
两阶段的目标检测方法、如 Faster R-CNN,会在生成大量建议的候选目标框后,再在这些候选中执行后期的分类和回归操作。相比于两阶段的检测方法,单一阶段的方法、如 YOLOv3 和 SSD,去除了生成建议候选区域的步骤,使用一个卷积网络同时进行分类和回归。并达到了与两阶段检测方法相近的精度,且在速度上更占有优势。
前述的2类检测方法目前已经跻身主流研究行列,并在各种方面的应用中有着出色表现。但这种基于 Anchor Box 的方法的不足也不容忽视,对此可阐释为:关于Anchor Box 的尺寸、长/宽比、以及数量这些需要手工调节的超参数的设置对检测结果的影响很大。同时,由于 Anchor Box 的尺度以及长/宽比是固定好的,因此如果遇到某些长/宽比变化较大的物体,如本课题中的自然场景文本,就不能很好地进行检测,并且对于一些小物体的检测效果也未臻理想。
基于此,不使用Anchor Box的检测方法就应运而生,不使用预先定义的Anchor Box,而是直接进行整张图上的目标检测。YOLO[13]使用全连接层将网络的最终特征图转换为类别的置信度以及边界框的偏移,DeNet[14]采用预测物体四个角点的位置来生成边界框,DenseBox[15]采用FPN网络,在图像的所有像素上进行类别分数的预测以及候选框位置的回归,CornetNet[16]同样采用了FPN的网络结构,预测目标物体的左上角与右下角,并对两类角点进行分组匹配。
综上论述可知,本文将对文本区域进行检测,通过预测文本中心线像素点的位置以及每个像素处的文本宽度对单词或文本行进行预测。由于摆脱了预定义的 Anchor Box 的束缚,减少了需要设置的超参数,也不需要计算IOU,有利于训练,同时基于中心线的预测方法,不仅可以预测水平文本和倾斜文本,也可以预测一些不规则的文本如弯曲、环状的文本,如图1所示。本方法在ICDAR2013、ICDAR2015、以及MSRA-TD500 数据集上均取得了非常好的结果。
图1 各种类型的文本区域
本研究通过检测文本中心线的位置的方法来进行文本区域的定位,并通过学习中心线处像素所在文本区域的宽度来扩展中心线,以获得最终结果。本检测方法的设计流程如图 2 所示。输入图像将经过特征提取模块,受到 FPN 的启发,将低层次的特征与高层次的特征进行融合,从而得到5张不同尺度的特征图,而后再将特征图进行连接,得到一张最终的特征图,输入到接下来的检测模块中。
图2 文本检测流程图
本方法使用的网络结构如图3所示。图3中,其左侧的骨干网络采用了一个在 ImageNet[17]上训练的标准的卷积神经网络,如 ResNet - 50、DenseNet、MobileNet等等。参考FPN的研究思路,实验中将骨干网络的卷积层划分为5个部分,并将后续的高层次特征与前面的低层次特征融合,由此得到一系列的特征图,再根据其特征图的尺度进行划分,分别是原图向下采样2倍、4倍、8倍、16倍、32倍。同时将这些特征图上采样到原图的尺寸,也就是分别扩大2倍、4倍、8倍、16倍、32倍,紧接着经过一个串联操作,得到最终输入到检测模块的特征。
图3 文本检测网络结构
近年来,卷积神经网络在文本检测方面取得了很大的成功。目前基于边界框回归的方法,大多数采用基于通用目标检测的方法,但由于文本的长/宽比的方向不全是水平的,也有一些弯曲的不规则形状文本,其回归的矩形框会包含大量背景区域,对于后续的识别任务影响很大。最近关于弯曲文本的流行处理策略是基于语义分割的方法。对于给定的图像,进行逐像素的分类,确定像素级的文本区域。尽管这种基于像素的检测方式可以检测任意角度的文本区域,但对于相邻的文本区域无法做到更细致的划分。因此本方法采用了检测文本中心线和文本区域相结合的方式,利用文本中心线确定文本区域的位置和数目,同时也可以利用大的文本区域过滤掉一些被误检测为中心线的区域。
经过2.2节的特征提取模块,可以得到一张与原图尺寸相同的融合后的特征映射图。在检测模块中,首先采用一个3×3的卷积层将特征通道数降至256个,然后将该特征映射图输入到接下来的检测模块的3个1×1的卷积层(如图3右侧所示)中进行最终的文本检测。总地说来,第一个卷积用来检测所有文本区域,第二个卷积用来检测文本中心线区域,第三个卷积用来得出文本中心线处的壁画宽度。
网络采用端到端的方式进行训练,损失函数主要包含分类损失和文本宽度的回归损失两部分。其运算公式可写作如下数学形式:
L=Lcls+λLreg,
(1)
Lcls=λ1Lcls1+λ2Lcls2.
(2)
其中,分类损失又包含2部分,对应2个分类的检测,采用交叉熵损失函数。回归的损失则采用平滑L1损失函数。
通过前面两个模块,研究可以得到文本中心线的位置以及中心线上每个像素点对应的文本区域的宽度值,也得到了一个包含所有文本区域的图。在此之后,就需要将这些数据整合成最终的文本区域。
首先,去除一些被误认为是文本区域的中心线区域,也就是检测为中心线的像素点,若不在文本区域中,可直接丢弃,剩余的则作为最终得到的文本中心线。由于检测结果的宽度不止一个像素,因此将其收缩为单像素的一条曲线,使用 OpenCV 进行曲线拟合,对于曲线上的点,等距离地将其划分为k段,每段的距离记为L,对于每个端点,将其附近的L个曲线上的宽度值取平均,作为该点的宽度,继而得到将k+ 1个像素点上的宽度值对应的边界点坐标值,将这些边界点顺时针相连,即为最终的文本区域。
(1)ICDAR 2013。 该数据集与 ICDAR 2011 很接近,包含 229 张训练图像与 233 张测试图像,图像较清晰,且只包含水平方向的文本,因此其标注信息只含有左上角和右下角两个点。
(2)ICDAR 2015。 该数据集来自 ICDAR 2015比赛的挑战4,包含1 000张训练图像与500张测试图像,这些图像由谷歌眼镜采集得到,其分辨率较低,且包含很多方向的文本,其标注信息采用了文本区域的4个边界点表示。
(3)CTW 1500。 该数据集包含1 000张训练图像与500张测试图像,这些图像的文本区域大多是弯曲的,每张图都含有至少一个弯曲文本区域,因此其标注方式与前面的数据集有所不同,由含有14个顶点的多边形区域标注。
数据预处理的主要操作就是标定中心线位置的像素,以及每个中心线位置文本区域的宽度,而各数据集有着不同的标注方式,因此不同数据集的预处理方式有所不同。
由于只检测一个像素宽度的中心线存在许多干扰因素,以及线的断点等会对检测结果造成影响,因此采用中心线附近的一个小区域的像素作为训练目标。具体的宽度设定为文本宽度的四分之一。
对于ICDAR2013等水平数据集,数据集中文本都是水平的,其标注方式仅需要其左上角和右下角的坐标值,从而求出水平矩形框的长和宽,很容易地得到文本区域的中心线。而中心线像素值对应的文本宽度即为水平矩形框的宽度。
对于 ICDAR2015等多方向文本数据集,其标注信息为左上角、右上角、左下角、右下角四个端点的坐标值。根据其左侧两点的坐标,可以得到左边的中点位置,同理,根据其右侧两点的坐标,可以得到右边的中点位置,从而确定中心线的位置。在中心线位置的像素上做一条垂直于中心线的法线,会和上下边界交于两点,计算这两点的距离,作为文本区域的宽度值。
对于更加复杂的数据集、如CTW 1500,由于其文本区域为弧状或曲线,就在标注方式上采用了多个点构成的多边形框来逼近文本区域。因此需要先确定文本的两端,这里对此算法可概述为:从一个端点开始,按照顺时针方向遍历所有端点,得到一个由所有端点构成的循环列表,对于每个端点有2个角度方向。一个是从此端点指向下一个端点的“出”方向,另一个是从此端点上一个端点指向该端点的“入”角度,而位于文本两端位置的2个端点,按上述列表序记为A B,A点的“入”角度与B点的“出”角度一般来说会接近180°。基于上述条件,可以确定2个边界的线段。确定了左、右边界的线段后,再将剩余的线段分为上边界和下边界两组,依据其长度对上、下边界进行等距离划分,将划分后的相对应的上、下两点进行连接,作为区域的宽度,并将这些连接的中点串联起来,作为文本区域的中心线。
评价指标采用经典的评价方法,包含着3个值,分别是:检测精度(P)、检测召回率(R)、以及综合指标(F),数学计算公式可表示为:
(3)
(4)
(5)
其中 ,TP表示检测正确的文本区域数量;FP表示标识错误的文本区域数量;FN表示未检测到的文本区域数量。
对于文本检测任务而言,如果检测到的文本区域与标定的文本区域之间的IOU 大于给定的阈值,该阈值在实验中设为0.5,将视为该文本区域被正确地检测到。此外,还将采用一个综合指标来得到一个综合了检测精度与检测召回率的运算值。
实验在上述的3个公开数据集上进行训练和测试,采用精度、召回率以及综合指标进行评价,其评价结果见表1~表3。
表1 在ICDAR2013数据集上的评价结果
表2 在ICDAR2015数据集上的评价结果
表3 在CTW1500数据集上的评价结果
由表1~表3的结果分析可知,在ICDAR 2013水平文本检测数据集上,本方法的F值和精度都优于先前的方法。对于ICDAR 2015倾斜文本数据集,本方法与当前最好的方法数据上较接近,在召回率上高于主流方法,且对小文本区域得到了良好检测效果。对于 CTW1500 弯曲文本数据集,其F值依然优于先前的方法,足以证明该方法针对不同类型的文本区域进行检测的有效性。部分检测结果如图4所示。图4中,第一列为水平文本区域,第二列为倾斜文本区域,第三列包含弯曲文本区域。
图4 部分检测结果
本文提出了一种全新的自然场景文本检测方法,以及新的自然场景文本表示方法,通过采用文本中心线的检测方法,相较于之前的矩形框回归表示的方法,能够更贴合文本区域,去除更多的背景干扰区域,因此能够检测各种形状的文本区域,对弯曲文本也能够做到很好的检测。此外,对后续的识别等操作也有一定的好处。本方法在3个公开数据集上进行测试,证明了该方法的有效性和准确性。对于未来的工作,将会继续优化文本表示以及后处理,以提高效率。