【论文阅读】PSENet(CVPR2019)

论文题目: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)与先进方法的比较 

弯曲文本检测

 多方向文本检测

多语言文本检测

 可视化结果

 (4)速度分析

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值