【技术白皮书(2)】第三章第一节:常用的文本检测与识别方法

3 .常用的 文本 检测与识别方法

3 . 1 文本 检测方法

随着深度学习的快速发展,图像分类、目标检测、语义分割以及实例分割都取得了突破性的进展,这些方法成为自然场景文本检测的基础。基于深度学习的自然场景文本检测方法在检测精度和泛化性能上远优于传统方法,逐渐成为了主流。图1 列举了文本检测方法近几年来的发展历程。目前,根据检测文本对象的不同可以将基于深度学习的方法划分为基于回归的文本检测方法和基于分割的文本检测方法两大类,不同类别方法的流程如图所示。

3 . 1 .1 基于回归的场景文本检测方法

基于回归的自然场景文本检测方法主要是基于以深度学习为基础的目标检测技术或者实例分割技术,它将文本视为一种通用目标然后直接检测出整个文本实例。此类方法通常是直接回归出水平矩形或者多方向的任意形状多边形以解决文本检测的问题。

早期的这类文本检测方法基于传统滑动窗口方法的思想,只是在对滑窗进行文本和非文本分类的时候使用CNN 提取的特征而不是人工设计的特征(Wang 等,2012;Jaderberg 等,2014)。虽然能提高分类性能,但计算量大以及适用范围窄(大部分只能处理水平方向文本)的问题依旧没有解决。在基于深度学习的目标检测和分割等技术的突破性进展的同时,这些方法也为自然场景文本检测提供了新的思路。基于深度学习的基于回归的自然场景文本检测方法可分为两阶段和单阶段的方法。

1)两阶段检测方法。两阶段的方法主要是借鉴了Faster R-CNN(region CNN),R-FCN(region-based fully convolutional network)以及Mask R-CNN和FCI(fully convolutional instance-aware semantic segmentation)等系列两阶段目标检测和分割算法的思想,针对文本不同于通用目标的表现形进行专门的改进,使之能在文本检测领域取得更好的检测性能。Jaderberg 等人(2016) 首先借鉴了R-CNN 框架,利用了EdgeBoxes和聚合通道特征(aggregate channel feature, ACF)等候选区域提取算法,得到单词级别的文本候选区域;然后通过随机森林(random forest)对候选区域进行文本和非文本分类以过滤背景区域,得到的文本候选区域最后通过一个CNN 对边界框回归,得到最终的检测结果。该方法虽然取得了当时不错的性能,但由于各模块是单独优化的,容易造成误差累积,而且EdgeBoxes 和ACF 提取候选区域时都会存在计算量大的问题。针对这些问题,受Faster R-CNN 的启发,Zhong 等人(2017)提出的DeepText 是第一个把该目标检测算法成功应用到自然场景文本检测的工作。该工作使用了基于感知( inception) 模块(Szegedy 等,2015)的区域生成网络(inception region proposal network, Inception-RPN)来代替传统的候选区域提取算法(EdgeBoxes 等),大大提高了候选区域的提取效率和质量。

然后再通过Fast R-CNN 网络对文本候选区域做更准确的回归和分类,得到最后的检测结果。但是由于Faster R-CNN 只能预测水平矩形框, 因此DeepText 也无法处理多方向以及不规则文本的自然场景文本检测问题。为了适应文本的不同表现形式,更多的学者基于Faster R-CNN提出了不同的解决方法。Jiang 等人(2018)提出的R2CNN(rotational region CNN)为了适应文本的长宽比和方向(水平和竖直),首先使用了多尺度的感兴趣区域池化(region of interest pooling,RoI-Pooling)操作,增加了特征尺寸,然后在Fast R-CNN 中额外增加了一个分支预测旋转的矩形以及一个针对倾斜框的非极大值抑制后处理算法以解决多方向文本的检测问题。Ma 等人(2018)同样也指出应该用旋转矩形替代水平矩形来进行文本检测。作者提出了旋转候选区域生成网络(rotated region proposal network,RRPN),结合旋转矩形的锚点框(anchor)来生成倾斜的文本候选区域。然后设计了旋转感兴趣区域池化(rotated region of interest pooling,RROI Pooling)算法为每个倾斜的候选区域从卷积特征图中提取固定尺度的特征以进一步地进行文本和非文本分类。考虑到将Faster R-CNN 用于文本检测时,矩形锚点框与文本的形状相差过大,会导致区域生成网络(region proposal network,RPN)在生成文本候选区域时效率不高,鲁棒性也不强,Zhong 等人(2019)因此借鉴了DenseBox(Huang 等,2015) 的思想,提出了不需要锚点框的区域生成网络(anchor-free region proposal network, AF-RPN)。AF-RPN 通过特征图上的滑动点与原图文本中心区域的映射关系来确定特征上的文本滑动点,对于每个这样的滑动点,AF-RPN 都会预测其对应的文本边界框位置,从而可以不需要复杂的锚点框计算,直接生成高质量的文本候选区域。

