CVPR2019文字检测归纳

综述

文字检测的方法可以分为基于检测和基于分割两种思路。各自有优缺点,前者对于处理曲线文字和非常见尺度文字效果不佳,后者对于多尺度问题的鲁棒性强一些,但是对于密集文字容易产生错误,会将不同的实例分割到一起。

CVPR2019共找到6篇文字检测相关的论文,这几篇处理的都是曲线文字的问题。前两篇都是依据点膨胀/区域膨胀的思路,处理的是文本实例分布过近和任意形状的问题。前四篇都是关于实例级别的检测,第五篇是基于字符级别的检测,检测字符的思路与centernet类似。

数据集

ICDAR2013:229训练样本,233测试样本,英文字符,单词级别的标注,方形Bbox

ICDAR2015:1000训练样本,500测试样本,英文字符,单词级别的标注,四边形Bbox

ICDAR2017:7200训练,1800验证,9000测试,包含9种语言的场景文字检测,四边形Bbox

MSRA-TD500:300训练,200测试。包含室内室外场景,包含英语和汉语,四边形Bbox

TotalText:1255训练,300测试,侧重于曲线文字,采用多边形标注和词语级翻译

CTW-1500:1000训练,500测试,每个图片都包含曲线文本,由14个顶点的多边形标注

一、Shape Robust Text Detection with Progressive Scale Expansion Network

解决的两个问题:一是检测的标注是Bbox,无法适用于任意形状的文字(感觉中文没有这种问题)第二个是两个文本距离太近时会产生误检(多个实例检测为一个)。提出了Progressive Scale Expansion Network (PSENet)。用基于逐像素分类的分割思想解决了第一个问题,通过对文本实例生成多个尺度的kernel,并对最小的kernel使用渐进尺度膨胀算法解决了第二个问题。在CTW1500数据集上达到了74.3%的F1值和27FPS,在不考虑速度的情况下达到了82.2%的F1值,比目前的SOTA 高了6.6%。同时在其余数据集的多语言、多文字朝向的任务上也取得了很好的结果。

《CVPR2019文字检测归纳》

kernel:网络对于文本实例的多个分割区域的预测

使用渐进尺度膨胀算法的三个因素:一是对于离的近的文本,使用最小的kernel之间的边界距离较远,二是使用的最小kernel无法覆盖整个文本实例,三是使用这个算法将最小区域扩大到整个实例区域简单且高效。

网络结构图如下,总体来看输入图片在融合了低层次的纹理特征和高层次的语义特征之后会生成n个分割结果,S1是最小的分割kernel,Sn是最大的分割kernel即原始标注的mask。然后使用渐进尺度膨胀算法对S1中的kernel进行扩充至原始形状,得到最终结果。

《CVPR2019文字检测归纳》

渐进尺度膨胀算法

对于最小的kernel,逐步融合更大的kernel,直到Sn。对于有重叠的实例会在像素填充时产生冲突,作者采用的是先到先服务的方法。

《CVPR2019文字检测归纳》

标签生成

原始标注作为最大kernel的标注,通过对原始标注多边形使用Vatti clipping算法进行放缩得到不同尺度kernel的标注。

《CVPR2019文字检测归纳》

不同尺度kernel的缩放因子《CVPR2019文字检测归纳》

m是最小kernel的缩放因子,因此可以通过m和n两个超参数控制,线性的从m增加到1。

损失函数设计

《CVPR2019文字检测归纳》

其中Lc和Ls代表完整文本实例和缩小的文本实例的损失

通常情况下,文本实例只在自然图像中占据一个很小的区域,这在使用二进制交叉熵损失时会使网络输出偏向于非文本区域。因此采用了Dice系数。Si,x,y 和Gi,x,y是网络第i个kernel的分割输出mask和标注mask在像素(x,y)的值。此外对于类似于文本笔划的格子、栅栏等,在训练时对Lc采用OHEM。

《CVPR2019文字检测归纳》

Lc的主要作用的分割文本区域和非文本区域,假设通过OHEM给的训练mask为M,则

