Deformable DETR:Deformable Transformers for End-to-end object detection笔记

(一) 本文需要解决的问题

DETR具有slow convergence以及limited feature spatial resolution

原始的DETR模型存在的问题:

  • 训练时间长,需要500个epoch才能够收敛
  • 对小目标检测能力相对较弱
  • 在初始化时,Attention modules接近是均匀分布,需要长时间的训练才能将其转变为sparse meaningful locations
  • attention weight这边的权重计算是二次复杂度的,对于高分辨率图来说是高计算和高内存消耗的。

Deformable DETR真的是一篇神作,给后面太多的改进方法带来了思路。

(二) 本文是怎么解决这些问题的

本文的主要工作有两个,首先第一个就是将deformable attention module替换Attention模块,从而实现sparse attention。接着第二个就是multi-scale deformable attention module来实现不同尺度特征的建模。

首先是Deformable Attention Module

给定一个输入feature map x ∈ R C × H × W x \in \mathbb{R}^{C \times H \times W} xRC×H×W,接着令 q q q表示带有content feature z q z_q zq,以及一个2d的reference point p q p_q pq的一个query,接着deformable attention feature能够通过一下的方式计算:
DeformAttn ⁡ ( z q , p q , x ) = ∑ m = 1 M W m [ ∑ k = 1 K A m q k ⋅ W m ′ x ( p q + Δ p m q k ) ] \operatorname{DeformAttn}\left(\boldsymbol{z}_{q}, \boldsymbol{p}_{q}, \boldsymbol{x}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{k=1}^{K} A_{m q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right)\right] DeformAttn(zq,pq,x)=m=1MWm[k=1KAmqkWmx(pq+Δpmqk)]
其中, m m m是表示multi-head的index,k表示采样的key, K K K是总的key的数量 ( K ≪ H W ) (K \ll H W) (KHW),此外 Δ p m q k \Delta p_{m q k} Δpmqk以及 A m q k A_{m q k} Amqk分别表示采样的offset以及在第 m m m个head上的第 k k k个采样点的attention weights, ∑ k = 1 K A m q k = 1 \sum_{k=1}^{K} A_{m q k}=1 k=1KAmqk=1, Δ p m q k ∈ R 2 \Delta \boldsymbol{p}_{m q k} \in \mathbb{R}^{2} ΔpmqkR2,由于特征点 p q \boldsymbol{p}_{q} pq经过小数位移 Δ p m q k \Delta \boldsymbol{p}_{m q k} Δpmqk之后,需要在特征图上进行插值得到对应特征,即 x ( p q + Δ p m q k ) \boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right) x(pq+Δpmqk),这里的 Δ p m q k \Delta \boldsymbol{p}_{m q k} Δpmqk是通过query特征计算 z q z_q zq​得到线性projection得到的。

这里Deformable Attention Module可以用到Encoder的self-attention以及Decoder的cross-attention中,在计算复杂度上有了改进,这个地方有时间可以仔细看看

接着是Multi-scale Deformable Attention Module

假定多尺度特征为: { x l } l = 1 L \left\{x^{l}\right\}_{l=1}^{L} {xl}l=1L,对应的特征图size为$ x^{l} \in \mathbb{R}^{C \times H_{l} \times W_{l}} , 此 外 , ,此外, ,,\hat{\boldsymbol{p}}_{q} \in[0,1]^{2} 表 示 对 于 每 一 个 q u e r y 元 素 表示对于每一个query元素 queryq$​的reference point的归一化坐标。接着多尺度的deformable attention模块可以表示为
MSDeformAttn ⁡ ( z q , p ^ q , { x l } l = 1 L ) = ∑ m = 1 M W m [ ∑ l = 1 L ∑ k = 1 K A m l q k ⋅ W m ′ x l ( ϕ l ( p ^ q ) + Δ p m l q k ) ] \operatorname{MSDeformAttn}\left(\boldsymbol{z}_{q}, \hat{\boldsymbol{p}}_{q},\left\{\boldsymbol{x}^{l}\right\}_{l=1}^{L}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}^{l}\left(\phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right)+\Delta p_{m l q k}\right)\right] MSDeformAttn(zq,p^q,{xl}l=1L)=m=1MWm[l=1Lk=1KAmlqkWmxl(ϕl(p^q)+Δpmlqk)]
其中 m m m表示attention head 的index, l l l表示输入特征图的index, k k k表示key的index,然后 Δ p m l q k  and  A m l q k \Delta \boldsymbol{p}_{m l q k} \text { and } A_{m l q k} Δpmlqk and Amlqk分别表示第 m m m个attention head,第 l l l个feature map以及第 k k k个采样点的attention weights,并且有 ∑ l = 1 L ∑ k = 1 K A m l q k = 1 \sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k}=1 l=1Lk=1KAmlqk=1, p ^ q ∈ [ 0 , 1 ] 2 \hat{\boldsymbol{p}}_{q} \in[0,1]^{2} p^q[0,1]2表示归一化的坐标, ϕ l ( p ^ q ) \phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right) ϕl(p^q)表示将reference point rescale到对应的特征图上,这里已经归一化的坐标了,为什么还要rescale呢,这里实际上增加了采样点的选取区间,从多个尺度的特征图上选取采样点。