上述方法都是主要针对水平和多方向四边形文本而不能检测任意形状(如曲线) 的文本。因此,Liu 等人(2019b) 用14 个点描述不规则文本,在R-FCN 的基础上改进了文本边界框回归模块去预测这14 个顶点的位置坐标,并通过循环神经网络(recurrent neural network, RNN)对候选区域提取的特征进行上下文信息的增强以提高文本检测精度。考虑到之前的方法对于不同形状的文本需要不同数量的点来描述,Wang 等人(2019h) 提出使用RNN去自适应预测不同形状文本实例所需要的多边形顶点数目,并将这个模块结合到Faster R-CNN 中,提高了整个模型的灵活性。Liu 等人(2019d)提出了条件空间膨胀(conditional spatial expansion, CSE)模块,将不规则文本检测构造成区域膨胀问题,依靠CNN 提取的区域特征和已融合区域的上下文信息进行进一步区域融合得到完整的检测结果。Wang等人(2020d)同样是基于Faster R-CNN 设计了自适应区域生成网络(Adaptive-RPN)生成更加准确的文本候选区域,然后增加了一个额外的分支去进行候选区域的文本轮廓检测以抑制误检情况,极大提高了检测精度,同时也能适应任意形状的文本检测。以上文本检测方法主要是基于主流的两阶段目标检测器Faster R-CNN。由于文本方向和形状的复杂性,它通常需要设计回归更多的顶点去描述那些多方向以及不规则的文本,这可能会带来误差累积以及额外的计算量。而Mask R-CNN 和FCIS 在实例分割领域取得了很大的进步,通过边框或边界点回归预测和像素分类相结合的思路也可以对任意形状的文本进行更方便地描述。Dai 等人(2018)便是借鉴这样的思想,预测了文本候选区域的文本实例像素级掩码后, 通过基于掩码的非最大值抑制(mask non maximum suppression, Mask-NMS)得到更准确的任意形状文本检测框。Yang 等人(2018)也是类似的做法,基于FCIS 的框架通过Inception-Text模块和可变形ROI 池化模块去处理多方向的文本。Xie 等人(2019a)同样是为了解决弯曲文本检测的问题,在Mask R-CNN 的基础上增加了一个文本语义模块以及文本区域敏感的重打分机制以抑制误检的问题。Xiao 等人(2020)考虑到普通卷积对不规则文本的采样效率偏低,在Mask R-CNN 中嵌入了序列变形模块(sequential deformable module,SDM),它能沿着文本方向进行特征采样,此外通过一个Seq2seq 模型对采样过程进行限制,使之能更准确地检测不规则文本。Liu 等人(2019c)则是为了解决数据标注顺序歧义性的问题,提出了包围盒分解网络(box discretization network, BDN),将四边形标注框的点顺序分解成由顺序无关点组成的关键边,并通过匹配类型学习从学习到的关键边中重建四边形检测框。如图3 所示,整个网络也是基于Mask R-CNN 进行搭建,这样可以更好地处理任意方向的文本,不过对于不规则文本,BDN 并不能进行很好地检测。Liu 等人(2019a)则是考虑到若将文本检测视为实例分割问题,采用的分割标注是直接根据文本框得到,这会使得部分背景像素被划分为正样本,从而增加训练的噪声,导致训练不稳定。于是舍弃Mask R-CNN 中简单的(0,1)二值预测方案,根据文本中心点到边界的距离为像素分配[0,1]中的值作为弱标签进行训练,减少了文本边界错误标注像素带来的训练噪声,从而提高文本的检测性能。

2)单阶段检测方法。除了上述RCNN 系列的两阶段检测器,很多单阶段的目标检测器如YOLO(you only look once) 系列(Redmon 等,2016; Redmon和Farhadi,2017) 和SSD(single shot multibox detector)(Liu 等,2016a)也被学者们应用于自然场景文本检测。Gupta 等人(2016)基于YOLO 模型,对不同尺度的图像使用全卷积网络(Long 等,2015)定位文本的位置。基于SSD 的方法则有以下的一些工作。如图4 所示,Liao 等人(2017)提出了Text-Boxes,该算法针对自然场景文本的特性,设置了适应性的锚点(Anchor),考虑到文本长宽比与通用目标差别过大便采用了长条形的卷积核,它能对水平文本取得不错的检测性能。这些学者进一步提出TextBoxes ++ (Liao 等人,2018a),增加了角度预测以适应多方向文本的检测。He 等人(2017b)加入了文本注意力机制,通过强化文本部分的特征加强其分类和边界框回归,同时他们设计了一个多级特征融合模块以适应文本的尺度变化。Liu 和Jin (2017)也是基于相同的框架提出了深度匹配先验网络(deep matching prior network, DMPNet),首次使用四边形锚点框来替换原来的矩形锚点框,实现了多方向文本检测。Liao 等人(2018b)针对多方向文本这一问题,使用了方向响应网络(oriented response network,ORN)取代融合SSD中不同尺度特征的侧边连接。ORN 可以提取旋转的文本特征以适应不同方向的文本实例,然后在每个侧边连接提取特征后进行分类和边界框回归。