《CVPR2019文字检测归纳》

L s是放缩的文本实例的损失。由于它们被完整文本实例区域包围,因此忽略了分割结果Sn中非文本区域的像素,以避免了某些冗余

《CVPR2019文字检测归纳》

思考:

在学习文本实例在不同比例缩放的语义特征表示,用最小的尺度分割难分离的文本实例。

膨胀算法是否可以在网络里进行端到端的训练;(膨胀因子当参数?)

渐进尺度膨胀算法可以用于稠密场景下的通用实例层的分割任务。

二、Towards Robust Curve Text Detection with Conditional Spatial Expansion

提出了条件空间膨胀(CSE)机制解决检测不规则形状和尺度的曲线文字问题。将曲线文字检测构造为区域膨胀问题而不是传统的边框回归或分割问题。

CSE随机在文本区域初始化种子区域,并依靠卷积网络提取的区域特征和已融合区域的上下文信息融合临近的区域。方法源于任意内部点(seed)与文本实例其余部分之间的依存关系的条件建模。CSE可以看作是一个条件预测过程,该过程通过seed和膨胀来检索实例级别的文本区域

CSE高度参数化,可以无缝的嵌入现存的检测网络。

实验证明CSE可以处理任意形状、尺度、文本朝向的曲线文本检测同时能够有效的处理假阳性样本或者同一区域中的异常文本(同一文本未检测全或者和别的文本混到了一起)。F值达到了78.4%。

《CVPR2019文字检测归纳》

Overview

seed特指一个可以出现在目标区域内部并且可以随机初始化位置的目标。

文中作者将检测区域的中心为seed作为示例说明该过程。下图为一个特征图,选定检测到特征区域的中心点为seed,特征图上的每一个点代表着原图中的离散像素构成的图像区域。通过一个5维的y向量(to bottom, to − right, to − left, to − top and none).表示要合并的方向,如果一个点的主要合并方向指向已合并区域,则将该点加入合并区域。 映射回原图即可得到目标位置及轮廓。

《CVPR2019文字检测归纳》

条件空间膨胀

给定一个在目标区域内的seed,将特征图使用双线性插值采样划分为S*S的网格,通过对seed的邻接节点的膨胀得到目标的区域的特征。CSE从seed开始由内而外探索每一个node,在当前采样的x上计算对其临近节点相应的y和转换向量《CVPR2019文字检测归纳》

《CVPR2019文字检测归纳》

节点的计算图如下所示。

《CVPR2019文字检测归纳》

Seeding

位于目标区域内的点都可以当做seed,可以用现成的检测网络得到的输出当做候选的seed,文中作者用的是用Faster RCNN检测到的目标的形状和中心点的位置当做seed的位置,后面作者实验证明只要是在目标区域内的点都可以当做seed,并且对性能没有太大的影响。检测区域的检测器越简单反而更利于CSE产生更符合要求的结果。在检测到的Bbox内通过双线性插值随机采样S*S的网格。进行后续的处理。

Optimization

标签生成:

在训练阶段,标签的融合方向示意图如下,首先标记在目标区域内网格中的点为正样本,其余为负样本。对于每一个正样本,搜寻在其上一个section中与之相邻的正样本并将它们之间的融合方向作为候选方向,对于同一个节点的不同候选方向,仅取具有最高得分的方向作为最终的融合方向。(得分是CSE预测得到)

《CVPR2019文字检测归纳》

损失函数:

使用交叉熵损失优化CSE模型。

N=S*S,代表节点总数,P是节点集合,y ∗是正样本融合方向的值,

《CVPR2019文字检测归纳》

实验

现在组合的数据集上预训练,再在曲线文字数据集上训练

三、Learning Shape-Aware Embedding for Scene Text Detection

提出了基于实例分割的文字检测方法,为了区别位置相近的不同文字实例,将像素映射到编码的特征空间中使属于同一实例的像素尽可能近而不同实例的像素尽可能远。此外设计了shape-aware Loss来自适应不同形状的实例,并采用新的后处理方法返回精确的边框预测。

