PAN解读 —— Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

简述

本文介绍的是一个“Face++ ”在今年8月份刚刚发在ICCV 2019上面的论文——PAN像素聚合网络),这是一篇文字检测方面的论文,其达到了目前文字检测的最好效果。

之前在CVPR 2019上发的PSENet是之前效果非常好的文本检测算法,PAN的作者还是之前PSENet算法的原班作者,所以说我们可以把PAN看做是PSENet V2版本。

之前PSENet的检测效果很好,但是整个网络的后处理复杂,导致其运行速度很慢,PAN改进了网络使其在不损失精度的情况下,极大加快了网络inference的速度。(trade-off)

下图是目前常用的文本检测算法任意形状文本检测数据集上的效果:
在这里插入图片描述

PAN整个网络主要有两个步骤
在这里插入图片描述

  1. 用分割网络预测文字区域kernel以及相似向量
  2. 从预测的kernel中重建完整的文字实例;

所以为了保证网络的高效率,我们就需要采取措施来降低这两步的耗时:采用的更轻量级的backbone更简单的后处理

网络结构

这个PAN的整个网络结构,网络主要由Backbone + Segmentation Head(FPEM + FFM) + Output(Text Region、Kernel、Similarity Vector)组成。
在这里插入图片描述
本文使用将 ResNet-18 作为 PAN 的默认 Backbone,并提出了低计算量的
Segmentation Head(FPFE + FFM)
以解决因为使用 ResNet-18 而导致的特征提取能力较弱,特征感受野较小且表征能力不足的缺点。

此外,为了精准地重建完整的文字实例(text instance),提出了一个可学习的后处理方法——像素聚合法(PA),它能够通过预测出的相似向量来引导文字像素聚合到正确的kernel上去。

下面将详细介绍一下上面的各个部分。

Backbone

本文使用 ResNet-18 作为 PAN 的默认 backbone(PSENet用的是ResNet-54),其目的就是为了减少计算量。

论文backbone提取stride为 4 , 8 , 16 , 32 4,8,16,32 4,8,16,32 c o n v 2 , c o n v 3 , c o n v 4 , c o n v 5 conv2,conv3,conv4,conv5 conv2,conv3,conv4,conv5的输出作为高低层特征。每层的特征图的通道数都使用 1 × 1 1 \times 1 1×1卷积降维至128得到轻量级的特征图 F r F_r Fr

Segmentation Head

PAN 是一个基于分割的任意形状文字检测模型,其使用 ResNet-18 作为网络的默认 backbone,虽减少了计算量,但是backbone层数的减少势必会带来模型学习能力的下降。为了提高效率,研究员在 ResNet-18 基础上提出了一个低计算量但可高效增强特征分割头Segmentation Head。它由两个关键模块组成:特征金字塔增强模块(Feature Pyramid Enhancement Module,FPEM)、特征融合模块(Feature Fusion Module,FFM)

FPEM

FPEM 呈级联结构且计算量小,可以连接在 backbone 后面让不同尺寸的特征更深、更具表征能力。在 FPEM 模块后面,使用了特征融合模块(FFM)来将不同深度的FPEM 所产生的特征融合,产生最终用于分割任务的特征图 F f F_f Ff

下图就是FPEM特征金字塔增强模块,其是作者提出的用于增强backbone输出特征图的一个模块。
在这里插入图片描述

如下图,FPEM是一个 U形模组,由两个阶段组成,up-scale 增强down-scale 增强。up-scale 增强作用于输入的特征金字塔,它以步长 32,16,8,4 像素在特征图上迭代增强。在 down-scale 阶段,输入的是由 up-scale 增强生成的特征金字塔,增强的步长从 4 到 32,同时,down-scale 增强输出的的特征金字塔就是最终 FPEM 的输出。

类似于 FPN,FPEM 能够通过融合低级与高级信息来增强不同 scale 的特征。FPEM模块可以看成是一个轻量级的FPN,只不过这个FPEM计算量不大(大约为FPN的1/5),并可以通过不停地级联 n c n_c nc次)以达到不断增强特征的作用。
在这里插入图片描述

:Therefore, FPEM is capable of enlarging the receptive field (3×3 depthwise convolution) and deepening the network (1×1 convolution) with a small computation overhead.

FFM

Feature Fusion Module模块用于融合不同尺度的特征,其结构如下:

We firstly combine the corresponding-scale feature maps by element-wise addition. Then, the feature maps after addition are upsampled and concatenated into a final feature map which only has 4×128 channels.

在这里插入图片描述

特征融合模组用于融合不同尺度的特征,这是因为低级、高级语义信息对于语义分割来说都很重要。研究人员提出了如上图的特征图融合方法。他们首先通过逐元素相加结合了相应 scale 的特征图,然后对特征图进行上采样,连接成最终只有 4*128 通道的特征图 F r F_r Fr。( F r F_r Fr用于后面的预测输出)

Output and Pixel Aggregation(PA)

在这里插入图片描述
网络输出

  1. text_region, w ∗ h ∗ 1 w*h*1 wh1
  2. Kernel, w ∗ h ∗ 1 w*h*1 wh1
  3. Similarity vectors (无监督学习), w ∗ h ∗ 4 w*h*4 wh4
    在无监督聚类中,通过找一个聚类中心使得周围点到聚类中心的距离最小,这个距离的度量需要聚类中心点和待聚类点的一个值来计算,此处的similarity vectors输出的就是那个值。(用以度量距离,这里其实我也比较迷)