除了基于SSD 和YOLO 这类需要锚点框的单阶段方法之外,还有很多是借助文本的一些几何属性进行建模并利用全卷积神经网络的单阶段文本检测方法。Zhou 等人(2017)借鉴了DenseBox(Huang等,2015)的架构和U-Net(Ronneberger 等,2015)的特性提出了EAST(efficient and accurate scene text detector)算法,结构如图所示。它先在每个像素位置预测是否有文本,如果有则直接预测该像素点对应文本实例的得分图和边界坐标。He 等人(2017c)提出的DDR(deep direct regression)算法思想和EAST 相似,不过DDR 是直接学习4 个边界点对于有文本像素点作为文本实例中心点的偏移量,而EAST 是回归点到边框的上下左右距离。类似的方法还有Xue 等人(2018)提出的Border,不过它除了进行文本和非文本分类以及边框回归的同时,还增加了对4 条文本框边界的学习和预测。Wang 等人(2018b) 提出了一个实例变换网络( instance transformation network, ITN)去学习自然场景文本的几何属性表达,以适应任意四边形文本行的检测。

针对不规则文本的检测,Long 等人(2018)提出的TextSnake 是首个单阶段解决此类问题的工作。它先利用一个全卷积神经网络预测文本区域、文本的中心线以及几何属性(角度、半径等),然后通过这些属性重建整个文本实例。Zhang 等人(2019a)提出的LOMO(look more than once)是在EAST 算法思想的基础上额外增加了一个迭代优化模块和形状表征模块,分别加强对长文本以及对不规则文本的检测。而Wang 等人(2019a) 提出的SAST(singleshot arbitrarily-shaped text detector) 同样也是EAST的演进版本,他们也借鉴了TextSnake 的思想,在直接回归边界框的同时加入了对文本一些几何特征的预测(文本中心线区域、文本边界偏置和文本中心点偏置等),使之能适用于不规则的文本检测。考虑到文本多尺度的问题,Xue 等人(2019)提出了多尺度形状回归网络(multi-scale regression,MSR) 去检测不同尺度的任意形状文本。MSR 分别预测文本中心区域、中心区域的点到最近边界的横向和纵向距离,最后通过后处理得到文本边框。

3 . 1 .2 基于分割的场景文本检测方法

基于分割的自然场景文本检测方法主要是借鉴传统的文本检测方法的思想,先通过卷积神经网络检测出基本的文本组件,然后通过一些后处理的方式将文本组件聚集成一个完整的文本实例。此类方法可以进一步划分为像素级别的方法(基于分割的方法)和文本片段级别的方法。

1)像素级别的基于分割的方法。像素级别的文本检测方法通常借鉴物体语义分割和实例分割的思想,利用全卷积神经网络(fully convolution network,FCN)(Long 等人,2015)对图像中的每个像素点进行文本和非文本分类,从而得到文本区域掩码图(Mask)。然后通过一些像素聚合的后处理方式将属于同一文本的文本像素点聚合在一起得到最后的文本实例边界框。上述部分自顶向下的方法虽然也借鉴了分割的思路,但同时也结合了整个文本边界框的回归,而像素级别的基于分割的方法则完全依靠像素级别的分类和后处理得到文本检测的结果。这类方法可以比较轻松地描述任意形状的文本,但后处理会比较复杂,而且对密集型文本做文本区域的掩码图预测时容易发生重叠,不容易将不同文本实例分开。针对此问题,许多学者都提出了不同的解决方案。Zhang 等人(2016)的工作首次将文本像素分类预测用于自然场景文本检测任务当中,该方法首先通过一个FCN 预测得到文本区域的分割显著图。然后利用MSER 检测算子在文本区域内提取候选字符。最后通过字符投影的一些后处理方法连接字符区域生成文本行检测结果。Yao 等人(2016)利用FCN 同时预测文本行区域、单字符区域以及字符连接方向,对在同一个文本区域的字符构建一个图,利用字符之间的位置和方向的相似度把图划分成若干子图,每个子图都对应着一个文本实例。He 等人(2016c)级联了两个FCN,第1 个FCN 预测整个文本粗略的显著图,第2 个FCN 则是预测文本的中心区域以区分不同的文本。这种从粗糙到精细的分割方式对于不同尺度和分布的文本检测都会有比较好的泛化性能。同样为避免文本黏连,Wu 和Natarajan(2017)提出了文本边界学习(border learning),除了文本和非文本的像素分类之外,还预测了文本的边界区域。Zhu 和Du(2021)提出的TextMountain也是为了解决类似的问题,他预测文本中心到边界像素点的概率分布而不是单纯地对文本区域和非文本区域做二分类。Deng 等人(2018) 提出的Pixel-Link 则是预测像素点与相邻的8 个像素点之间的连接关系(若两个像素点都属于同一文本区域,则两者判定为连接关系),基于这样的信息可以有效组合属于同一文本的像素点。Xu 等人(2019)考虑到相邻的属于不同文本的像素在各自文本实例中的相对位置不同提出了TextField,利用这样的方向场(direct field)去预测2 维的相对位置向量,根据方向有效区分邻近的像素点从而抑制文本粘连。同样是考虑到中心区域能比较好地划分不同文本这一思想,Wang等人(2019f)提出了一种对文本实例实现多级预测的渐进式尺度扩张网络(progressive scale expansion network, PSENet)。先利用FCN 对每个文本实例进行像素级别分类以及对多个不同尺度的文本中心区域(文本核)进行预测,然后通过渐进性尺度扩张算法得到文本实例分割的结果。但是PSENet 的后处理很复杂,模型的前向预测效率比较低,于是作者又提出了像素聚集网络( pixel aggregation network, PAN)(Wang 等人,2019g)。PAN 设计了一个轻量化的特征提取和融合网络,除了预测文本区域和文本核外,还预测一个像素相似向量,根据向量预测结果引导文本像素聚合到正确的文本核以得到不同文本实例检测结果。所以这个后处理方式是可学习的,检测效率也远高于PSENet。此外,Tian 等人(2019)的工作也是类似的思想,都是对每个像素点学习一个嵌入式相似向量,属于同一文本的向量会尽可能接近,反之远离,通过这样的方式分离不同的文本实例。类似地,考虑到基于像素分类的方法其复杂的后处理影响检测效率的问题,Liao 等人(2020b)提出了可微分二值化(differentiable binarization,DB)的方法,结构如图6所示。常规的基于像素分类的检测方法通常使用固定阈值对分割图进行二值化处理,而DB 则是将二值化操作嵌入网络,除了学习文本区域的显著图之外,还会预测对应的阈值图,通过两者结合生成最后的结果,大大提高了后处理的效率和模型前向推理速度。

