Deformable-DETR
Deformable DETR: Deformable Transformers for End-to-End Object Detection[1]
作者是来自商汤、中科大和CUHK的Xizhou Zhou, Weijie Su, Lewei Lu 等人,论文引用[1]:
Time
- 2021.Mar
Key Words
- deformable attention module aggregates multi-scale feature maps via attention mechanism
动机
- DETR收敛慢
- DETR检测小目标的性能比较低
总结
- DETR在目标检测中,用来去掉很多人工设计的components,同时也有很好的性能。然而,它收敛比较慢,由于Attention在处理图像特征中的限制,特征的spatial resolution有限。为了缓解这些问题,提出了Deformable DETR,这个attention只对一个referrence附近的ke sampling points进行attend,Deformable DETR能够实现很好的性能,超越了DETR(特别是小目标)。
很多检测器用了手工设计的components,例如anchor,training target assignment, NMS等。不是完全端到端。最近提出的DETR,能够消除这些手工设计的components,建立一个完全端到端的检测器,实现了很好的效果。DETR用了一个简单的架构,通过结合CNN和Transformer,探索了一个多功能的和高效的relation modeling capability of Transformers来代替hand-crafted rules,under properly designed training signals。尽管这个设计和很好的性能表现,DETR有一些问题:需要更多的训练epoch来收敛;DETR在检测小目标的时候,性能比较低。现代的目标检测器通常用了多尺度特征,这里的小目标是从high-resolution feature maps中检测到。同时,high-resolution feature maps会导致DETR不可接受的复杂度。这些问题是由于Transformer在处理图像特征中的特点。在初始化的时候,这些attention modules对特征图中的所有像素cast nearly uniform attention weights。long training epoches对于attention weights是必要的,来学习sparse meaningful locations。在另一方面,attention weights的计算是与pixel numbers成平方关系。因此,是一个high computational 和memory complexities来处理这些high-resolution的feature maps。
在图像域中,可变性卷积deformable convolution是一个有效且高效的机制来attend to sparse spatial locations,自然地避免了上述的问题。然而它缺乏了element relation modeling mechanism,这对于DETR的成功很关键。在本文中,提出了 Deformable DETR,缓解了收敛慢和DETR的高复杂度的问题。结合了sparse spatial sampling of deformable convolution和relation modeling of Transformer,提出了 deformable attention module,这个attend to a small set of sampling locations as a pre-filter for prominent key elements out of all the feature map pixels。这个模块能够自然地扩展到汇聚多尺度特征 without help of FPN。在Deformable DETR中,利用了(multi-scale)deformable attention modules来代替Transformer attention modules,来处理feature maps。
Deformable DETR为我们提供了可能性,探索端到端的目标检测的变体,thanks to its fast convergence和计算和高效的Memory。探索了一个简单有效的iterative bounding box refinement机制,来提高检测性能。同时也尝试了两阶段的Deformable DETR,由Deformable DETR来产生region proposals,然后送入decoder for iterative bounding box refinement。
对于Transformer的由于之一是high time和memory complexity at vast key element numbers,在很多情况下阻碍了模型的可扩展性。最近,很多的努力来克服这个问题,可以主要分为3类。
- 用pre-defined sparse attention patterns on keys,最直接的范式是将attention pattern限制在一个局部窗口。虽然将attention限制在一个局部的位置能够减小复杂度,丢失了全局信息。为了弥补这个,有人提出了key elements at fixed intervals,显著地增强了keys的感受野。很多人的工作表明了很少数量的special tokens能够access to all key elements,也有人增加了一些pre-fixed sparse attention patterns来attend distant key elements。
- learn data-dependent sparse attention。有人提出了一个locality sensitive hashing(LSH) based attention,能够hashed both query 和key elments to different bins。一个类似的idea也有人提出来了,这个k-means来发现最相关的keys。有人用block permutation for block-wise sparse attention。
- 第三类是探索low-rank property in self-attention。有人通过一个linear projection on the size dimension instead of the channel dimension,来减小key elements的数量,有人通过kernelization approximation来重写自注意力的计算。
在图像域,高效注意力机制的设计仍然限制在第一个类别,尽管理论上减小了复杂度,这样的方法执行起来比传统的CNN更慢,由于memory access patterns的内在限制。在另一方面,有很多的CNN的变体例如deformable conv和dynamic conv,也能视作自注意力机制。deformable conv在image recognition上操作比Transformer更高效和更有效,同时,它缺乏element relation modeling机制。作者提出的deformable attention module是受deformable conv的启发,属于第二种类别,只关注a small fixed set of sampling points predicted from the feature of query elements。deformable attention 比传统的CNN在相同的FLOPS下要慢一些。
目标检测的主要的困难是有效地represent objects at vastly different scales。现代的目标检测器通常用multi-scale features来做这个,这方面的工作有:FPN,PANet,NAS-FPN和Auto-FPN,BiFPN。NAS-FPN和Auto-FPN通过网络架构搜索来自动涉及cross-scale connections。BiFPN是PANet的简化版。作者提出的multi-scale deformable attention module 能够自然地通过注意力机制,汇聚多尺度特征图,不需要特征金字塔网络。
Transformer有两个问题:
- 一个是Transformer在收敛之前,需要长时间的训练,注意力权重 \(A_{mqk}\approx \frac{1}{N_k}\),当 \(N_k\) 很大的时候,会导致输入特征的模糊的梯度,因此,需要更长时间的训练,来使attention weights聚焦于specific keys。在图像域,key elements通常是image pixels,\(N_k\) 可以是很大,收敛是冗长的。
- 另一个是多头注意力的计算和内存复杂度。当大量的query和key的时候,计算和存储的复杂度是特征图尺寸的二次方。
DETR是建立在Transformer结构上的,结合了基于set的匈牙利损失,通过bipartite matching,使得每个ground-truth的bbox有一个predictions。DETR的简介如下:
- 给定一个经过CNN backbone的特征图的输入,\(x\in\mathbb{R}^{C\times H\times W}\),DETR用一个标准的Transformer结构来将输入的特征图转换成一系列object queries的features。一个3层的FFN和一个linear projection加在了object query features的顶部,作为检测头。FFN作为回归分支预测bbox的坐标,linear projection作为分类分支预测每个query的类别。
对于DETR中的Transformer的encoder,query和key都是特征图中的像素。自注意力的计算复杂度是 \(O(H^2W^2C)\),和spatial size是二次方的关系。
对于DETR中的Transformer的decoder,输入包括来自encoder的feature maps,还有用learnable positional embeddings表示的N个object queries。decoder中有两种类型的注意力,交叉注意力和自注意力。交叉注意力的复杂度和自注意力的复杂度分别是 \(O(NHWC^2+ NHWC)\) 和 \(O(2NC^2 + N^2C)\)。这个复杂度对于中等数量的object queries是可接受的。
DETR是一个有吸引力的设计,用于目标检测,去掉了很多手工设计的需要,然而也有问题,主要是来自Transformer attention的缺陷,DETR在检测小目标的时候表现不行,现代的目标检测器用一个high-resolutioN feature map来检测小目标,然而,hight-resolution的特征图会导致不可接受的复杂度;相比于现代的目标检测器,DETR需要更多的训练epoch来达到收敛,主要是因为注意力module来处理image features很难训练。例如,在初始化的时候,交叉注意力模块几乎是在整个特征图上的平均attention。然而,在训练结束的时候,attention maps变得sparse,关注在object extremities上,似乎DETR需要更长的训练来学习significant changes in the attentino maps。
Deformable Attention Module:把Transformer attention用在图像特征图上的主要问题是,它会look over所有可能的空间位置。为了解决这个问题,提出了一个deformable attention module,受deformable conv的启发,deformable attention module只attend to a small set of key sampling points around a reference point,忽略特征图的spatial size。通过assigning一小部分的keys for each query,收敛的问题和feature spatial resolution能够被解决。
给定一个特征图,\(\mathbf{x} \in \mathbb{R}^{C \times H \times W}\),q表示一个query,content feature \(z_q\)和一个 2-d的reference point \(p_q\),deformable attention module的计算公式是这样的: \[\text{DeformAttn}(\mathbf{z}_q, \mathbf{p}_q, x) = \sum_{m=1}^{M} W_m \left[ \sum_{k=1}^{K} A_{mqk} \cdot W'_m x \left( \mathbf{p}_q + \Delta \mathbf{p}_{mqk} \right) \right]\]
m表示attention head,k表示 sampled keys,K是总共的sampled keys的数量。\(\Delta \mathbf{p}_{mqk}\)和 \(A_{mqk}\) 分别表示sampling offset和第m个attention head的第k个sampling point的attention weight。attention weight \(A_{mqk}\) 属于 [0, 1]的区间,\(\Delta \mathbf{p}_{mqk}\)和 \(A_{mqk}\) 通过 query feature \(z_q\) 进行linear projection得到。在执行中,query feature \(z_q\) 给到一个linear projection operator of 3MK channels,前 2MK个channels 对 sampling offsets \(\Delta \mathbf{p}_{mqk}\) 进行编码,剩余的 mk channels 给到一个 softmax operator,来得到 attention weights \(A_{mqk}\)。
deformable attention module是将卷积特征图作为key elements进行处理。 \(N_b\) 是 query elements的数量,当MK相对比较小,deformable attention module的复杂度是 \(O\left( 2N_q C^2 + \min(HWC^2, N_q KC^2) \right)\),当用在 DETR的encoder的时候,\(N_q\)= HW,复杂度变成了 \(O(HWC^2)\),和spatial size是线性的关系,当用在交叉注意力上的时候,复杂度变成了 \(O(NKC^2)\),和spatial size不相关了。
Multiscale Deformable Attention Module:大多数的现在的目标检测器的框架受益于multiscale feature maps,提出的deformable attention module能够自然地扩展到multiscale feature maps上。multiscale deformable attention 类似于之前的single-scale version,除了它从multiscale feature maps中采样LK个points,而不是从single-scale feaure maps中采样K个points。
当L=1, K=1的时候,提出的attention module退化成 deformable conv,\(W_{m}^{\prime} \in \mathbb{R}^{C_{v}\times C}\) 作为identity matrix是固定的。Deformable conv是为了single-scale inputs而设计的,对于每个attention head,聚焦于一个sampling point。然而,multiscale deformable attention 从多个inputs中,look over多个sampling points。提出的deformable attention module可以被视为一个Transformer attention的高效地变体,通过deformable sampling locations引入了pre-filtering 机制。当sampling points经过了所有的locations的时候,提出的attention module等价于Transformer attention。
在multiscale deformable attention module在encoder中的应用的时候,多尺度特征图的输出和输入有相同的resolutions。key 和query是来自多尺度特征图的pixels。对于每个query pixel,reference point是它本省。为了确定每个query pixel是在哪个feature level。我们给feature representation增加了一个scale level embedding,记为 \(e_l\)。不同于positional embedding,scale-level embedding是随机初始化,和网络一起训练的。
Deformable Transformer Decoder:对于交叉注意力和自注意力,query elements是object queries。在交叉注意力中,object queries从feature maps中提取特征,key elements是encoder的输出的特征图。在自注意力中,object queries和each other进行interact,key elements是object queries。因为提出的deformable attention是将conv feature map作为 key elements进行处理,仅将每个cross-attention module替换成 multi-scale deformable attention module,自注意力的modules没变。对于每个object query,reference point的 \(\hat{p}_q\) 2-d的normalized coordinate 是通过一个可学习的linear projection,object query embedding进行预测的。
因为multiscale deformable attention module是从referenece point附近提取image features,让detection head预测bbox as relative offsets w.r.t the reference point,为了降低优化困难。这个reference point 用作初始的box center的预测。检测头预测相对于 reference point的relative offsets。这样,学习到的decoder attention会和预测的bbox有很强的关联,加速了收敛。
Additional improvements:
- Iterative bbox refinement:这个受optical flow estimation的iterative refinement的启发。建立了一个简单有效的iterative bbox refinement 机制,来提高检测性能。这个每个decoder layer基于previous layer的预测对bbox进行refine.
- Two-Stage Deformable DETR:在原始的DETR中,decoder中的object queries和当前的image 不相关,受两阶段的目标检测器的启发,探索了一种Deformable DETR的变体,在第一阶段产生region proposals,产生的region proposals会给到decoder 作为object queries用于之后的refinement,形成两阶段的Deformable DETR。
在第一阶段,为了实现high-recall proposals,多尺度特征图中的每个pixel将会serve as object query。然而,直接将object queries设为pixels,会带来不可接受的计算和存储成本。为了避免这个问题,为了region proposal generation,去掉了decoder,形成了encoder-only的deformable DETR,top scoring bboxes会被选为region proposals。在将region proposals给到第二阶段的时候,没有NMS。
\(Fig.1^{[1]}, illustration of the proposed Deformable DETR object detector\)
\(Fig.2^{[1]}, Deformable attention module\)