论文笔记:Deformable DETR-可变形注意力机制——DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION

论文笔记:Deformable DETR-可变形注意力机制——DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION

综述

论文题目:《DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION》

会议时间:ICLR 2021

论文地址:https://openreview.net/pdf?id=gZ9hCDWe6ke

源码地址:https://github.com/fundamentalvision/Deformable-DETR

DETR论文笔记:https://blog.csdn.net/qq_50001789/article/details/136207889

主要思想

  DETR是第一个利用Transformer实现的端到端的目标检测算法,大大简化了目标检测算法的实现过程,但是他仍存在两个问题:①与现有目标检测算法相比,它需要非常长的训练时间来收敛,收敛速度特别慢(在COCO数据集上,需要500个epoch才能收敛);②DETR难以检测小目标。如今的目标检测算法通常使用多尺度特征来检测不同尺度下的物体,在高分辨率图像中检测小物体,但是DETR中的多头注意力运算模块对特征尺寸非常敏感,对于一张高分辨率的特征图会产生难以估计的计算量(复杂度呈平方增长)。

  多头注意力模块初始化后,在计算特征映射时,每个像素点都会与特征图中所有像素点产生一次注意力运算,并且所有的注意力会施加几乎一样的注意力权重,而注意力运算的目的肯定是想要让注意力权重集中在某几个区域,这也是注意力模块的优化趋势,对于每个像素点来说,从大量的区域中挑选出几个有意义的区域是非常难的,这也是为什么DETR训练周期很长的一个重要原因,而且训练的时长也会和特征图尺寸密切相关;同时,TF编码器中的注意力运算与像素数值呈平方变化关系,因此高分辨率图像在计算注意力时会产生非常高的计算消耗。

  注意问题的逻辑关系:稠密的注意力运算要求大量的注意力权重,优化这些权重需要很长的训练时间,因此导致DETR收敛慢(问题1),这一问题同样是Transformer模块处理图像数据时的通病,不同于自然语言,图像数据本身具有信息稀疏的特点,特征数据尺寸非常大,利用稠密的注意力会产生很多冗余的计算量(注意力是解决信息稀疏的一个有效策略,会提升算法性能上限,但是稠密的注意力机制会大大增加计算量,会抬高算法成本,注意底层逻辑关系,引入一个模块在解决某个问题的同时也会引入新的问题);同时传统的Transformer计算量与特征尺寸密切相关,分辨率高的特征会大大增加注意力的计算量,因此直接导致算法不能利用浅层特征做检测,即不能利用多尺度特征做预测,从而导致算法在检测小目标物体上性能不好。

  对于这一问题,一种有效的解决方法就是将稠密的注意力运算转为稀疏的注意力运算,在图像领域中,可变形卷积是一种处理稀疏空间位置强大而有效的机制,其中的稀疏采样思想可以应用到Transformer注意力机制中,进一步改进注意力的计算策略。

  本文中,作者提出了可变形的DETR算法(Deformable DETR),缓解了原始DETR中收敛速度慢以及计算复杂度高的问题。作者提出了可变形注意力模块,它同时结合了可变形卷积中稀疏空间采样的优点和Transformer中位置关系建模的能力,让每个元素关注一小组采样位置,作为特征图所有像素中突出的k数据元素的预滤波器。该模块可以自然地扩展到聚合多尺度特征,而无需FPN的帮助,在Deformable DETR中,作者使用(多尺度)可变形注意力模块来代替传统的Transformer注意力模块,具体如下图所示:

在这里插入图片描述

注:利用可变形注意力运算代替传统的注意力运算,在提升算法计算速度的同时,肯定也会降低模型特征表示能力的上限(会在一定程度上削弱模型的特征表示能力),注意这种平衡取舍的关系。

方法

DETR网络结构:

在这里插入图片描述