2)文本片段级别的基于分割的方法。文本片段级别定义为字符或者文本的一部分,这类文本检测方法通常是利用目标检测算法从图像中检测出这样的文本片段。然后根据特征相似性,通过一些后处理算法把检测出的文本片段拼接成完整的文本实例。因此,如何鲁棒地把文本片段拼接成文本实例是这一类方法的难点。Tian 等人(2016)提出了文本区域连接网络(connectionist text proposal network,CTPN),它借鉴了RPN 的思想,首先提取文本片段级别的候选区域,然后通过后处理的方法将这些候选区域拼接成一个完整的文本实例。该方法最大的特点在于,在特征提取的时候加入了双向长短期记忆网络(Bi-LSTM)(bidirectional long short term memory network) (Graves 和Schmidhuber,2005) 进行序列建模,这能有效解决长文本检测的问题,但CTPN只能检测水平方向的文本。Shi 等人(2017b)借鉴了CTPN 的思想,提出了可以实现任意方向自然场景文本检测的SegLink 算法,如图7 所示,它基于单阶段目标检测器SSD 对文本片段进行了检测,同时还预测了各片段之间的连接关系,根据这样的连接关系将文本片段组合成最后的文本实例。但是,该方法在面对密集型文本时,连接关系的预测可能会发生错误。于是,Tang 等人(2019)在SegLink 的基础上提出了SegLink ++ 算法,它通过学习文本片段之间的互斥连接(repulsive link)对文本片段的连接关系进行分类,互斥连接的加入可以有效避免相邻文本实例的粘连。这两个算法所谓的连接关系指的都是判断检测到的文本片段是否属于同一个文本例。Lyu 等人(2018a)则是提出了使用角点检测生成候选的四边形检测框,同时在整图级别进行逐像素分类得到文本的位置得分,随后两个结果相结合输出最后的文本检测结果。Liu 等人(2018f)提出的CENet(character embedding network)与上述PAN(Wang 等人,2019g)等方法思想类似,通过对每个字符学习一个嵌入式向量(character embedding),在训练过程中使在同一个文本实例内部的字符的嵌入式向量尽可能地接近,反之则尽可能地远离,通过这种方式可以把属于同一个文本实例的字符区域聚合在一起。Hu 等人(2017)也是提出先检测单个字符区域,然后基于一些固定规则将这些字符拼接成任意方向的文本实例。常用的拼接规则有文本片段之间的水平和竖直方向距离以及尺度和方向的相似性等。由于单字符标注比较少而且标注成本也比较高,该方法第一次提出通过弱监督的方式得到自然场景文本单字符检测结果的算法WordSup。同样为了得到单字符的检测结果,Tian 等人(2017)提出的WeText 也是基于SSD 提出的一个弱监督的框架,得到了单字符检测结果之后和Hu 等人的方法一样通过规则进行拼接。但该方法只能用于检测水平方向的文本,泛化性能比较差。Hu 等人(2017)提出的弱监督的算法也被Baek 等人(2019b)改进并应用到他们的CRAFT(character region awareness for text detection)算法中,它通过类似的方式得到单字符的标注,然后通过高斯分布建模学习单个字符的中心概率以及字符之间的连接关系(character affinity),再通过连接关系将各字符连接在一起获得文本行检测结果。这个方法由于需要预测连接关系,所以会对单字符的检测有一定影响。对于文本片段是否属于同一文本实例的判断,Zhang 等人(2020c)提出DRR(deep relational reasoning graph network)通过图网络的方式进行预测,该方法首先检测文本片段,然后对这些片段构建局部图,通过深度关系推理网络得到它们的连接关系,并根据此关系连成各个文本实例。

3 .1.3  常用的 文本 检测模型

R-CNN 、Fast  R-CNN F aster  R-CNN

1)R-CNN(CVPR 2014, TPAMI 2015)

2014年论文《Rich feature hierarchies for accurate object detection and semantic segmentation Tech report》提出R-CNN模型,即Regions with CNN features。这篇论文可以算是将CNN方法应用到目标检测问题上的开山之作。

