阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention

文章来源: 港中文、商汤和北大
发表来源:arXiv:2101.07448v1


阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第1张图片
Title

这篇文章的出发点其实和Deformable DETR非常相似。目的都是希望能够加速DETR的训练收敛。作者认为DETR收敛速度慢原因轨迹于全局的attention,针对于该问题Deformable采用的方式是deformable attention替代encoder中的self-attention和decoder中的cross-attention中的全局计算,而本文则是通过预测目标可能存在区域的热图促使检测更快的收敛。

本文提要提出了一种称为Spatially Modulated Co-Attention (SMCA,空间调节协相关)的机制用于约束query与key的权重聚集在先验box附近,从而加速其收敛。类比想象一下给模型一个较好的初始参数加速收敛的过程。SMCA作用位置是替换DETR中的cross_attention。

另外的创新点是多尺度特征的融合, DeformableDETR中在Encoder的self-attention和decoder的cross-attention中都使用不同scale上进行采样融合实现多尺度融合,而本文方法分别在encoder的self-attention和decoder的cross-attention上进行了特征融合。针对encoder的self-attention中多尺度特征融合最直接的方式就是每个尺度每个位置上的特征相同对待,但这样导致庞大的计算量,因此作者们选择了一个折衷方案即intra-scale和multi-scale 特征self-attention的融合, intra-scale是指只在相同的scale的特征中进行self-attention, multi-scale则指朴素的平等对待所有scale的特征。针对decoder的cross-attention部分,是使用query在每个scale的特征上独立的进行cross-attention,然后由query产生每个scale获得的cross-attention结果的重要性进行加权获得。

本方法在训练50个epoch时性能比DETR 500个epoch性能稍好,和Deformable DETR差不多。

Motivation

DETR中需要多个query负责不同空间位置的目标的检测。实现过程中每个query都需要与featmap的每个位置的视觉特征进行交互从而收集每个位置的信息以估计目标的box和类别,该过程即co-attention机制。但是在DETR的decoder中,对于某个query,其参与co-attention的位置特征中有很多是与该query预测的box关系很小甚至无关的,因为目标检测与图像分类不同,图像分类需要更多全局信息,而目标检测一般局部信息更加重要。因此这种额外或者说噪声的交互严重拖慢了DETR的收敛速度。

OK, 下面看一下这篇文章的具体方法吧。

Spatially Modulated Co-Attention, 空间调节协注意力机制

阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第2张图片
pipeline

Fig2给出了本文的整体框架,和DETR相似,都是backbone抽取特征,然后encoder进行不同位置间特征的交互,再然后由query在encoder的featmap上进行交互最终每个query进行目标的预测和分类。下面分模块讲一下具体细节,我们按顺序来。

  1. Intra-Scale Self-attention和Multi-Scale Self-attention
    我们都知道DETR的encoder中是使用的self-attention机制的,其目的在于每个位置上的视觉特征进行更好的交互,从而也有利于最终query与gt的一一对应关系。self-attention的具体操作是每一个位置的特征都与其他任何 位置的特征计算相关度作为权重,然后通过加权求和获得融合后的当前位置的新特征。 而为了更好的处理不同尺度的目标,自然而然地就会想起利用多尺度特征图,比如ResNet的后3个stage的输出。于是对于某个scale featmap的某个位置特征的self-attention就是该特征与任意scale featmaps上的任意位置特征的相关度作为权重加权的结果,该操作就称为Multi-Scale Self-Attention。这个操作很直观,也实现了不同scale上特征的交互,但是会导致计算量太大,比如3个scale,每个scale上有500个位置,那么6层的encoder就是6x1500x1500个向量内积。为了降低这个计算量,作者提出在部分encoder层上使用intra-scale self-attention即仅在相同scale的特征层上进行self-attention,比如有4个encoder层上采用intra-scale self-attention,于是计算量降为 4x 500x500 x 3 + 2 x 1500 x 1500.
    于是Encoder的输出是多个scale的featmap。
  2. Spatially Modulated Co-Attention
    图的的featmap都绘制了多层表示不同的scale,我们现在单考虑某一个scale,然后Decoder中的1,2,。。。,N个区域标识不同的query分别处理。Co-Attention表示query与Encoder输出的某一个的特征图上每个位置进行内积的特征图;Spatial Prior是由每一个query生成的该query的box的分布概率图。 Fig2中这两个Featmap是进行了element-wise multiplication,实际正文中并不是这么操作。正文中Modulated Co-Attention的feature map计算方式如下:

    这里表示encoder输出的Keys 特征图, 表示该query经过self-attention之后的特征生成的query特征, 则表示由生成的空间分布概率图。那么为什么采用log的形式呢?这个主要是因为G是高斯分布,log操作能够与exp进行约简.

计算概率分布图G具体而言,对于第q个query,其self-attention之后的输出为, 那么其可以生成该query的bounding box的粗略值


其中表示归一化之后的中心点位置, 表示预测目标的大小,即高和宽。
获得bbox的粗略值之后由此生成高斯权重

其中表示特征图的每个位置, 表示映射到(H,W)大小的特征图中的中心点坐标,是超参数,用于控制权重图的对比性。开始训练时,预测肯定比较粗糙,这时候我们希望每个位置的重要性不要差异太大,可以通过调整(降低)减小方差。

知道G如何计算后,我们发现之后为