像素聚合(PA)

文字区域虽然保留了文字完整的形状,但是在其中也经常会出现重叠在一起的文本(见图 (g))。另外,虽然可以用kernel来很好地区分文字(见图 (h)),但是这些kernel并不能涵盖所有的文字区域。为了重建完整的文字实例,我们需要将文本区域中的像素融合到核中,因此提出了“像素聚合算法(Pixel Aggregation)”来将文字像素聚合到正确的kernel中去。

To rebuild the complete text instances, we need to merge the pixels in text regions to kernels. We propose a learnable algorithm, namely Pixel Aggregation, to guide the text pixels towards correct kernels.

注:在像素聚合算法的设计中,研究人员借用了聚类的思想来从kernel中重建完整的文字实例。如果将文字实例视为聚得的类群,那么文本实例的核就是类群的中心,而文本像素是被聚类样本。自然地,为了将文本像素聚合到对应的核,文本像素与和它相同文本的核之间的距离就要足够小。

损失函数

在这里插入图片描述

网络总的损失函数如上:其中 L t e x L_{tex} Ltex L k e r L_{ker} Lker分别是text region和kernel的分割Loss, L a g g L_{agg} Lagg是衡量文本实例中的像素和其对应的kernel的loss(是一个聚合loss,aggregation loss), L d i s L_{dis} Ldis是分辨不同文本实例的kernel的一个loss(discrimination loss)。 α \alpha α β \beta β是平衡各个loss的值,设为0.5和0.25。

其中,考虑到文字和非文字像素非常不平衡, L t e x L_{tex} Ltex L k e r L_{ker} Lker的计算方式和PSENet V1的方法一样(如上图),都是采用的dice loss

论文的重点在于 L a g g L_{agg} Lagg L d i s L_{dis} Ldis,下面分别描述。

Aggregation Loss

在这里插入图片描述

L a g g L_{agg} Lagg用于衡量文本实例和其对应kernel的loss,其作用是保证同一文本实例的kernel和文本实例内其他像素点之间的距离< δ a g g \delta_{agg} δagg 。其公式如上。

其中, N N N是图像中文本实例(text instance)的数量, T i T_i Ti表示第 i i i个文本实例, K i K_i Ki是该文本实例对应的kernel。 D ( p , k i ) D(p, k_i) D(p,ki)定义了文本实例 T i T_i Ti内的像素 p p p k e r n e l   K i kernel\ K_i kernel Ki之间的距离,其公式如上。

其中, δ a g g \delta_{agg} δagg是一个常量,默认0.5, F ( p ) F(p) F(p)是网络在像素 p p p处输出的相似度向量, G ( . ) G(.) G(.) k e r n e l   K i kernel\ K_i kernel Ki的相似度向量,计算公式如上。

G ( . ) G(.) G(.)的计算就是对于 k e r n e l   K i kernel\ K_i kernel Ki 里的每一个像素 ,网络在像素 q q q处输出的相似度向量和除以 k e r n e l   K i kernel\ K_i kernel Ki的像素点数量, ∣ K i ∣ |K_i| Ki这里代表的就是里像素点的数量。

其中, D ( p , k i ) D(p, k_i) D(p,ki)里的||……||是一个L2范数,其是一个用于衡量像素点 p p p k e r n e l   K i kernel\ K_i kernel Ki距离的值,值越小表示相似度越大,公式中距离小于 δ a g g \delta_{agg} δagg的像素点就没必要参与loss计算了,关注那些距离远的值即可。

Discrimination Loss

在这里插入图片描述
L d i s L_{dis} Ldis是用于不同文本实例的kernel的loss,其作用是保证任意两个kernel之间的距离> δ d i s \delta_{dis} δdis 。其公式为:

即对于每一个文本实例kernel,分别计算和其他kernel的距离。

其中, δ d i s \delta_{dis} δdis是一个常量,默认3。当两个kernel之间的距离||……|| > δ d i s \delta_{dis} δdis时,就表示这两个kernel的距离已经足够远了。

另外,在训练过程中, L t e x L_{tex} Ltex的计算使用的OHEM,正负像素之比是1:3,计算 L k e r L_{ker} Lker L a g g L_{agg} Lagg L d i s L_{dis} Ldis时均只考虑ground truth内的文本像素。

到这里训练阶段就完成了,在预测阶段的后处理

  1. 从kernel中通过连通域确定初始的文本实例集合 K。
  2. 对于每一个文本实例 K i K_i Ki,按4方向从text_region中融合文本像素。融合条件: 文本像素点 p p p K i K_i Ki 之间similarity vectors的欧式距离< d(测试过程中 默认为6,自习看的同学应该能发现这里的这个6应该是有问题的。。。maybe)。
  3. 重复步骤2直到text_region没有文本像素。

实验结果

在这里插入图片描述

在这里插入图片描述

References

  • https://arxiv.org/abs/1908.05900
  • https://blog.csdn.net/ft_sunshine/article/details/90244514
  • https://zhuanlan.zhihu.com/p/79111059
  • https://zhuanlan.zhihu.com/p/81415166
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值