R-CNN的算法原理:

RCNN算法分成四个步骤:

(1)获取输入图像

(2)提取大约2000个自下而上的候选区域

(3)使用大型卷积神经网络(CNN)计算每个建议的特征

(4)使用特定分类的线性支持向量机(SVM)对每个区域进行分类。

实验结果:

表1显示了VOC 2010数据集上的实验完整结果。实验将R-CNN方法与四个强Baseline进行了比较,其中包括SegDPM,它将DPM检测器与语义分割系统的输出相结合,并使用额外的检测器间上下文和图像分类器重新排序。最密切的比较是与Uijlings等人研究的UVA系统,因为R-CNN的系统使用相同的区域候选算法。为了对区域进行分类,UVA的方法构建了一个四级空间金字塔,并使用密集采样的SIFT、扩展的OpponentSIFT和RGBSIFT描述符对其进行填充,每个向量使用4000字的码本进行量化。采用直方图相交核支持向量机进行分类。与UVA的多特征非线性核SVM方法相比,R-CNN在mAP方面取得了很大的改进,从35.1%提高到53.7%,同时速度也更快。R-CNN的方法在VOC 2011/12测试中达到了类似的性能(53.3%mAP)。

图3将R-CNN与ILSVRC 2013年比赛的参赛作品以及赛后的OverFeat结果进行了比较。R-CNN获得了31.4%的mAP,明显领先于OverFeat第二好的24.3%。为了了解AP在不同类别上的分布情况,还提供了方框图,并在表8中的文章末尾提供了一个perclass AP表。大多数竞争对手提交的资料(OverFeat、NEC-MU、UvAEuvision、Toronto A和UIUC-IFP)都使用了卷积神经网络,这表明CNN如何应用于目标检测存在显著差异,导致结果差异很大。

首先查看CNN不在PASCAL进行微调,即所有CNN参数仅在ILSVRC 2012上进行预训练后的结果。逐层分析性能(表2第1-3行)表明,fc7的特征概括起来比fc6的特征更差。这意味着,在不降低地图质量的情况下,可以删除29%或1680万个CNN参数。更令人惊讶的是,删除fc7和fc6会产生非常好的结果,尽管pool5功能仅使用CNN 6%的参数计算。CNN的大部分提取特征的能力来自其卷积层,而不是更大的密集连接层。这一发现表明,仅使用CNN的卷积层就可以计算任意大小图像的稠密特征图(从HOG的意义上讲)的潜在效用。这种表示方式将支持在pool5特性的基础上使用滑动窗口检测器(包括DPM)进行实验。

在VOC 2007 trainval上微调了CNN的参数后,现在来看一下CNN的结果。改进是惊人的(表2第4-6行):微调将mAP提高了8.0个百分点,达到54.2%。fc6和fc7的微调带来的提升要比pool5大得多,这表明从ImageNet学习到的pool5功能是通用的,大部分改进都是通过学习特定领域的非线性分类器获得的。

所有R-CNN变体的性能都明显优于三个DPMBaseline(表2第8-10行),包括使用功能学习的两个。与只使用HOG功能的最新版本DPM相比,R-CNN的mAP提高了20多个百分点:54.2%比33.7%,相对提高了61%。HOG和sketch令牌的组合比单独的HOG产生2.5个mAP,而HSC比HOG提高了4个mAP(与它们的专用DPM Baseline进行内部比较时,两者都使用性能低于开源版本的非公开DPM实现)。这些方法分别实现了29.1%和34.3%的MAP。

在表3中,实验展示了使用Simonyan和Zisserman最近提出的16层深度网络进行VOC 2007测试的结果。该网络是最近ILSVRC 2014分类挑战赛中表现最好的网络之一。该网络具有由13层3×3卷积核组成的同质结构,其中穿插有5个最大池层,顶部有3个完全连接的层。对于OxfordNet,实验将该网络称为“O-Net”,对于TorontoNet,实验将baseline称为“T-Net”。

为了在R-CNN中使用O-Net,实验从Caffe模型Zoo1下载了VGG ILSVRC 16层模型的公开预训练网络权重,然后使用与T-Net相同的协议对网络进行微调。唯一的区别是根据需要使用较小的小批量(24个示例),以适应GPU内存。表3中的结果表明,使用O-Net的RCNN显著优于使用T-Net的R-CNN,将mAP从58.5%增加到66.0%。然而,在计算时间方面有一个相当大的缺点,O-Net的向前传递大约比T-Net长7倍。

效果:R-CNN在pascal voc2007上的检测结果从DPM HSC的34.3%直接提升到了66%(mAP)。

R-CNN速度慢的原因:对图像提取region proposal(2000个左右)之后将每个proposal当成一张图像进行后续处理(利用CNN提取特征+SVM分类),实际上对一张图像进行了2000次提取特征和分类的过程。



2)Fast R-CNN(ICCV 2015)

Fast R-CNN的算法原理:

Fast R-CNN算法步骤:

(1)输入待检测图像

(2)利用Selective Search算法在输入图像中提取出2000个左右的候选区域,

(3)将这些候选区域输入到CNN进行特征提取

(4)对于卷积特征层上的每个候选区域进行RoI Pooling操作,得到固定维度的feature map;