避免了指数计算。

  1. Scale Selection Network
    获得了Modulated Co-Attention 特征图之后,一般transformer的形式就是加权和,即, V是encoder输出的values特征图。
    但是为了处理多scale的特征,作者在每个scale上都进行了相同的操作,然后通过学习每个scale特征图的权重进行了加权,即:

    其中
    对于多尺度还有一个值得注意的是,不同的scale上可以选择相同的预测框计算高斯权重图,也可以使用独立的预测框计算高斯权重图,甚至多头注意力机制的每一个head都独立计算G,显然独立的复杂度更高,但性能更好。
  2. 预测头
    DETR对于每个query的decoder输出特征的预测头是通过MLP分别实现目标的回归和分类。而本文的SMCA方式是和Deformable DETR中的两阶段方式的第一阶段类似的

    也就是说回归的目标是经过初始位置编码后的偏移量,这个思路是和Faster RCNN中编码box更好回归相似。

实验部分

数据集:COCO数据集
执行细节:

  • 使用了300个queries,和Deformable DETR相同,原始的DETR使用了100个queries。
  • DETR使用交叉熵损失分类,SMCA使用focal loss
  • 学习率上,Transformer初始为1e-4, 预训练的backbone即resnet初始学习率为1e-5。 训练50个epoch,在第40个epoch降低10倍。
  • 优化器 AdamW
  • set prediction中二分图能量计算系数对于分类损失、L1距离损失和GIoU损失分别为2,5,2。 训练损失的系数也是 2,5,2。 这个和Deformable DETR也是相同的。
  • 数据增强:最大边长1333,进行随机裁剪
  • 硬件 8张V100, 每张卡1张图像

实验1: 相对于DETR,收敛速度提升了许多,但每张图片的推理速度是下降了。
实验2. 消融实验


阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第3张图片
Table 2

解释:

  1. Baseline是将DETR的queries升为300个,和SMCA相同的训练策略,即50个epoch,第40个epoch调整学习率。
  2. Head-shared Spatial Modulation 是指多头注意力机制中每个head共享G,当然这个扩展到多尺度上就是所有head 共享生成G的bbox估计。
  3. Multi-head spatial modulation 是指多头注意力机制中不同head采用独立的网络生成自己的G。
  4. +Indep. 是指分别预测目标的h和w, +Fixed是预先指定估计的bbox的长宽,+Single是指所有的scale采用相同的一组可学习的长宽估计
  5. bs是指不同的batchsize

结论:

  1. 相对于同样设置的DETR, SMCA性能更好,说明收敛速度更快;
  2. 不共享的多头SMCA比共享的SMCA性能更好;
  3. 独立的多尺度宽高估计性能最好;
  4. 对于不同batchsize训练较为鲁棒。
阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第4张图片
Table3

解释:

  1. baseline 是使用单scale, 5层encoder layer的结果,此时每一层的参数没特别标注,估计是共享的。DETR采用6层这里采用5层主要是为了让参数量接近;
  2. SMCA(2Intra-Multi-2Intra) 多scale操作,5层encoder layer分别采用不同的self-attention方式,每一层的FFN和scale selection参数是共享的;
  3. SMCA w/o SSA (2Intra-Multi-2Intra) 相对于上一个,每一层encoder layer不使用scale-selection attention模块,估计是算的均值;
  4. 5Intra 相当于 SMCA(5Intra) 表示5层encoder layer全部使用intra-scale 的self-attention, 3Intra和3Multi则表示只采用了3层encoder layer, 其实最好给出5层multi的结果,但估计计算量太大吧。
  5. Shared FFN, 表示intra-scale self-attention的每一个scale采用相同的FFN,其他的模块参数独立; Shared SA表示不同的scale的权重采用相同的参数进行估计。(这个地方说的不是很明确,不同的encoder layer中的不同scale对应的参数是否也共享??个人觉得应该是共享的) No Share就是没有任何权重共享。

结论:

  1. 多尺度特征的融合能促进检测性能;
  2. 自适应的scale-selection权重显然性能更好;
  3. Multi-scale self-attention促进了不同scale特征的融合要由于只进行intra-scale self-attention的性能,但是其计算量太大,不大现实;
  4. 参数共享能够降低参数量,且性能更好,没分析原因。


    阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第5张图片
    Figure3

    这张图说实在的画的不怎么样,右上角部分个人觉得Spatial Prior和Co-Attention列应该画反了,title里是single-scale图里是shared-scale。这里fixed-scale, single-scale和independent-scale使用fixed-size,single-size和independent-size应该更好。

解释:

  1. Fixed Scale、Shared Scale, Indep. Scale分别表示不同的head使用固定的长宽比,共享的相同可学习长宽比以及独立的可学习长宽比。
  2. Co-Attention, SpatialPrior的列分别表示多头注意力机制中的4个head的结果。
  3. 这里显示的图是attention叠加在原图上的结果,直接看attention不可能看出来原图的纹理的
  4. 大图中红色实点表示预测的中心位置,红色圆圈表示每个head预测的中心位置

结论:

  1. 比较大图发现使用indep. Scale获得的SMCA后的attention更集中的目标区域

实验3. 与SOTA方法对比


阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention_第6张图片
Table4

总结

个人看法这篇文章主要贡献两点:

  • 多尺度特征融合
  • 通过初始高斯权重attention的方式加速收敛
    不足点:
  • 加大了计算量
  • 加大了推理时间
  • 实验不是很充分
    1. 对比Deformable DETR没有优势。首先DETR也有这两点贡献,但其通过deformable attention的方式大大减少了计算量
    2. 分析SMCA时,只与DETR训练不充分的结果进行了对比,没有与充分训练的DETR结果对比,那么SMCA的真实作用要打个问号。

你可能感兴趣的:(阅读笔记-Fast Convergence of DETR with Spatially Modulated Co-Attention)