LOMO阅读笔记

Look More Than Once:一个准确的任意形状文本检测器
受限于CNNs的感受野和矩形或四边形边框的简单表示形式,先前的方法在处理长文本和弯曲文本时表现效果不好。为了解决这两个问题,提出了一种新的文本检测器LOMO,多次逐步定位文本。
LOMO由三个部分组成:一个直接检测器DR,一个迭代优化模块IRM,一个形状表示模块SEM。首先,由DR分支生成一个四边形的文本建议。接下来,IRM基于初步的建议通过迭代优化逐步感知整个长文本。最后,SEM用于重建不规则文本更精确的表示通过考虑文本实例的几何属性,包括文本区域,文本中心线和边界偏移。在ICDAR2017-RCTW,SCUT-CTW1500,Total-Text,ICDAR2015和ICDAR17-MLT达到了state-of-the-art证明了LOMO的鲁棒性和有效性。
当检测长文本时,先前的检测方法如EAST,Deep Regression不能给出一个完整的边界框,因为整个文本实例的大小远超过文本检测其的感受野,CNN不能编码充足的信息来捕捉长距离的依赖。主流的单步检测器通过一次感知定位文本,与人类视觉系统不同。对于长文本实例,人类通常一次看一部分,多次看完整行文本。
除此之外,大部分方法对文本实例采取了简单的表示,如矩形,旋转矩形或四边形,在面对弯曲文本时会失败。简单的文本表示会覆盖很多非文本区域,不利于后续的识别。一个灵活的检测器可以显著提高文本检测的质量。
为了解决这两个问题,在单步检测器DR的基础上提出了迭代模块IRM和形状表示模块SEM,可以end-to-end训练。对于长文本实例,DR生成文本建议框,IRM通过一次或多次回归坐标偏移使其贴近ground truth。依赖于位置attention机制,IRM注意这些位置,改善proposal使其更接近整体标注。IRM细节在3.3。对于不规则文本,灵感来源于Mask R-CNN和TextSnake,SEM模块回归了文本实例的几何特征,如文本区域,文本中心线和相应的边框偏移量。SEM通过这些属性重建一个更精确的多边形表示。SEM模块在3.4节描述,可以有效的拟合任意形状的文本。
相关工作:
基于连通的方法:检测独立地文本片段或字符,通过后处理步骤将其组成为单词。CTPN采取了Faster R-CNN的架构,生成密集紧凑的文本分支。在linking segments中,场景文本被分解成两个检测元素分别为分段和连接,link可以表示相邻的部分是否应该连接在一起属于一个单词。WordSup和Wetext提出了两种步同的弱监督学习方法用于字符检测器,可以减轻没有字符级注释训练的难度。Liu将图片转换成一个随机流图,在上面执行Markov簇以预测实例级的bounding boxes。然而这些方法由于阶段性的文本或行生成,在面对复杂背景时并不健壮。
基于检测的方法:通常采取了主流文本检测架构,在单词或行级别注释下建模。TextBoxes和RRD调整了SSD的anchor比例以解决不同长款比的文本。RRPN提出了一个旋转区域建议以覆盖多方向的文本。然而EAST和Deep Regression直接在像素方式检测单词的四边形,并未使用anchors和proposals。end to end设计可以极大利用字符级注释。由于长宽比的差异,和CNN感受野的限制,无法有效检测长文本。
基于分割的方法:主要从语义分割方法中提取灵感,将文本边框内的区域视为正区域。这些方法的优势是可以提取任意形状的文本。Zhang首先使用FCN提取文本框,然后利用MSERs搜索文本行。为了更好的区分调整文本实例[35]将像素分为三类:非文本,文本边界,和文本。TextSnake和PSENet提出了一个新颖的热度图,叫做文本中心线图以区分文本实例。这些方法基于无需建议框的实例分割,表现受分割结果的鲁棒性影响。
本文中的方法吸取了基于检测和分割方法的有点。IRM模块处理长文本,SEM灵感来源于Mask R-CNN。
方法:
网络架构可以分成四个部分:首先,提取用于DR,IRM,SEM三个分支的共享特征图,backbone网络是ResNet50和FPN。ResNet特征图的stage2,3,4,5被有效融合,共享的特征图尺寸是1/4原图像,通道数为128。采取了一个类似于EAST和Deep Regression的直接回归网络作为DR分支。IRM网络迭代改善输入的proposals从DR的输出中或它自己以使其贴近ground-truth边框。根据不同的情境可迭代一次或多次。最后为了获得紧凑的表示,尤其对于不规则文本,SEM学习几何形状中心线和边界偏移。
3.2直接回归器
灵感来源于EAST,一个全卷积子网络用于文本直接回归。基于共享的特征图,一个密度预测通道预测文本或非文本以表示像素的文本置信度。类似于EAST,缩小区域的文本像素被认为是正的。对于每一个正样本,8个通道预测包含该像素的四个角点的偏移。DR包括两个loss,text/non-text classifiaction loss 和location regeression term loss。
我们将文本/非文本分类视为一个在1/4降采样的得分图上的分割问题,使用了一个尺度无关的Lcls,w是一个2D的权重图,正位置的值由一个常数l除以四边形短边的值得到,负位置的值设为1,在实验中设置l为64。
用平滑L1 loss优化位置回归部分Lloc,lamda设置为0.01作为平衡系数。
3.3迭代改善模块IRM
IRM模块的设计灵感来源于Faster R-CNN,只继承了bounding box regression任务。然而,我们使用RoI transform layer代替RoI pooling layer或RoI align layerl来提取输入文本四边形的特征块。相比于后两种,前者可以保持横纵比不变的提取四边形区域的特征块。此外,同一个四边形靠近角点的区域可以在同一感受野内更准确的感受到边界信息。因此,一个角点注意力机制用于回归每一个角点的坐标偏移。如图3所示,一个文本四边形,将其和共享特征图送入RoI transform layer,获得一个1 x 18 x 64 x 128的特征块。接下来,三个3 x 3卷积层用于提取
丰富的文本信息。接下来我们使用1 x 1的卷积层和一个sigmoid层自东学习四个角点的attention map。每一个角点的attention map表示贡献权重以支持相应的偏移回归。使用feature map和attention map,四个角点的回归特征可以通过公式提取。四个头(每个头包括两个1 x 1的卷积层)用于预测四个角点的offset在输入四边形和groundtruth之间,基于角点回归特征。
3.4形状表达网络:
四边形的文本表示难以准确描述不规则的文本实例。从Mask R-CNN中获得灵感,我们提出了基于建议的形状表达模块SEM来解决这个问题。SEM是一个全卷积神经网络在RoI transform layer之后。在SEM中回归文本区域,文本中心线和边框偏移量(中心线和上下边界之间的偏移量)。
Text region是一个二值mask,前景为1,背景为0。文本中心线也是一个二值mask基于侧边缩小版的文本多边形注释。border offsets是4个通道图,在文本图的相应位置上积极响应有较大的值。对于图4(a)我们画一条线垂直于他的切线,这条发现与上下边界相交于两个边界点。对于每一个red point,4个border offsets由计算他们之间的距离获得。SEM的架构如图4.两个卷积层在RoI transform layer之后,接下来使用一个具有6个输出通道的1x1卷积层回归所有的文本属性图,目标函数包含三个loss。
文本多边形生成:我们提出了一种灵活的文本多边形生成策略生成任意形状的文本如图4所示。策略包含三个步骤:文本中心线采样,边界点生成和多边形打分。首先在文本中心采样,从左到右在预测的中心线上等距离采样n个。根据CTW1500,设置7。四边形的时候设置为2。然后,我们基于采样的中心点决定边界点,考虑到在同位置提供的四个边界图信息。即得到7个上边界点和7个下边界点。通过连接所有边界点,我们可以获得一个完整的文本四边形。最后我们计算四边形区域内的平均响应值作为新的置信得分。
训练和推断:
训练包括两个阶段: 准备阶段和微调阶段。在准备阶段,我们使用合成数据集训练DR分支10个epochs。可以生成具有high-recall的建议框,以覆盖大多数真实的文本实例。在微调阶段,在真实数据集上我们微调了全部三个分支10个epochs。IRM和SEM都使用由DR分支生成的相同的proposals。NMS用于保持top K个proposals。因为DR一开始表现不好,影响IRM和SEM分支,我们使用随机分布的GT文本边框取代50%的top K个proposals。在训练阶段IRM只执行一次。
在推理阶段:DR首先生成score map和四边形的几何map。使用NMS获取最初的proposals。接下来proposals和共享特征图被送入IRM多次迭代。改善后的proposals和共享特征图被送入SEM生成精确的文本多边形和置信分数,一个阈值s消除低置信度的多边形,设置s为0.1。
实现细节:
在准备阶段使用adam优化器训练模型,学习率为10^-4,衰减速率为0.94。在微调阶段,学习率重置。所有数据集随机裁剪文本区域,重置到512 x 512。随机旋转四个方向。所有的实验在一个工作站上执行。在训练阶段batch为8在4个GPU上,一个GPU生成的proposals设置为24.在推理阶段batchsize为1在一个GPU上。

你可能感兴趣的:(笔记,python,深度学习)