Feature Pyramid Transformer论文阅读翻译 -- 2020ECCV
Feature Pyramid Transformer论文阅读翻译
目录:
论文下载地址:点击此链接跳转.
这是博主自己在github整理的目标检测方向论文的合集,应该算比较全,目前2020ECCV持续更新中,即将更新:2020IJCAI合集,欢迎下载…
一、Abstract
跨空间和尺度的特征融合是当代视觉识别系统的基础,因为引入了有用的视觉上下文信息。以往空间上下文都是被动地隐藏在CNN不断变大的感知野中,或者是主动通过non-local进行编码。但是non-local的空间交互并不是跨尺度的,它们无法捕获不同尺度中的目标的non-local上下文。为此,作者提出了一种跨空间及尺度的完全**的特征融合,称为Feature Pyramid Transformer(FPT)。通过使用了三个自上而下或自下而上transformer将特征金字塔转换具有更丰富上下文信息的特征金字塔。 FPT可作为通用的视觉backbone,计算开销大小也较为合理。作者在实例级(目标检测和实例分割)和像素级分割任务中进行了广泛的实验,存在一致的改进。
二、Introduction
现代视觉识别系统与语义信息息息相关,由于CNN的结构,经过池化,空洞卷积等,上下文信息会在逐渐变大的接收域中被编码。因此,最后一层的特征图会有丰富的上下文信息,对于那些一个特征像素的较小对象,由于上下文信息较充足,也可以被识别到。
当然尺度也很重要,对较小目标的识别应该分配更多的特征像素,而不仅仅只是在最后的特征图上的像素,这样会很容易忽略小目标。传统的解决方案是对同一图像构建一个图像金字塔,较高/低层级对应着较低/高的分辨率,例如较低层级的鼠标分辨率会较高,而较高层级的桌子分辨率会较低。但是由于每张图像都需经CNN后再进行识别,使用图像金字塔会使CNN前向传播的时间倍增。而CNN中存在着一个内部的特征金字塔,较低/较高层级的特征图表示较高/较低分辨率的视觉内容,并且不需要额外的计算开销。如下图(b)所示,这样我们就可以使用不同层级的特征图来识别不同大小的物体。
有时我们会需要组合多个尺度的上下文信息,尤其是对于像素级标记的识别(语义分割)。下图©中,对于部分区域中的像素,低层级的局部上下文信息可能就足够了。但是对于屏幕区域中的像素,我们需要从更高层级上同时利用局部上下文和全局上下文,因为显示器屏幕的外观会接近于TV屏幕,所以我们应该使用键盘和鼠标等场景上下文来区分两种类型。
通过使用non-local卷积和自注意力,我们可以显式地和主动地对non-local上下文信息进行建模。预期这种空间特征交互可以捕捉到多个目标同时出现的情形,如下图(d)所示,电脑更可能是在桌子上而不是在路上,因此,识别其中一个对另一个是有帮助的。
上下文信息和尺度间的联系应该延续下去,这是作者的motivation,尤其是受到了跨尺度融合中忽略的non-local的空间相互作用的启发。作者相信non-local交互本身应当在交互目标对应的尺度上进行,而不是像现有方法那样仅在一个统一的尺度上进行。下图(e)表示了跨尺度的non-local交互,低层次的鼠标与高层次的计算机相交互,而计算机与桌面以相同尺度进行交互。
对此,作者提出了一种新颖的特征金字塔网络叫做Feature Pyramid Transformer (FPT)用于视觉识别,例如实例级和像素级的任务。简而言之,如图所示,FPT的输入是一个特征金字塔,输出是一个变换后的特征金字塔,每一层级经跨空间和尺度的non-local交互后会更加丰富。顾名思义,FPT的融合采用的transformer形式,它具有更平滑整洁的query,key和value操作,在选择信息进行长程交互时非常有效,这也调整了我们的目标,在适当的尺度上进行non-local交互。另外还可以像其他transfomer模型一样使用TPU来减轻计算开销。
如上图所示,作者的contributions是设计了三个transformer,1)self-transformer(ST),这是基于经典的同层特征图的non-local交互,输出与输入具有相同尺度。2)Groundng Transformer(GT),采用自上而下的方式,输出与低层级特征图尺度相同,作者将高层级特征图的concept植于低层级像素中。由于不是必需使用全局信息来分割目标,并且local区域的上下文信息更加丰富,出于对语义分割的效率和精确性间的权衡,作者还设计了一个locality-constrained GT。3)Rendering Transformer (RT) ,采用自下而上的方式,输出的尺度与高层级特征图尺度相同。直观地,我们是使用低层级像素的视觉属性来渲染高层级的concept。这是一种局部交互,因为用另一个太远的目标的像素来对当前像素进行渲染是没有意义的。然后再将每个层级变换后的特征图重新排列为其对应原特征图的大小,与原特征图concat后输入到卷积中降至原本的通道数。大量实验表明在MS-COCO test-dev上,FPT可以大大提高检测/分割精度。
三、Feature Pyramid Transformer
输入一副图像,经cnn网络我们可以构建一个特征金字塔,细粒度/粗粒度特征图分别处于低/高层级。作者将低层级的细粒度特征图表示为Xf,高层级的粗粒度特征图表示为Xc。FPT使特征能够跨越空间和尺度进行交互,分为ST,GT,RT。
3.1 Non-Local Interaction Revisited
non-local是对单个特征图X的queries(Q)、keys(K)和values(V)进行操作,输出尺度相同的转换后的X’。
qi=fq(Xi)∈Q是第i个query,kj=fk(Xj)∈K,vj=fv(Xj)∈V是第j个key/value,fq(.), fk(.), fv(.)是q, k, v的转换函数。Xi和Xj是X中第i个和第j个位置。Fsim是相似度函数(点积或高斯嵌入),Fnom是归一化函数(默认为softmax),Fmul是权重聚合函数(默认为矩阵相乘),X’i是转换后的特征图X’的第i个位置。
3.2 Self-Transformer
Self-Transformer的目的是捕获在一个特征图上共现的目标特征。ST是一种改进的non-local,输出特征图X’与输入X的尺度相同。和原本不同的是,作者部署了一个混合softmaxes(MoS)作为归一化函数Fmos,这比标准的Softmax在图像上更有效。并且作者将qi和kj分为N块,然后是去计算的每一块的相似度分数sni,j,基于MoS的归一化函数Fmos如下所示:
Sni,j是第n块的相似度分数。πn是第n个聚合权重,等于Softmax(wTnk),wn是一个可学习的用于归一化的线性向量,k是所有kj的算术平均数。基于Fmos,我们可以重新表示Eq1:
3.3 Grounding Transformer
GT是一种自上而下的non-local交互,将高层特征图Xc中的概念融进低层级Xf的像素中。输出X’f和Xf的尺度相同。通常不同尺度的图像特征会提取出不同的语义或上下文信息,或者两者都是。并且当两个特征图的语义信息不同时,欧氏距离的负值Feud在计算相似度时会比点积更有效。所以我们更倾向于使用Feud作为相似度函数,表示为:
qi=fq(Xfi),kj=fk(Xcj),Xfi是Xf中的第i个特征位置,Xcj是Xc中的第j个位置,作者即将相似度函数替换为Feud,式子又变为:
vj=fv(Xcj),X’fi是X’f的第i个转换后的特征位置。根据上式,每一对qi和kj距离越近,其权重越大,与点积的结果相比,使用Feud在自上而下的交互中带来了明显的改进。
在特征金字塔中,高/低层级的特征图包含了大量的全局/局部图像信息。而对跨尺度特征交互的语义分割,是无需使用全局信息对图像中的两个目标进行分割的。query位置附近的局部区域内的上下文会包含更多的信息。如上图b所示,它们本质上是隐式的local style。而作者默认的GT是global交互。
Locality-constrained Grounding Transformer.
因此,作者引入了一个GT的区域约束版本,称为区域约束GT (LGT) 用于语义分割,这是一个显式的局部特征交互。如图3©所示,每个qi(即底层特征图上的红色网格)与一部分在中心坐标与qi相同、边长为正方形的局部正方形区域内的kj和vj交互(高层级特征图上的蓝色网格)。对于超出索引的kj和vj位置,我们记为0值。
3.4 Rendering Transformer
RT以自下而上的方式工作,通过合并低层级中的视觉属性来呈现高层级的概念,如上图d所示,RT是一种局部交互,有考虑到用来自另一个遥远对象的特性或属性来呈现一个对象是没有意义的。
在作者的实现中,RT不是按像素进行的,而是对于整个特征图。作者将高层级的特征图定义为Q;将低层级特征图定义为K和V。为了突出显示渲染目标,Q和K之间的交互逐通道进行。 K首先通过全局平均池化(GAP)计算Q的权重w。然后,加权后的Q(即Qatt)经3×3卷积进行细化,V经一个3×3卷积减小特征图大小(上图(d)中的灰色正方形)。最后将精细化的Qatt和下采样的V(即Vdow)求和,并通过另一个3×3卷积进行处理以进行渲染。提出的RT可以如下表示:
Fatt(.)是一个外积函数,Fsconv(.)是一个3 * 3的步长卷积,当Q和V的尺度相等时步长为1,Fconv(.)时候是一个用于精细化的3 * 3卷积,Fadd(.)是带着一个3 * 3卷积的求和函数,X’c表示RT的输出特征图。
3.5 Overall Architecture
作者构建了一个FPT网络来处理目标检测,实例分割和语义分割,FPT网络由四部分组成,提取特征的backbone,一个特征金字塔构建模块,FPT,和用于特定任务的head。经过FPT后得到的转换后的特征图与原特征图concat,然后经一个3*3卷积将通道降维至256。
四、个人总结
这篇工作的中心思想就是认为仅在一个尺度的特征图上进行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换成了欧氏距离的负值,本来想试试效果,但作者当前的代码还没把这个放出来,不知道效果是不是如作者所说会相对较好,也没有消融实验。RT则不再是按像素来进行的non-local计算,而是对于的整个特征图。