L = 1 , K = 1 ,  and  W m ′ ∈ R C v × C ′ L=1, K=1, \text { and } \boldsymbol{W}_{m}^{\prime} \in \mathbb{R}^{C_{v} \times C^{\prime}} L=1,K=1, and WmRCv×C时,注意力模块会退化成可变形卷积,相比于可变形卷积,仅仅关注single-level的特征,这里的multi-scale deformable attention 关注多尺度,并且相比于Transformer更加高效,可以同Transformer的attention等效。

最后就是Tranformer Encoder和Decorder的设计了

  • Encorder的设计

    Encoder中使用multi-scale deformable attention module替换掉了DETR中的attention module,encoder的输入和输出都是具有相同分辨率的多尺度的特征图,将ResNet的 C 3 − C 6 C_3-C_6 C3C6用过来,每一个多尺度特征都是256维度的,没有使用FPN。both query和key元素都是来自多尺度特征图上的pixels,对于每一个pixel,参考点是他自己。同时增加了一个scale-level embedding,记作 e l e_l el​​来区分特征level

  • Decoder的设计

    cross-attention 以及 self-attention 都有,在cross-attention中,key elements 是从encoder中输出的特征。在self-attention中,这里的key elements是从object query中来的,本文提出的deformable attention module是被用来将convolutional feature map看成keys来处理的,因此仅仅替换了decorder的cross-attention部分,decorder中的2维的reference point p ^ q \hat{\boldsymbol{p}}_{q} p^q​,是通过object querylinera projection之后再接一个sigmoid得到的。由于multi-scale deformable attention module提取的是参考点附近的feature,可以基于reference point预测一个offsets来进一步加快收敛,reference point可以看成是边界框中心点的一个预测。

一些其他的改进内容:

  • Iterative bounding box refinement,构建了一个simple并且effective iterative bounding box refinement机制来改善detection性能,利用之前的预测来调整和改善当前的预测。这块需要好好看看代码,确认是否需要针对旋转框做特殊处理

  • Two-Stage Deformable DETR,本文探索了DETR的变体,以产生region proposal作为第一阶段,生成的region proposal作为对象query输入到decorder进行进一步的refinement,形成一个两阶段的Deformable DETR。这里在第一阶段时,对应每一个特征点位置希望预测一个边界框,然而decorder承受不了这么大的计算量,这里去掉了decorder,构建了一个encorder-only的Deformable DETR用来进行Region Proposal generation,此时每一个pixel 被assigned 一个object query直接用来预测bounding box,得分最高的边界框作为候选区域,并将候选区域用于second stage。

(三) 实验结果

Deformable DETR:Deformable Transformers for End-to-end object detection笔记_第1张图片
Deformable DETR:Deformable Transformers for End-to-end object detection笔记_第2张图片

(四) 知识点Notes

关于解决Transformer Attention模块的时间和内存复杂性的方法:

  • use pre-defined sparse attention patterns on keys,最直接的方式就是将注意力模式集中在固定的局部窗口,但是这样失去了global information。
  • learn data-dependent sparse attention,基于locality sensitive hashing(LSH)将查询和key散列到不同的容器中
  • 探索self-attention的low-rank 特性,通过减少key的数量来实现。

目前解决难训练问题的方法主要为:

  • 使Attention变得稀疏
  • 多尺度特征
  • two stage,将region proposal提供到Transformer中,detection 任务应该更多地关注local的信息,

你可能感兴趣的:(anchor,free目标检测,目标检测,计算机视觉,深度学习)