(5)提取到的特征输入全连接层,然后用Softmax进行分类,对候选区域的位置进行回归。

实验结果:

在VOC07上,实验比较了Fast R-CNN、R-CNN和SPPnet。所有方法都从相同的预训练VGG16网络开始,并使用边界框回归。VGG16 SPPnet结果由SPPnet BB的作者计算得出。SPPnet在培训和测试期间使用五个量表。与SPPnet相比,Fast R-CNN的改进表明,尽管Fast R-CNN使用单尺度训练和测试,但微调conv层可以大幅提高mAP(从63.1%提高到66.9%)。R-CNN获得了66.0%的mAP。次要的一点是,SPPnet在帕斯卡语中没有标记为“困难”的例子。删除这些示例将Fast R-CNN映射提高到68.1%。所有其他实验都使用“困难”的例子。

在VOC 2010 and 2012数据集中,实验将Fast R-CNN(简称FRCN)与公开排行榜comp4(外部数据)上的顶级方法进行比较(表2,表3)。对于NUS NIN c2000和BabyLearning方法,目前没有相关论文,实验无法找到所用ConvNet体系结构的确切信息;它们是网络设计中网络的变体。所有其他方法都是从相同的预训练VGG16网络初始化的。

Fast R-CNN以65.7%的mAP在VOC12上取得了最佳结果(额外数据为68.4%)。它也比其他方法快两个数量级,这些方法都基于“慢速”R-CNN管道。在VOC10上,SegDeepM获得了比Fast R-CNN更高的mAP(67.2%对66.1%)。SegDeepM在VOC12 trainval和分段注释上进行训练;通过使用马尔可夫随机场推理O2P语义分割方法中的R-CNN检测和分割,旨在提高R-CNN的准确性。快速R-CNN可以替换为SEGDEPM代替R-CNN,这可能会产生更好的结果。当使用扩大的07++12训练集(见表2标题)时,Fast R-CNN的mAP增加到68.8%,超过SegDeepM。

与R-CNN框架图对比,有两处不同:

(1)最后一个卷积层后加了一个RoI(Regions of Interest) pooling layer;

(2)损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中进行训练。



Fast R-CNN改进:

(1)RoI pooling layer:SPP-NET对每个proposal使用了不同大小的金字塔映射,将RoI pooling layer只需要下采样到一个7*7的特征图;

(2)使用softmax代替SVM分类,将多任务损失函数边框回归加入到网络中:除了region proposal提取阶段以外,其他的训练过程是端到端的;

(3)微调部分卷积层。

存在问题:要先提取region proposal,没有实现真正意义上的端到端训练。

3)Faster R-CNN(ICCV 2015)

经过R-CNN和Fast R-CNN的积淀,Ross B. Girshick在2016年的论文《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》提出了新的Faster RCNN。

Faster R-CNN算法原理:

整个网络可以分为四个部分:

(1)Conv layers。首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续的RPN层和全连接层。

(2)Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression来修正anchors来获得精确proposals。

(3)RoI Pooling。该层收集输入的feature maps和proposals,送入后续全连接层判定目标类别。

(4)Classifier。利用proposal feature maps计算proposals的类别,同时再次利用bounding box regression获得检测框最终的精确位置。



FASTER-RCNN算法步骤:

(1)输入测试图像;

(2)将整张图片输入CNN,进行特征提取;

(3)用RPN生成建议窗口(proposals),每张图片生成300个建议窗口;

(4)把建议窗口映射到CNN的最后一层卷积feature map上;

(5)通过RoI pooling层使每个RoI生成固定尺寸的feature map;

(6)利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.

 实验结果:

实验在PASCAL VOC 2007检测基准上综合评估了 FASTER-RCNN 的方法【11】。该数据集包括约5k个TranVal图像和超过20个对象类别的5k个测试图像。 FASTER-RCNN 还提供了一些模型的PASCAL VOC 2012基准测试结果。对于ImageNet预训练网络, FASTER-RCNN 使用“快速”版本的ZF net[32],它有5个卷积层和3个完全连接层,以及公共VGG-16 model7[3],它有13个卷积层和3个完全连接层。 FASTER-RCNN 主要评估检测平均精度(mAP),因为这是对象检测的实际度量(而不是关注对象建议代理度量)。

表2(顶部)显示了使用各种区域候选方法进行训练和测试时的Fast R-CNN结果。这些结果使用ZF网络。对于选Selective Search(SS),实验通过“快速”模式生成了大约2000个候选。对于EdgeBoxes(EB),实验通过调整为0.7 IoU的默认EB设置生成提案。在快速R-CNN框架下,SS的mAP为58.7%,EB的mAP为58.6%。使用Fast R-CNN的RPN取得了有竞争力的结果,在使用多达300个提议8的情况下,其mAP为59.9%。由于共享卷积计算,使用RPN比使用SS或EB产生更快的检测系统;更少的提案也降低了区域级完全连接层的成本(表5)。



为了研究RPN的行为作为一种建议方法,实验进行了几项消融研究。首先,实验展示了RPN和Fast R-CNN检测网络之间共享卷积层的效果。为此,实验在四步训练过程的第二步之后停止。使用单独的网络将结果略微降低到58.7%(RPN+ZF,非共享,表2)。观察到这是因为在第三步中,当使用detectortuned特征微调RPN时,建议质量得到了提高。