可变注意力模块

  将Transformer应用于图像特征提取的过程中时,存在一个核心的问题:Transformer模块会考虑所有空间位置的权重,为了解决这一问题,作者提出了可变注意力模块。受到可变卷积模块的启发,可变注意力模块只关注参考点周围的一小部分关键采样点,不考虑特征图的尺寸大小,如下图所示,通过为每个查询query分配少量、固定数量的键keys(这里的键也就是参考点,即后面的采样点),q中每个元素和固定数量的键k做相似度计算,大大减少了计算量(原来的k是整个特征图,现在只选取其中少量的特征数据),可以减轻收敛慢和特征空间分辨率大所带来的问题。

注:注意力计算的本质,就是对于q中每个元素,计算与k的相似度,进一步对 k对应的v 做加权操作,求出q对应的’v’。

在这里插入图片描述

给定一个输入特征图 x ∈ R C × H × W x\in R^{C\times H\times W} xRC×H×W,假设 q q q表示一个带有内容特征 z q z_q zq和二维参考点 p q p_q pq的查询向量,可变注意力特征的计算公式可以表示为:
D e A t t ( 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 ) ] DeAtt(z_q,p_q,x)=\sum^M_{m=1}W_m[\sum^K_{k=1}A_{mqk}\cdot W_m'x(p_q+\Delta p_{mqk})] DeAtt(zq,pq,x)=m=1MWm[k=1KAmqkWmx(pq+Δpmqk)]
其中, M M M表示注意力的头数, k k k表示所采样的键的序号, K K K表示总采样的键数,采样数要远小于图像特征尺寸 ( K ≪ H W ) (K\ll HW) (KHW) Δ p m q k \Delta p_{mqk} Δpmqk A m q k A_{mqk} Amqk分别表示第 m m m个注意力头、第 k k k个采样点的采样偏移量和注意力权重。注意力权重 A m q k A_{mqk} Amqk的范围在 [ 0 , 1 ] [0,1] [0,1]内,通过 ∑ k = 1 K A m q k = 1 \sum^K_{k=1}A_{mqk}=1 k=1KAmqk=1引入的约束进行归一化操作(softmax运算), Δ p m q k ∈ R 2 \Delta p_{mqk}\in R^2 ΔpmqkR2为无约束范围的二维实数。由于 p q + Δ p m q k p_q+\Delta p_{mqk} pq+Δpmqk不是整数,无法直接用于平移操作,对此作者采用双线性插值操作(bilinear interpolation)来实现采样过程,即 x ( p q + Δ p m q k ) x(p_q+\Delta p_{mqk}) x(pq+Δpmqk) Δ p m q k \Delta p_{mqk} Δpmqk A m q k A_{mqk} Amqk通过查询特征 z q z_q zq上的线性投影得到。在实际应用中,将查询特征 z q z_q zq传入线性回归层,得到通道数为 2 M K 2MK 2MK的采样偏移量编码 Δ p m q k \Delta p_{mqk} Δpmqk和通道数为 M K MK MK的注意力权重 A m q k A_{mqk} Amqk(权重会经过一次softmax运算)。

  可变形注意力模块用于处理关键元素的卷积特征,设 N q N_q Nq为查询元素的数量,当 M K MK MK较小时,可变卷积模块的复杂度为 O ( 2 N q C 2 + min ⁡ ( H W C 2 , N q K C 2 ) ) O(2N_qC^2+\min(HWC^2,N_qKC^2)) O(2NqC2+min(HWC2,NqKC2)),将其应用于DETR的编码器时,有 N q = H W N_q=HW Nq=HW,复杂度变为 O ( H W C 2 ) O(HWC^2) O(HWC2)复杂度与空间大小呈线性关系,当其应用于DETR的解码器时,有 N q = N N_q=N Nq=N N N N为物体查询向量的数量(object queries)),复杂度变为 O ( N K C 2 ) O(NKC^2) O(NKC2),与空间尺寸 H W HW HW无关

注:对于特征图上的每个像素点,传统的多头注意力机制,会对特征图上所有的点都求一次权重,即特征图上所有的点都会对该点产生影响,计算量比较大,而且比较冗余,在可变形注意力模块中,只会选取图里的 K K K个点求一次权重,即只选取对当前点影响比较大的 K K K个点,来对当前点产生影响,大幅度减小了运算量。