网络结构

首先从ResNet50的中间层提取特征,在特征融合步骤中使用与PANet相似的采用上采样和逐元素相加的融合策略。

不同于别的单一网络多任务的设计,作者采用了两个独立的特征融合模块构成一对独立但互补的分支。一个分支在每个像素处生成具有8通道embedding map,以区分文本实例;另一束生成用于分割的两个文本目标的mask。

《CVPR2019文字检测归纳》

Shape-Aware Embedding

适用于多种形状和不精确边界的文本实例。

编码的分支结合融合的特征和表示像素x,y坐标的两通道信息,经过3个通道数分别为32,16,8的3*3卷积之后输出逐像素的8维编码特征

Shape-Aware Loss (SA Loss)包含聚集属于同一文本实例像素编码的方差Lvar和用于推动不同实例像素编码之间距离的损失Ldist。

《CVPR2019文字检测归纳》

《CVPR2019文字检测归纳》是两个文本实例的平均编码向量,Xi是像素的编码特征。η和γ分别设为0.5,1.5.

提供了两个系数适应不同的文本形状和临近关系。

《CVPR2019文字检测归纳》

max(h, w)是输入图像较大的值,《CVPR2019文字检测归纳》在方形文字中是较大的边,在曲线文字检测中是多边形顶点的最远距离,The value range of WScale (j) is (1, 1.65), and the value range of W Dist (j,k) is roughly (0.63, 1)。

《CVPR2019文字检测归纳》与文本实例的尺度成正比,大的《CVPR2019文字检测归纳》让方差损失更明显,迫使属于同一实例像素聚集来减小损失。《CVPR2019文字检测归纳》与两个实例间的最小距离成反比,因此迫使不同实例的文字分隔开。

对于N个文本实例,损失为

《CVPR2019文字检测归纳》

Segmentation Masks

分割束生成两个1通道的mask,分别是Full Map and Center Map。前者显示实例所有像素点的位置和分布,后者仅显示每个文本实例的中心区域。

两个map都是采用dice损失训练《CVPR2019文字检测归纳》

P and Q represent the prediction and ground truth respectively. D(, ) is the Dice coefficient

《CVPR2019文字检测归纳》

最终分割束的损失是两个map损失的加权和

《CVPR2019文字检测归纳》

实验中将λ设为0.5 。中心图是由全图经过缩放因子缩放后得到,实验中为0.7.

之所以使用两个map,是因为full map更集中于处理文字和非文字区域,center map则更容易区分临近的文本实例。

Cluster Processing

利用8通道的编码图和两个1通道的分割图进行像素的聚类。

具体的聚类步骤如下:首先使用DBSCAN聚类算法得到两个聚类集合:属于Full Map和属于Center Map;接着对在Full Map内但是在Center Map外的像素进行簇类划分,这里划分的规则是根据嵌入空间中当前像素的嵌入距离到每个簇类平均嵌入距离,若小于指定的阈值,则该像素归于当前簇类;反之,亦然.接着通过上述递归,得到新的簇类集合,然后对每个簇类集合采用最小外接矩形框最为最终的文本行检测框。

结果比较

能看出来,作者的效果主要是由较高的recall提高的,但是检测的精度不如许多的方法,在该方法上提高精度应该有可挖掘的点。

《CVPR2019文字检测归纳》

四、Look More Than Once: An Accurate Detector for Text of Arbitrary Shapes

作者的思路参考了人观看长文本时的思路,会先浏览一部分,再多看几次浏览整个文本。

受限与CNN的感受野的及文本行的表征方式(bbox或四边形),长文本行与曲线文本的检测仍存在极大的挑战.针对此,作者提出了LOMO(Look More Than Once),它由三部分组成:直接回归模块(DR,通常是单阶段的目标检测器)、迭代修正模块(IRM)、形状表征模块(SEM).首先由直接回归模块产生粗略的四边形表征的候选文本框;接着在提取的特征图上通过迭代修正得到完整的长文本行的四边形表征;最后通过结合文本行区域、文本行中心线及文本行边界偏移得到最终的文本行。可以实现端到端的训练