接下来,实验分析了RPN对训练Fast R-CNN检测网络的影响。为此,实验使用2000 SS提案和ZF网络来训练Fast R-CNN模型。 Fast R-CNN 修复此检测器,并通过更改测试时使用的建议区域来评估检测图。在这些烧蚀实验中,RPN与探测器不具有相同的特征

在测试时用300个RPN提案替换SS,mAP为56.8%。mAP中的损失是由于培训/测试提案之间的不一致。此结果作为以下比较的基线。有些令人惊讶的是,当在测试时使用排名前100的提案时,RPN仍然会导致竞争结果(55.1%),这表明排名前100的RPN提案是准确的。另一方面,使用排名靠前的6000个RPN方案(无NMS)有一个可比的地图(55.2%),表明NMS不会损害检测地图,并可能减少误报。

接下来, Fast R-CNN 通过在测试时关闭其中一个来分别研究RPN的cls和reg输出的作用。当在测试时删除cls层(因此不使用NMS/排名)时, Fast R-CNN 从未评分区域随机抽取N个提案。当N=1000时,mAP几乎没有变化(55.8%),但当N=100时,mAP显著下降至44.6%。这表明cls分数说明了排名最高的提案的准确性。

另一方面,当reg层在测试时被移除(因此提案成为锚定框)时,mAP下降到52.1%。这表明,高质量的提案主要是由于回归框界限。锚箱虽然具有多个刻度和纵横比,但不足以进行精确检测。 实验 还评估了更强大的网络对RPN提案质量的影响。 实验 使用VGG-16来训练RPN,并且仍然使用上述SS+ZF检测器。mAP从56.8%(使用RPN+ZF)提高到59.2%(使用RPN+VGG)。这是一个有希望的结果,因为它表明RPN+VGG的提案质量优于RPN+ZF。由于RPN+ZF的提案与SS具有竞争性(当持续用于培训和测试时,两者均为58.7%),可以预期RPN+VGG优于SS。以下实验证实了这一假设。

VGG-16的性能。表3显示了VGG-16的建议和检测结果。使用RPN+VGG,非共享特性的结果为68.5%,略高于SS基线。如上所示,这是因为RPN+VGG生成的提案比SS更准确。与预定义的SS不同,RPN经过积极培训,并受益于更好的网络。对于功能共享变体,结果是69.9%,比强大的SS基线要好,但几乎没有成本。实验进一步在PASCAL VOC 2007 trainval和2012 trainval的联合集上训练RPN和检测网络。mAP为73.2%。图5显示了PASCAL VOC 2007测试集的一些结果。在PASCAL VOC 2012测试集(表4)上, faster-RCNN 的方法在VOC 2007 trainval+测试和VOC 2012 trainval的联合集上训练了70.4%的映射。表6和表7显示了详细的数据。

在表5中,实验总结了整个目标检测系统的运行时间。SS需要1-2秒,具体取决于内容(平均约1.5秒),而带有VGG-16的Fast R-CNN在2000个SS提案上需要320ms(如果在完全连接的层上使用SVD,则需要223ms[2])。实验使用VGG-16的系统在建议和检测方面总共需要198ms。共享卷积特性后,仅RPN就只需10ms即可计算额外的层。由于提案较少(每张图片300个),区域计算也较低。Faster RCNN系统在ZF网络上的帧速率为17 fps。



相比FAST  R-CN N,主要两处不同:

(1)使用RPN(Region Proposal Network)代替原来的Selective Search方法产生候选窗口;

(2)产生候选窗口的CNN和目标检测的CNN共享



主要贡献:提出了区域推荐网络( RPN,Region Proposal Networks),实现了真正意义上的端到端训练。

RPN网络:在提取特征的最后的卷积层上滑动一遍,利用anchor机制和边框回归,得到多尺度多长宽比的region proposals。

Anchor机制:



对于提取特征的最后的卷积层的每一个位置,考虑9个可能的候选窗口:

三种面积( 128*128,256*256,512*512) * 三种比例(1:1,1:2,2:1)。这些候选窗口称为anchors。



C TPN

CTPN,全称是“Detecting Text in Natural Image with Connectionist Text Proposal Network”(基于连接预选框网络的文本检测)。CTPN直接在卷积特征映射中检测一系列精细比例的文本建议中的文本行。CTPN开发了一个垂直锚定机制,可以联合预测每个固定宽度提案的位置和文本/非文本得分,大大提高了定位精度。序列建议由递归神经网络自然连接,该网络无缝地合并到卷积网络中,形成端到端可训练模型。这使得CTPN能够探索图像的丰富上下文信息,使其能够强大地检测极其模糊的文本。CTPN可以在多尺度和多语言文本上可靠地工作,而不需要进一步的后处理,不同于以前需要多步骤后过滤的自下而上的方法。



CTPN算法原理:

CTPN 包括三个关键的 工作 ,使其对文本定位的可靠和准确: detecting text in fine-scale proposals, recurrent connectionist text  proposals, and side-refinement

D etecting text in fine-scale proposals

