PAN论文阅读笔记

Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

PAN是一个任意形状文字检测模型,称之为像素聚合网络(PAN)。是psenet的改进版本,最突出的特点是既快又好。

核心是: 可学习的后处理方法——像素聚合法,它能够通过预测出的相似向量来引导文字像素去纠正核参数

本文作者之一谢恩泽的另一篇SPCnet( Supervised Pyramid Context Network)其中有一个亮点rescore模块,感觉跟本文的文本实例重建有一点点的联系。

PAN的简单流程如图 2,有两个步骤

(1)用分割网络预测文字区域、核区域(与psenet中的核类似,为文本区域的缩放)以及相似向量;

(2)从预测的核中重建完整的文字实例

 1.网络特征提取及预测部分

整体结构如下:

 FPEM(特征金字塔增强模块)以及FFM(特征融合)模块,目的是构造轻量级的FPN,提取更好的特征

为了加快网络的速度,对resnet18得出的feature map的维度进行了减小,对应上图的reducing channel过程;

其次是特征图的多层融合,单个FPEM模块借鉴FPN(如图4),FPEM是一个 U形模组,由两个阶段组成,up-scale 增强、down-scale 增强,特征从上到下融合,又从下往上融合,

不断增强各个尺度的特征信息,因维度小以及DWConv使得计算量小;

FPEM模块可以级联,多个模块产生多个结果,这些结果可以通过FFM模块进行融合(如图5),同样尺寸的feature map采用+操作,然后进行upsampling再拼接得到最终的feature map.

                          

在得到最终的feature map后,网络的输出包含三个部分:如图3(g)、(h)、(i)

(g)文本区域,(h)核区域,(i)每个元素的相似向量(4channels,用于像素聚合)

 2.像素聚合阶段:(核心部分文字实例重建)

 

上面 这一段是旷视官方总结的,非常精练清楚。需要结合loss计算对于原理会理解更清楚。

融合过程:

从kernel中通过连通域确定初始的文本实例集合 K ,  对于每一个核文本实例Ki,按4方向从text_region中融合文本像素
融合条件: 文本像素点 p 和 Ki 之间similarity vectors的欧式距离< d (测试过程中d默认为6)。
重复步骤直到text_region没有文本像素

3.Loss计算:

loss部分包含文本区域、核区域、agg(使类内距离小)、dis(使类间距离大)

 

 文本区域和核区域的Loss与Psenet一样,采用dice loss,因为文本和非文本的数量严重不均衡。

主要是agg和dis两部分loss的计算比较复杂。

agg_loss的公式讲解以及代码如下图:(转自知乎周军,以及github周军的PAN代码

结合代码更好理解:

 

 

 

 

dis_loss讲解以及代码:

 

 

 

 计算Loss时,文本loss采用ohem,agg和dis两部分Loss只关心ground truth 区域内的像素(去除冗余与Psenet一样)。

 

实验结果略,论文中sota对比以及消融实验非常详细。

参考:

https://www.zhihu.com/search?type=content&q=%20Pixel%20Aggregation%20Network

https://zhuanlan.zhihu.com/p/81415166

https://zhuanlan.zhihu.com/p/79111059

https://github.com/WenmuZhou/PAN.pytorch

posted @ 2020-07-15 17:28  you-wh  阅读(1685)  评论(0编辑  收藏  举报
Fork me on GitHub