【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)



论文信息

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

一、特征金字塔

在介绍这篇文章前,首先需要了解一下特征金字塔:这篇论文是CVPR2017年的文章,采用特征金字塔代替了传统的Scale handling 方法
论文链接:
https://arxiv.org/pdf/1612.03144.pdf
https://blog.****.net/xiamentingtao/article/details/78598027
https://github.com/kuangliu/pytorch-fpn
深度卷积神经网络天然地就能计算出金字塔特征结构,作者正是要利用这一点来构造一个在所有层级上都能有强语义的特征金字塔结构。 具体说来是要通过自顶向下(top-down)的通路以及横向连接将低分辨率、强语义特征和高分辨率、弱语义特征进行有机的结合,与类似算法不同之处在于FPN预测是在不同特征层独立进行的,而不是融合后在某一个单一的层次做预测,这很好保留了低层次的信息不丢失。下图描述了这几类网络的不同。
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
CNN中卷积层产生不同scale的图像,对每个scale的图像对应生成feature后作predict,计算开销和存储开销都较大。基于深度网络的检测算法出来之前,检测算法基本都是基于这种scale handling;后来出现的SNIP、SNIPER也是基于Image Pyramid。
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
框不出小物体像!多数的object detection算法如R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、YOLOv1以及R-FCN系列均采用这种方式,即仅采用网络顶层特征作预测。
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
底虽然框出了小物体,但小物体容易被错分。One-stage算法SSD(Single Shot Detector)采用多尺度特征融合的方式,没有上采样过程,直接由特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
FPN结构包含三大要素:从底向上的通路(bottom-up pathway)、从顶向下的通路(top-down pathway)和横向连接(lateral connection),来 融合 “ 少位置信息而多语义信息的top层feature map ” 和 “ 多位置信息而少语义信息的down层feature map ” :下图中放大的区域就是横向连接,这里1*1的卷积核的主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小。
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
作者提出的FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。作者提出了FPN算法。做法很简单,如下图所示。把低分辨率、高语义信息的高层特征和高分辨率、低语义信息的低层特征进行自上而下的侧边连接,使得所有尺度下的特征都有丰富的语义信息。【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
作者的算法结构可以分为三个部分:自下而上的卷积神经网络(上图左),自上而下过程(上图右)和特征与特征之间的侧边连接。
自上而下的过程采用上采样进行。上采样几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素,从而扩大原图像的大小。通过对特征图进行上采样,使得上采样后的特征图具有和下一层的特征图相同的大小。
侧边之间的横向连接的过程在下图中展示。根本上来说,是将上采样的结果和自下而上生成的特征图进行融合。我们将卷积神经网络中生成的对应层的特征图进行1×1的卷积操作,将之与经过上采样的特征图融合,得到一个新的特征图,这个特征图融合了不同层的特征,具有更丰富的信息。 这里1×1的卷积操作目的是改变channels,要求和后一层的channels相同。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应,如此就得到了一个新的特征图。这样一层一层地迭代下去,就可以得到多个新的特征图。假设生成的特征图结果是P2,P3,P4,P5,它们和原来自底向上的卷积结果C2,C3,C4,C5一一对应。金字塔结构中所有层级共享分类层(回归层)。
金字塔结构中所有层级共享分类层(回归层),就像featurized image pyramid 中所做的那样。作者固定所有特征图中的维度(通道数,表示为d)

二、本文论文的内容

1.主要研究内容

  1. 本文提出了一种新颖的特征金字塔网络,称为特征金字塔转换器(Feature Pyramid Transformer,FPT),用于计算机视觉中的识别任务(对象检测、实例分割)
  2. FPT基于transformer的思想,使用查询(query)、键(key)和值(value)来捕获上下文信息,能够生成新的特征图,该特征图可以对跨空间和跨尺度的非局部交互进行编码(本文核心创新点)
  3. FPT可以轻松地插入各种主干网络、在实例级识别(目标检测)和像素级识别任务(语义分割)等多个任务上取得了优越的性能。
  4. 本文中的一些技巧,如Mixture of Softmax,欧氏距离计算跨层相似度等也有一定的借鉴意义。

2.研究背景和出发点:

上下文信息和尺度间的联系应该延续下去,这是作者的motivation,尤其是受到了跨尺度融合中忽略的non-local的空间相互作用的启发。作者相信non-local交互本身应当在交互目标对应的尺度上进行,而不是像现有方法那样仅在一个统一的尺度上进行。下图(e)表示了跨尺度的non-local交互,低层次的鼠标与高层次的计算机相交互,而计算机与桌面以相同尺度进行交互.
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
特征交互:指不同的特征之间的相互作用,以将上下文信息融入到特征之中
跨空间的特征交互:指特征图上不同位置之间的交互:

  1. CNN块的堆叠通过逐渐缩小的感受域捕获相邻像素的特征(池化,空洞卷积等)。
  2. Non-local、空间注意力等可以捕获空间信息的机制。
    question:
    常规的CNN通过最后一个特征图的特征来进行识别,这对于小目标的对象而言是有害的,因为分辨率较低的特征图容易忽视小的目标(鼠标)
    一种解决方案为使用特征金字塔,对于较大的目标(如椅子,桌子),在深层特征图中预测,对于较小的目标(如鼠标),使用浅层的特征图预测。但是这种情况下,就会产生上下文信息和目标对象特征之间的矛盾。
    需要融合的上下文信息与目标对象的特征不属于同一level