网络结构

《CVPR2019文字检测归纳》

由resnet50+FPN的backbone提取特征,将共享的卷积特征输入三个组件。共享的特征是128通道,分辨率为输入尺度的四分之一。

Direct Regressor

DR的输出是一个网络的score map,输出特征图上代表的是逐像素是文本的概率值。特征图上按阈值取为正样本的点在原图的区域仍认为是正样本区域,对于每个正样本点,使用八个通道来预测包含该像素点的Bbox四个角点的偏移值。

该模块的loss包括两部分,一个是目标/非目标的分类损失,一个是回归损失。

对于分类任务,可以认为是下采样4倍的二值化分割任务,没有采用dice-coefficient loss,而是提出了一种尺度无关的损失函数,增强网络对于尺度的鲁棒性。

《CVPR2019文字检测归纳》

y is a 0/1 label map, yˆ is the predicted score map。sum是在2D空间的累加函数,w是一个2维权值图。正样本点的值由归一化常数L除以它们所属的四边形的较短边来计算,而负样本点的值设置为1.0。 我们在实验中将L设置为64

使用smooth L 1 loss来监督回归,总的损失由两种损失的加权和构成,参数λ实验中设为0.001《CVPR2019文字检测归纳》

Iterative Refinement Module

IRM源于仅进行边框回归的基于区域的目标检测方法。然而使用的是RoI transform layer来提取文本框中的特征块而不是RoI pooling layer or RoI align layer。与后面两个相比,RoI transform layer能够在提取文字框特征时保持宽高比不变。在相同感受野的情况下,文本行的四个角点可以为文本行的边界提供更加精确的信息.因此采用了角点注意力机制来对每个角点进行坐标偏移回归。

《CVPR2019文字检测归纳》

损失函数如下,从DR步骤的输出选择K个检测的文本框作为训练样本,《CVPR2019文字检测归纳》表示第k对检测到的文字区域和标答的第j个坐标的偏移,《CVPR2019文字检测归纳》是相应的预测值。

《CVPR2019文字检测归纳》

Shape Expression Module

方形框对于文本的表示效果不好,使用SEM来解决这一问题。回归了文本行的三种几何属性:文本行区域、文本行中心线及文本行边界偏移(文本中心线和上下文本边界线的偏移)。

文本行区域是一个二值mask,文字区域用1表示,背景区域用0表示。文本行中心线也是一个二值mask,它是文本行多边形标注的一个向内收缩的多边形。边界偏移是4通道的feature map,在文本线图的相应位置上的正样本响应区域内具有默认值。

《CVPR2019文字检测归纳》

网络输出是6个通道回归所有文字属性图,损失函数如下

《CVPR2019文字检测归纳》

K是从IRM模块传入的文本框个数,《CVPR2019文字检测归纳》分别是文本区域和文本中心线的dice-coefficient loss。《CVPR2019文字检测归纳》使用smooth L 1 loss。λ 1 , λ 2 and λ3分别设为0.01, 0.01 and 1.0

Text Polygon Generation

包含三个步骤:文本中心线采样,边界点生成和多边形得分。

第一步在预测的文本中心图上从左至右采样等距间隔的N个点,对于曲线文字检测设为7,方形文字检测设为2.

基于已采样的文本中心线,结合相同位置的4个角点的偏移maps,得到文本行的边界点,然后顺时针连接这些角点,就可以得到文本行的完整表征。

计算多边形内文本区域响应的平均值作为新的置信度分数。

网络的整体loss

《CVPR2019文字检测归纳》

训练分为warming-up and fine-tuning两个阶段,在warming-up 阶段,在合成的数据集上训练DR模块10个epoch,这个步骤可以让DR模块生成高召回率的候选区域。在 fine-tuning阶段,使用真实数据集对三个模块训练10个epoch,NMS用来挑选最高的K个区域。由于DR最初的效果不佳,这会影响IRM和SEM分支的收敛,因此在实践中,用随机干扰的GT文本框替换了前K个50%的候选区域。IRM在训练期间仅执行一次优化。