与RPN类似,CTPN本质上是一个完全卷积的网络,允许任意大小的输入图像。它通过在卷积特征图中密集滑动一个小窗口来检测文本线,并输出一系列精细尺度(例如,固定的16像素宽度)文本建议,如图1 (b).所示

CTPN 以非常深的16层vggNet(VGG16 为例来描述方法,它很容易适用于其他深度模型。CTPN的体系结构如图1.(a).所示 使用一个小的空间窗口,3×3,来滑动最后一个卷积层的特征图(例如,VGG16的conv5)。conv5特征图的大小由输入图像的大小决定,总步幅和接受域分别固定为16像素和228像素。总步幅和接受域都是由网络体系结构固定的。在卷积层中使用滑动窗口允许它共享卷积计算,这是减少昂贵的基于滑动窗口的方法的计算的关键。

CTPN模型的网络结构如下图所示: 



检测处理过程总结如下。给定一个输入图像,有W×H×C conv5特征图(通过使用VGG16模型),其中C是特征图或通道的数量,W×H是空间排列。当探测器在conv5中密集地滑动一个3×3的窗口时,每个滑动窗口都采用3×3×C的卷积特征来产生预测。对于每个预测,水平位置(x坐标)和锚定位置都是固定的,这可以通过将conv5中的空间窗口位置映射到输入图像上来预先计算 。检测器输出每个窗口位置上的k个锚点的文本/非文本分数和预测的y坐标(v)。检测到的文本建议是由文本/非文本得分为>0.7(具有非最大抑制)的锚点生成的。通过设计的垂直锚定和精细尺度检测策略,检测器能够通过使用单尺度图像处理大尺度和长宽比的文本线。这进一步减少了它的计算量,同时也预测了文本行的准确定位。与RPN或Faster R-CNN系统相比, CTPN 的精细尺度检测提供了更详细的监督信息,自然会导致更准确的检测。



Recurrent Connectionist Text Proposals

为了提高定位精度,CTPN将一条文本线分割成一系列精细尺度的文本建议,并分别进行预测。显然,独立考虑每一个孤立的建议并不是不可靠的。这可能会导致对与文本模式具有相似的结构的非文本对象进行大量的错误检测,如窗口、砖块、叶子等。。也可以丢弃一些包含弱文本信息的歧义模式。图3(top)给出了几个例子。文本具有很强的顺序特征,其中顺序上下文信息对做出可靠的决策至关重要。这已经被最近的工作证实,其中一个循环神经网络(RNN)被应用于编码这个上下文信息,用于文本识别。研究结果表明,序列上下文信息极大地简化了裁剪词图像的识别任务。RNN为经常使用它的隐藏层来编码这些信息提供了一个自然的选择。为此,CTPN建议在conv5上设计一个RNN层。



Side-refinement :

CTPN可以准确、可靠地检测到精细尺度的文本建议。通过连接文本/非文本得分为> 0.7的连续文本建议,文本行构造很简单。文本行的构造如下。首先,当(i) B j 是距离B i 最近的水平距离,(ii)该距离小于50像素,(iii)其垂直重叠时, CTPN 将B i (B j )定义为> 0.7。其次,将两个建议分为一对,如果B j −> B i 和B i −> B j 。然后,通过顺序连接具有相同提议的成对来构造一条文本线。精细尺度检测和RNN连接能够预测垂直方向上的准确定位。在水平方向上,图像被划分为一个等于16像素宽度的建议序列。当水平两侧的文本提案没有被地面真实文本线区域完全覆盖,或者一些边提案被丢弃(例如,文本得分较低)时,这可能会导致不准确的本地化,如图4所示

这种不准确性在一般的对象检测中可能不是关键的,但在文本检测中也不应被忽视,特别是对于那些小规模的文本行或单词。为了解决这个问题, CTPN 提出了一种侧细化方法,该方法可以准确估计每个锚/方案在左右水平侧的位置(称为侧锚或侧建议)的偏移量。与y坐标预测相似,计算相对偏移量为 :

其中,x side 是距离当前锚点最近的水平侧(例如,左侧或右侧)的预测x坐标。 x 轴上的真实(GT)边坐标,它是根据GT边界框和锚点位置预先计算出来的。 是x轴上锚的中心。瓦是锚的宽度,它是固定的, a = 16。当CTPN将检测到的一系列检测到的精细文本建议连接到一个文本行时,侧建议被定义为开始和结束建议。CTPN只使用边建议的偏移量来细化最终的文本行边界框。图4给出了几个通过侧细化改进的检测例子。侧边细化进一步提高了定位精度,导致SWT和多语言数据集的性能提高了约2%。请注意,CTPN的模型同时预测了侧边细化的偏移量,如图1所示。它不是从一个额外的后处理步骤中计算出来的。

实验结果:

CPTN 选用 ICDAR2011、ICDAR 2013、ICDAR 2015、SWT和多语言数据集 作为实验的数据集,得到了如下的实验结果。

实验首先讨论了针对 RPN和F aster  R-CNN系统的精细检测策略。如表1(左)所示,单个RPN很难执行精确的文本定位,因为它会产生大量错误检测(精度低)。通过使用 Fast  R-CNN检测模型重新规划RPN方案,F aster 上一篇