本文基于一个事实:Non-local的交互本身应该在交互对象(或部分)的相应尺度上进行,而不仅仅是像现有方法一样在一个统一尺度上进行。

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

相关工作

1.跨尺度的特征交互:以特征金字塔网络(FPN)为例
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
FPN和PANet都基于BFP(Bottom-up Feature Pyramid),FPN添加了自上而下的路径以将语义信息传播到低级特征图中,而PANet添加了自下而上的路径增强

ZigZagNet利用加法和卷积来增强跨尺度特征的交互作用。

2.跨空间的特征交互:以Non-local网络为例
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
Non-local网络通过self-attention来捕获非局部的特征,以实现较远空间内的特征交互。

本文提出的 FPT 可以认为是 FPN + Non-local。

网络模型

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
input:一组特征金字塔(如左图)

output: 经过跨尺度和跨空间特征交互后的特征金字塔(中图、右图)

FPT由三部分组成: self-transformer(ST)、 Grounding Transformer(GT)、 Rendering Transformer(RT)
1)self-transformer(ST),这是基于经典的同层特征图的non-local交互,输出与输入具有相同尺度。2)Groundng Transformer(GT),采用自上而下的方式,输出与低层级特征图尺度相同,作者将高层级特征图的concept植于低层级像素中。由于不是必需使用全局信息来分割目标,并且local区域的上下文信息更加丰富,出于对语义分割的效率和精确性间的权衡,作者还设计了一个locality-constrained GT。3)Rendering Transformer (RT) ,采用自下而上的方式,输出的尺度与高层级特征图尺度相同。直观地,我们是使用低层级像素的视觉属性来渲染高层级的concept。这是一种局部交互,因为用另一个太远的目标的像素来对当前像素进行渲染是没有意义的。然后再将每个层级变换后的特征图重新排列为其对应原特征图的大小,与原特征图concat后输入到卷积中降至原本的通道数。

self-transformer(ST) 自转换模块

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
Self-Transformer(ST)旨在捕获同一个特征图上同时出现的对象特征,本质是一种空间特征交互。【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

Grounding Transformer (GT) 植入转换器

GT可以看作自上而下的Non-local交互[16],它将上层特征图(深层)Xc中的“概念”植入下层特征图(浅层)Xf中的“像素”中(实际上是增强下层的特征图)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

Rendering Transformer(RT) 渲染转换器

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
1.将主干网络中不同stage最后一个block输出的特征取出,得到对应的金字塔特征(维度相同)
2.按照ST GT 和 RT分别去计算对应的融合了上下文信息的特征图

以b为例,b首先使用ST生成一张自注意力图(中间),然后对深层特征图a使用Rendering操作得到一个特征图,最后对浅层特征c使用GT得到一个特征图
3.将特征图按照尺寸重新排序,并与原始金字塔特征concat,通过conv缩小维度,最终得到一组FPT特征。

实验结果

【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)
【论文笔记】Feature Pyramid Transformer(特征金字塔转换器) (ECCV 2020)

思考讨论

可以借鉴的点:
1.跨尺度的特征交互能够有效的定位和识别局部的细节语义
2.基于attention的上下文提取方式性能显著优于其他的方式
3.特征金字塔模型能够很有效的定位和识别不同尺度的目标对象

应用于当前任务:
1.细粒度特征提取过程:
当前的细粒度方法逐渐由二阶段优化转为单阶段,将区域定位和特征学习融合在一个统一的框架内,使用FPT的思想能够更好的定位和识别局部的判别性特征。
2.对于细粒度的图像,其中局部的区域等判别性细节的定位学习能够显著地区分外形相似的不同类别食物,因此将FPT融入到其他识别框架中在理论上是可行的。

需要考虑的问题:
1.如何精简模型,简化计算成本(如只在最后几个阶段使用)
2.如何将金字塔特征应用到分类任务中(与原特征级联、辅助训练)

这篇工作的中心思想就是认为仅在一个尺度的特征图上进行non-local交互不足以表达上下文,想要在相互作用的目标(或部分)的相应尺度上做non-local。对于每一层的特征图,会输入与其邻近的两层特征图,也就是FPT中每层都会输入三个尺度的特征,然后分别从ST,GT,RT中选其中一种来做这个变换后的non-local,以中间那层尺度为例,输入a, b, c三个尺度的特征,a和b做的是RT,b做ST,b和c做GT。然后将经过non-local的特征图变为和b相同的尺度,然后与原图做一个concat,最后经一个卷积降维至原本的维度。ST就是将原本的non-local中的softmax换成了MoS,然后还将qi和kj分为N块,然后去计算的每一块的相似度分数。GT是在ST的基础上,将原本用的点积,Embeded gaussian换成了欧氏距离的负值。