多尺度可变注意力模块

  由于多尺度特征可以灵活表示大物体和小物体,当前大部分目标检测算法都用到了多尺度特征,本算法的可变形注意力模块可以自然地扩展到多尺度特征图上。

  假设 { x l } l = 1 L \{x^l\}^L_{l=1} { xl}l=1L为多尺度特征图,其中 x l ∈ R C × H l × W l x^l\in R^{C\times H_l\times W_l} xlRC×Hl×Wl,假设 p ^ ∈ [ 0 , 1 ] 2 \hat p\in[0,1]^2 p^[0,1]2为每个查询向量 q q q参考点的归一化坐标,多尺度可变注意力模块可以表示为:
M S D e A t t ( 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 ) ] MSDeAtt(z_q,\hat p_q,\{x^l\}^L_{l=1})=\sum^M_{m=1}W_m[\sum^L_{l=1}\sum^K_{k=1}A_{mlqk}\cdot W_m'x^l(\phi_l(\hat p_q)+\Delta p_{mlqk})] MSDeAtt(zq,p^q,{ xl}l=1L)=m=1MWm[l=1Lk=1KAmlqkWmxl(ϕl(p^q)+Δpmlqk)]
其中 m m m表示注意力头的索引序号, l l l表示输入特征的层级索引, k k k表示采样点的索引, Δ p m l q k \Delta p_{mlqk} Δpmlqk A m l q k A_{mlqk} Amlqk分别表示第 l l l层特征、第 m m m个注意力头的,采样点的偏移量和第 k k k个采样点的注意力权重,注意力权重 A m l q k A_{mlqk} Amlqk会由公式 ∑ l = 1 L ∑ k = 1 K A m l q k = 1 \sum^L_{l=1}\sum^K_{k=1}A_{mlqk}=1 l=1Lk=1KAmlqk=1进行归一化。为了清晰地表述图像的尺度,作者使用归一化后的坐标 p ^ q ∈ [ 0 , 1 ] 2 \hat p_q\in[0,1]^2 p^q[0,1]2来表示每个参考采样点,其中 ( 0 , 0 ) (0,0) (0,0) ( 1 , 1 ) (1,1) (1,1)分别表示图像的左上角和右下角。式中的函数 ϕ l ( p ^ q ) \phi_l(\hat p_q) ϕl(p^q)将归一化坐标 p ^ q \hat p_q p^q重新缩放为第 l l l层的输入特征图,多尺度可变形注意力模块与之前的单尺度版本非常相似,区别在于它从多个尺度特征图中采样 K L KL KL个点,而不是从单尺度特征图中采样 K K K个点。简单来说,就是将所有层级的序列特征沿层级方向合并(合并之前会在每个层级特征上分别添加一个层级编码特征),之后在不同层级上预设参考点(层级越浅,则参考点步幅越小),进一步传入可变形注意力模块。

  当 K = L = 1 K=L=1 K=L=1,并且 W m ′ ∈ R C v × C W_m'\in R^{C_v\times C} WmRCv×C固定为单位矩阵时,所提出的注意力模块将退化为可变形卷积,可变形卷积是为单尺度输入设计的,每个注意力头只集中在一个采样点上。然而,我们的多尺度可变形注意力会查看来自多尺度输入的多个采样点,所提出的(多尺度)可变形注意力模块也可以视为Transformer注意力机制的有效变体,其中可变形采样定位引入了预滤波器机制(pre-filtering),也就是只在采样点上做滤波操作(即加权求和操作),当采样点遍历所有可能的位置时,所提出的可变形注意力等同于Transformer注意力。

可变形的TF编码器

  作者利用多尺度可变形注意力模块替换了DETR中的TF编码器,编码器的输入和输出具有相同分辨率的多尺度特征,在编码器中,我们从ResNet中C3到C5阶段输出的特征图提取多尺度特征图 { x l } l = 1 L − 1 ( L = 4 ) \{x^l\}^{L-1}_{l=1}(L=4) { xl}l=1L1(L=4)(其中ResNet输出的特征会首先经过一层 1 × 1 1\times1 1×1的卷积层,用于统一特征图的通道数,统一成256),其中 C l C_l Cl的分辨率是输入图像的 1 2 l \frac{1}{2^l} 2l1倍,注意,分辨率最小的特征图 x L x^L xL是由C5的输出经过一层卷积核为 3 × 3 3\times3 3×3,并且步长为2的卷积层得到,定义为C6,所有的特征图通道数均为256。注意,作者并没有用到FPN中自顶向下的结构,因为所提出的多尺度可变形注意力模块本身就可以在多尺度特征映射之间进行信息交换,TF序列间的建模能力实现了这一点。(论文的附录中验证了,引入FPN结构不会提高模型最终的性能)

  在编码器中应用多尺度可变形注意力模块,输出是与输入分辨率相同的多尺度特征图,键和查询元素都是来自多尺度特征图的像素,对于每个查询向量的像素,参考点是其本身,为了识别每个查询像素所处的特征级别,除了嵌入位置编码以外,作者还在特征表示中添加了一个尺度编码,表示为 { e l } l = 1 L \{e_l\}^L_{l=1} { el}l=1L,与位置编码不同(位置编码是固定的),尺度编码是随机初始化的,并且与网络共同训练。

可变形的TF解码器

  解码器中有交叉注意力模块和自注意力模块,这两种注意力模块的查询元素(即q值)都是物体查询向量 Q Q Q,在交叉注意力中,物体查询向量q从特征图中提取特征,键值(kv)为从编码器输出的特征图;在自注意力模块中,物体查询相互交互,键值(kv)为物体的查询向量。作者在这里只将每个交叉注意力模块替换为多尺度可变形注意力模块,保持自注意力模块结构不变。对于每个物体查询向量,2D参考点 p ^ q \hat p_q p^q归一化后的坐标通过可学习的线性投影和一个sigmoid函数从其对象查询嵌入中预测。

  由于多尺度可变形注意力模块提取参考点周围的图像特征,因此我们让检测头预测的边界框作为相对于参考点的相对偏移量,从而进一步降低优化难度,参考点以框中心作为初始化数据。这样,学习到的解码器注意力与预测的边界框具有很强的相关性,进一步加快了网络的收敛。

Deformable DETR的提升

  迭代边界框的细化:受到光流估计中开发迭代细化的启发,为了提高目标检性能,作者建立了一种简单有效的迭代边界框细化机制,在这里,每个解码器层基于前一层的预测来细化边界框

  二阶段Deformable DETR:在原始的DETR中,解码器中的物体查询向量 Q Q Q与当前图像无关,受二阶段目标检测器的启发,作者探索了一种Deformable DETR的变体,即二阶段Deformable DETR目标检测器,第一阶段检测到的边界框当做区域建议(proposals),之后进一步传入第二阶段中,充当物体查询向量,用于细化所预测的边界框位置。

注:在第一阶段,为了实现高召回率的提议,这里的查询向量 Q Q Q是以图像特征的形式输入到解码器中,和一阶段的不一样,一阶段的 Q Q Q是一组预设好形状、可学习的参数。这里多尺度特征中的每个特征像素都将作为物体查询向量,然而,这么做会带来非常大的计算量,计算复杂度随着查询数量(即图像尺寸)的增加而呈二次增长。为了避免这个问题,作者在第一阶段中去掉了解码器,形成了一个只有编码器的Deformable DETR来生成区域建议,其中每个像素点直接用来预测一个边界框,选取得分最高的边界框作为区域建议,在像第二阶段提供区域建议之前,不应用NMS。

总结

  由于传统transformer模块的计算复杂度与序列长度呈平方项增长,所以将transformer直接用于目标检测时计算量非常大,同时提取特征的过程中序列数不能过大,因此在DETR中只能用CNN提取的最后一层特征做transformer编码,模型缺少多尺度信息,模型检测小目标的能力不强。在本文中,作者提出了可变形注意力机制,将transformer的计算度压缩为线性复杂度,在降低DETR推理速度、加速模型收敛的同时引入了多尺度信息,极大地提升了DETR目标检测算法的性能。

注:以上仅是笔者个人见解,若有问题,欢迎指正

猜你喜欢

转载自blog.csdn.net/qq_50001789/article/details/136212006