【2】图像分割 -- 特征融合经典模块汇总

特征融合阶段

这个是FPN特有的阶段,FPN一般将上一步生成的不同分辨率特征作为输入,输出经过融合后的特征。输出的特征一般以P作为编号标记。如FPN的输入是,C2、C3、C4、C5、C6,经过融合后,输出为P2、P3、P4、P5、P6。


FPN的演进

 FPN网络主要解决的问题是目标检测在处理多尺度变化问题的不足。

【2】图像分割 -- 特征融合经典模块汇总_第1张图片

其中FPN自从被提出来,先后迭代了不少版本。大致迭代路径如下图:

【2】图像分割 -- 特征融合经典模块汇总_第2张图片

 1、无融合

无融合,又利用多尺度特征的典型代表就是2016年的鼎鼎有名的SSD,它直接利用不同stage的特征图分别负责不同scale大小物体的检测

【2】图像分割 -- 特征融合经典模块汇总_第3张图片

SSD首先尝试在多级金字塔特征上检测目标,它重用网络前馈中计算出的来自不同层级的多尺度特征图来预测不同尺寸的对象。但是,由于浅层特征图包含的语义信息不足,因此这种自下而上的途径在小目标上的准确性较低。

2、自上而下单向融合的FPN

当前物体检测模型的主流融合模式。如我们常见的Faster RCNN、Mask RCNN、Yolov3、RetinaNet、Cascade RCNN等,具体各个FPN的内部细节如下图。

【2】图像分割 -- 特征融合经典模块汇总_第4张图片

3、简单双向融合

FPN自从提出来以后,均是只有从上向下的融合,PANet是第一个提出从下向上二次融合的模型,并且PANet就是在Faster/Master/Cascade RCNN中的FPN的基础上,简单增了从下而上的融合路径。看下图。

【2】图像分割 -- 特征融合经典模块汇总_第5张图片

 4、复杂的双向融合

PANet的提出证明了双向融合的有效性,而PANet的双向融合较为简单,因此不少文章在FPN的方向上更进一步,尝试了更复杂的双向融合,如ASFF、NAS-FPN和BiFPN。

4.1 ASFF
ASFF(论文:Learning Spatial Fusion for Single-Shot Object Detection)作者在YOLOV3的FPN的基础上,研究了每一个stage再次融合三个stage特征的效果。如下图。其中不同stage特征的融合,采用了注意力机制,这样就可以控制其他stage对本stage特征的贡献度。

【2】图像分割 -- 特征融合经典模块汇总_第6张图片

4.2 NAS-FPN和BiFPN

NAS-FPN(基于搜索结构的FPN )和BiFPN,都是google出品,思路也一脉相承,都是在FPN中寻找一个有效的block,然后重复叠加,这样就可以弹性的控制FPN的大小。

【2】图像分割 -- 特征融合经典模块汇总_第7张图片

其中BiFPN的具体细节如下图:

【2】图像分割 -- 特征融合经典模块汇总_第8张图片

4.3 Recursive-FPN

递归FPN是新出炉的(原论文是DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution),效果之好令人惊讶,使用递归FPN的DetectoRS是目前物体检测(COCO mAP 54.7)、实体分割和全景分割的SOTA。递归FPN理解起来很容易,就是将传统FPN的融合后的输出,再输入给Backbone,进行二次循环,如下图。

【2】图像分割 -- 特征融合经典模块汇总_第9张图片

5、M2det中的SFAM

M2det中的SFAM,比较复杂,它是先把C3与C5两个stage的特征融合成一个与C3分辨率相同的特征图(下图中的FFM1模块),然后再在此特征图上叠加多个UNet(下图中的TUM模块),最后将每个UNet生成的多个分辨率中相同分辨率特征一起融合(下图中的SFAM模块),从而生成最终的P3、P4、P5、P6特征,以供检测头使用。具体如下图。

【2】图像分割 -- 特征融合经典模块汇总_第10张图片

【2】图像分割 -- 特征融合经典模块汇总_第11张图片


FPT(Transformer)

源论文:FPT
源代码:FPT源码pytorch
其次还有很多FPN变体,可谓数不胜数。。。Fully-FPN,Simple-PAN,Libra R-CNN等等等等


FPN的优化会显著带来物体检测的性能提升,当前最好的FPN是递归FPN,期待将来更有效的FPN出现。 

你可能感兴趣的:(工业缺陷检测)