Introduction
目前场景文本检测分为两个分支,第一个分支基于通用对象检测器(SSD,YOLO 和DenseBox ),如TextBoxes ,FCRN 和EAST 等,它们直接预测候选边界框。第二个分支基于语义分割,它们生成分割图并通过后处理生成最终文本框。作者的动机主要来自两个观察结果:1)矩形可以由角点确定,无论矩形的大小,宽高比或方向如何; 2)区域分割图可以提供有效的文本位置信息。因此,我们首先直接检测文本区域的角点(左上角,右上角,右下角,左下角,如图1所示)而不是文本框。此外,我们预测位置敏感的分割图(如图1所示)。最后,我们通过对检测到的角点进行采样和分组来生成候选边界框,然后通过分割信息消除不合理的框。我们提出的方法的描述如图2所示。
上述模型有以下优点:1)由于我们通过对角点进行采样和分组来检测场景文本,因此我们的方法可以自然地处理任意方向的文本; 2)当我们检测角点而不是文本边界框时,我们的方法可以自发地避免宽高比变化大的问题; 3)通过位置敏感分割,它可以很好地分割文本实例,无论实例是字符,单词还是文本行; 4)在我们的方法中,候选框的边界由角点确定。与从锚点或文本区域回归文本边界框相比,生成的边界框更准确,特别是对于长文本。
Network
1. Feature Extraction
如上图红色框所示,文中采用VGG16,将fc6和fc7层换成卷积层conv6和conv7,并在后面添加了一些卷积层(conv8, conv9, conv10, conv11),用于增加感受野的范围。之后采用DSSD的top-down pathway结构,解卷积采用了从conv11到conv3的feature map(其中conv10到conv3的featrue map被重用),输出的feature命名为F3; F4; F7; F8; F9; F10和F11。最后,由具有更丰富的特征表示的conv11和反卷积模块提取的特征用于检测角点并预测位置敏感图。
2. Corner Detection
对于给定的旋转矩形边界框R =(x; y; w; h;θ),有4个角点(左上角,右上角,右下角,左下角),可以表示为顺时针方向的二维角点坐标{(x1; y1); (x2; y2); (x3; y3); (x4; y4)}。为了方便地检测角点,这里我们重新定义并用水平方格C =(xc; yc; ss; ss)表示角点,其中xc; yc是角点的坐标(例如x1;y1表示左上角角点的坐标),也是方格C的中心坐标点。 ss是旋转的矩形边界框R的短边长度。这里意思就是将待检测角点用一个水平矩形表示,角点的位置就是这个水平矩形的中心,检测出水平矩形就相当于检测出角点的位置。
通过上面角点的重新定义,检测角点的方法就可以类似于SSD和DSSD,利用定义的default boxes(类似于Faster RCNN中的anchor boxes)来进行矩形的检测。与物体检测有所不同的是,同一个位置可能存在多个角点(例如同一个位置可能同时为左下角点和右上角点)。在一张m×n的特征图中,每个单元中有k个默认框,对于每个默认框的每种角点,“得分”分支和“偏移”分支分别输出2个分数和4个偏移。这里,“得分”分支的2个分数分别表示该位置是否存在角点。总的来说,“得分”分支和“偏移”分支的输出矩阵是k×q×2和k×q×4,其中q表示角点的类型。默认情况下,q等于4。
3. Position-Sensitive Segmentation
我们使用位置敏感分割来生成文本分割图。与先前的文本分割方法相比,相对位置被使用了。详细地,对于文本边界框R,使用一个g×g规则网格将文本边界框划分为多个区间(比如,对于一个2×2网格,文本区域可以分成4个区间,即顶部 - 左,右上,右下,左下)。对于每个区间,使用分割图来确定该图中的像素是否属于该区间。
在统一网络中,我们使用角点检测构建位置敏感分段。我们重用F3,F4,F7,F8,F9的特征,并在它们上构建一些卷积块,在角点检测分支当中遵循残差块体系结构(如下图所示)。通过双线性上采样将这些块的输出调整为F3的比例,比例因子被设置为1,2,4,8,16。然后将具有相同比例的输出相加以产生更丰富的特征。我们通过两个连续的Conv1x1-BN-ReLU-Deconv2x2块进一步扩大融合特征的分辨率,并将最后一个去卷积层的内核设置为g×g。因此,最终的位置敏感分割图具有g×g个通道并且具有与输入图像相同的大小。
Training and Inference
1.Training-Label Generation
对于每个输入训练样本,首先将标注转换成包围字符区域最小的矩形,然后确定4个角点的位置。
对于一个旋转矩形,4个角点的确定遵循下面两个规则:
左上与左下两个点的x坐标小于右上和右下两个点的x坐标
左上与右上两个点的y坐标小于右上和右下两个点的y坐标
通过确定好的4个角点就可以确定旋转矩形的位置了,计算旋转矩形的短边就可以使用一个水平正方形重新定义角点了,通过一个确定的旋转矩形可以很方便的求出position-sensitive segmentation掩码,我们使用R生成角点检测和位置敏感分割的标签。对于角点检测,我们首先计算R的短边并用水平方块表示4个角点,如图4(a)所示。对于位置敏感的分割,我们使用R生成文本/非文本的像素掩码。我们首先初始化4个与输入图像具有相同比例的掩码,并将所有像素值设置为0。然后我们将R分成四个带有2×2规则网格的区间,并将每个区域分配给一个掩码,例如左上方的区域到第一个掩码。之后,我们将这些区域中所有像素的值设置为1,如图4(b)所示。
2.Training-Optimization
我们同时训练角点检测和位置敏感分割。损失函数定义为
其中 Lconf 和 Lloc 是角点检测模块中预测置信度得分的得分分支和角点检测模块中的偏移分支的损失函数。 Lseg是位置敏感分割的损失函数。 Nc是默认框的数量,Ns是分割图中的像素数。 Nc和Ns用于归一化角点检测和分割的损失。 λ1和λ2是三个任务的平衡因子。默认情况下,我们将λ1设置为1,将λ2设置为10。
Lconf 采用的是交叉熵计算
其中yc是所有默认框(真实标签),1表示正确,0表示错误。 pc是预测的分数。考虑到正样品和负样品之间的极端不平衡,类别均质化是必要的。我们使用online hard negative mining proposed 来平衡训练样本,并将正样本与负样本比率设置为1:3。
对于偏移分支,我们将相对于默认框的偏移量作为fast-RCNN 进行回归,并使用平滑L1损失对其进行优化:
其中yl是真实框的偏移量,pl是预测的偏移。y1可以通过默认框B =(xb; yb; ssb; ssb)和角点框C =(xc; yc; ssc; ssc)来计算。
我们通过最小化Diceloss来训练位置敏感的分割
其中ys是位置敏感分段的标签,ps是我们分段模块的预测。
3.Inference-Sampling and Grouping
在通过角点检测得到一系列的角点后,将score小于0.5的角点忽略,然后使用NMS得到最终的候选角点信息。
因为一个旋转矩形能通过两个点和垂直与两点连线的一条边确定,在预测各个角点时短边长度已知,这时将所有候选角点与对应短边组合就可以得到一系列的候选矩形了。
在得到候选矩形的过程中有一些过滤的规则:
1、比如左上角点的x坐标是必须小于右上角点的x坐标
2、旋转矩形的短边必须大于某个阈值,文中设为5
3、
4. Inference-Scoring
具体来说,对于旋转的候选框(得到的候选矩形),我们首先将候选框分成g×g区域。 然后我们为每个区域生成一个矩形,其最小区域覆盖。 我们遍历最小矩形中的所有像素,并计算区域中所有像素的平均值。 最后,通过平均g×g区间的平均值来获得旋转的边界框的得分。此过程如下图所示。设定阈值为0.6,旋转矩形分数小于阈值的被过滤。