论文题目:Shape Robust Text Detection with Progressive Scale Expansion Network
论文地址:https://arxiv.org/abs/1903.12473
代码地址:https://github.com/whai362/PSENet
文章贡献:
提出了逐级尺寸扩张网络(Progressive Scale Expansion Network,PSENet),它是一种基于分割的文本检测方法,能够精确定位任意形状的文本实例,且对相邻的实例可以区分识别。
该网络在多个数据集上有先进结果。
1 背景与动机
现有的基于CNN的场景文本检测方法可分为两类:基于回归的方法和基于分割的方法。
基于回归的方法通常检测的文本形状为矩形或四边形,而不能处理任意形状的文本。如下图b中,4行文本应为弯曲形状,如果检测框为矩形则不能很好的包含对应文本信息。
基于分割的方法基于像素级的分类来定位文本实例,可以定位弯曲文本,但是很难将相近文本区分开。如上图所示,图a中应为4行文本,而图c只识别为了2行,这将对后续的文本识别带来困难。
因此论文提出PSENet,能够精确定位任意形状的文本实例,且对相邻的实例可以区分识别(图d)。
2 相关工作
(1)基于回归的方法
通常基于一般的目标检测框架,如Faster R-CNN和SSD。
TextBoxes修改了anchor的尺寸和卷积内核的shape,以调整文本的不同纵横比;EAST使用FCN直接预测每个像素的得分图、旋转角度和文本框;RRPN采用了Faster R-CNN,提出了RPN部分的旋转建议,用于检测任意方向的文本;RRD从两个单独的分支中提取特征图进行文本分类和回归,从而更好的进行长文本检测。
然而,大多数基于回归的方法通常需要设计复杂的anchor且网络阶段繁琐,这可能需要彻底的调优,导致性能欠佳。且该方法主要针对multiple oriented文本检测,对弯曲文本不友好。
(2)基于分割的方法
Zhang等人首先采用FCN来提取文本块,并通过MSER从这些文本块中检测候选字符;Yao等人将一个文本区域表述为文本区域和方向等各种属性,然后利用FCN预测相应的热图;Lyu等人利用角点定位来寻找适合文本实例的不规则四边形;PixelLink通过预测不同文本实例之间的像素连接来分隔相邻文本;TextSnake使用ordered disks表示曲线文本,用于曲线文本检测;SPCNet使用实例分割框架,利用上下文信息检测任意形状的文本,同时抑制假阳性。
上述方法均在水平方向和multiple oriented上有不错的效果,但是除了TextSnake,都没有特别考虑弯曲文本的检测,而TextSnake耗时长且后处理步骤复杂。
3 提出的方法
(1)网络框架
蓝色部分(特征提取):骨干网络为resnet,其4个stage的输出结果分别为[P2,P3,P4,P5],通道数为[256,512,1024,2048],对其分别进行1x1卷积调整通道,使其通道数均为256。
橙色部分(FPN):对P5上采样到P4大小,两者相加,再经过3x3卷积整合特征得到新的P4,然后继续对P4和P3,新的P3和P2进行相同处理,得到新的[P2,P3,P4,P5]。
特征融合:将FPN得到的[P2,P3,P4,P5]均上采样到P2大小,并在通道维度上concat,整合成大的特征F,其通道数为256*4=1024:
PSE:将特征F经过3x3卷积调整通道为256,再经过1x1卷积获得n个不同的分割结果,记为S(即通道数变为n,每个通道图表示一个分割结果Si)。最后将Si放大至原图大小,并进行逐级尺寸扩张融合,得到最后的检测结果R。
(2)后处理算法PSE
假设获取到了3种分割结果S1,S2,S3。基于最小核的映射S1中可以找到4个实例C={c1,c2,c3,c4}(3种分割结果中S1的检测区域最小,有4个不同的连通域),将S1的检测结果映射到原图上即为图b,每种颜色表示不同的文本实例。S1的所有前景像素即为该图片4个文本区域的中心部分。
然后,通过判断C的相邻像素是否为S2的前景像素,若是,则将该像素合并到图b中,由此逐步扩张检测到的文本区域,得到图c的结果。继续对S3进行相同处理,得到图d结果,作为最终的文本检测结果。
图g展示了基于广度优先搜索BFS的尺寸扩张策略,蓝色块和成色块分别为不同的文本实例,灰色块为S2中属于文本的像素,白色块为不属于文本的像素。首先由橙蓝色块开始逐步朝其四周的灰色块扩张,将灰色块改为对应颜色。对于红框框起的重叠的像素,遵循“先到先得”的原则。
算法细节如下:
Q是一个队列,Neighbor(p)表示像素点p的上下左右4个相邻的像素,GroupByLabel(·)表示给label的中间结果分组,即将语义label转换成实例label。Si[q]=True表示Si分割结果中,像素点q位置的预测结果为文本。C代表扩张前的内核(文本区域),E表示扩张后的内核。
(3)标签生成
PSE会产生不同核尺度的分割结果Si,因此在训练过程中也需要其对应的标签。论文使用缩小GT的方式来获取不同尺度的标签。
为了得到图c所示的多尺度mask结果,论文使用Vatti裁剪算法将原多边形pn(蓝色)缩小di像素,得到缩小后的多边形pi(红色)。 之后,将pi转变成0-1像素,以作为GT标签,这些标签即为Gi。
缩小的像素di可由式2求得:
ri是缩放因子,Area(pn)为pn的面积,Perimeter(pn)为其周长。
标签Gi的缩放因子ri可由式3求得:
m是最小尺度比例,取值范围(0-1],n是设置的多尺度标签的数量。在式3中,ri将根据n,m的取值而变化,ri的取值将由m逐渐增加到1。
(4)损失函数
Lc表示文本实例的损失,Ls表示缩小的文本实例的损失,以参数λ来平衡两者。
考虑到文本实例仅占整张图片的小部分区域,论文使用Dice系数来计算损失:
式5中Sixy和Gixy分别表示分割结果Si和其对应的GT标签Gi的(x,y)像素点取值。
论文在Lc中采用OHEM方法去区分类似于文本笔画的模式,将OHEM给出的训练mask记为M,则:
由于Ls是缩小的文本实例的损失,它被原始原本实例所包围,因此为了避免冗余,在Sn中忽略非文本区域的像素:
Sn(x,y)<0.5认为是非文本像素,其W(x,y)=0,不纳入Dice系数的计算。
4 实验结果
(1)数据集
-
CTW1500:长弯曲文本,训练集:测试集=1000:500,使用14个点来标记。
-
Total-Text :包含水平、多方向、弯曲文本, 训练集:测试集=1255:300。
-
ICDAR 2015 : 训练集:测试集=1000:500,矩阵的4个点标注。
-
ICDAR 2017 MLT:由9种语言的完整场景组成,训练:验证:测试=7200:1800:9000。
(2)消融实验
kernel不能作为最终结果
图6a中在kernel-only情况下F-Measure结果很差。
最小kenel scale的影响
设置了kenel scale由0.1到1的实验。图6a可得,kenel scale过大或多小效果都不好,m=1时只只使用了原本GT,而没有使用PSE,无法区分相邻的文本;而m太小时,PSE会将一条文本划分为多个区域,效果不好。
kernel number的影响
设置了kernel number由2到10的实验。由图6b可得,n>=5时,效果趋于平缓。
骨干网络的影响
(3)与先进方法的比较
弯曲文本检测
多方向文本检测
多语言文本检测
可视化结果