推理时,DR首先生成文本框的score map和几何图(边框坐标偏移),然后按照NMS生成初步的候选。 接下来,将候选区域和共享特征图都输入到IRM中进行多次refine。 将经refine的四边形和共享特征图输入SEM,以生成精确的文本多边形和置信度分数。 最后,阈值s用于去除低置信度多边形。在实验中将s设置为0.1

Ablation Study

IRM模块:实验证明IRM模块对于结果的提升,而且修正的次数越多,效果越好,但是当大于2次之后效果不明显。

Corner Attention Map:实验证明对于检测长文本具有很好的效果

SEM:实验证明对于曲线文字检测的提升

Number of Sample Points in Center Line:效果提升明显,大于一定阈值后不变

《CVPR2019文字检测归纳》

五、Character Region Awareness for Text Detection

该方法检测字符的思路与centernet类似。

本文的主要思路是先检测单个字符(character region score)及字符间的连接关系(affinity score),然后根据字符间的连接关系确定最终的文本行,简称CRAFT.其网络结构与EAST的网络结构相似:特征提取主干网络部分采用的是VGG-16 with batch normalization;特征decode模块使用了跳跃连接的方式,与U-Net相似,也是采用自顶向下的特征聚合方式;网络最终输出两个通道特征图,即region score map和affinity score map。region score用于定位在图片中的字符,affinity score用于将字符聚集为同一实例。

《CVPR2019文字检测归纳》

《CVPR2019文字检测归纳》

由于没有现存的字符集标注的数据集,因此作者采用的是弱监督的方式进行训练。

Ground Truth Label Generation

在合成的数据集上,对于输入图像,生成字符级别的region score and the affinity score标注。region score代表该点是字符中心的概率值,affinity score表示在相邻字符之间中心点的概率。

不像分割的方法对每个像素独立的标注,作者通过对字符中心点增加高斯heatmap得到。affinity score同样如此。

《CVPR2019文字检测归纳》

文中说采用高斯热度图的好处是它能很好地处理没有严格包围的边界区域.对于character region score标签生成,由于对bbox中的每个像素计算高斯分布值比较耗时,本文结合透视变换,采用了近似估计的方法来生成标签,具体步骤如下:准备一个二维高斯图,计算高斯图区域和每个文字框的透视变换,将高斯图变换到文字框区域。

对于生成affinity score,先生成affinity box,具体做法为将字符的Bbox对角线连接,得到上下两个三角形,取每个三角形的中心连到一起就得到了affinity box。取其中心点作为affinity point,同样施加高斯map,得到affinity score。

这种真值标注方法能够使网络在小感受野的情况下检测较大或较长的文字实例,只需要让卷积核关注字符间和字符内的信息而不用关注整个文本实例。

Weakly-Supervised Learning

真实的数据集上没有字符级别的标注,作者根据词汇级别的标注使用弱监督的方法生成字符级的标注。对于输入的图片,先将图片中的文字crop出来,使用中间模型预测字符区域得分,从而生成字符级的标注。为了显示中间模型预测的可靠性,每一个词框的置信图的值与检测到的字符与标注字符的比值成正比。

《CVPR2019文字检测归纳》

词划分为字符的步骤:首先从图片中crop出词,使用中间模型预测区域得分,watershed algorithm划分字符区域,使字符区域包含在字符边框中,最后将字符边框的坐标映射回原图,可以通过这种生成伪的字符box的方法生成伪标签。

《CVPR2019文字检测归纳》

通过标注给定的文本实例长度确定伪标签的置信度。假定采样的文本实例为w,则置信度为

《CVPR2019文字检测归纳》

逐像素置信图的公式为:

《CVPR2019文字检测归纳》

p是在区域内的像素。

目标函数为《CVPR2019文字检测归纳》是伪标签的region score和 affinity map,S r § and S a §是预测的region score和 affinity map《CVPR2019文字检测归纳》

    原文作者:Secortot
    原文地址: https://blog.csdn.net/Secortot/article/details/103180979
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