DETR

论文:[2010.04159] Deformable DETR: Deformable Transformers for End-to-End Object Detection (arxiv.org)

前人的工作

注意力机制

注意力机制可以理解为,计算机视觉系统在模拟人类视觉系统中可以迅速高效地关注到重点区域的特性。
$$
Attention=f(g(x),x)
$$
g(x)表示对输入特征进行处理并产生注意力的过程,f(g(x),x)表示结合注意力对输入特征进行处理的过程

self-attention模型:
$$
Q,K,V=Linear(x)\
g(x)=Softmax(QK)\
f(g(x),x)=g(x)V
$$
senet模型:
$$
g(x)=Sigmoid(MLP(GAP(x)))\
f(g(x),x)=g(x)x
$$

注意力又可以细分为:通道注意力、空间注意力、时间注意力、分支注意力以及两种组合注意力:通道-空间注意力、空间-时间注意力

通道注意力:将输入的特征图,经过基于宽度与高度的global max pooling 和global average pooling,然后分别经过MLP。将MLP输出的特征进行基于element-wise的加和操作,再经过sigmoid激活操作,生成最终的channel attention featuremap。将该channel attention featuremap和input featuremap做element-wise乘法操作,生成Spatial attention模块需要的输入特征。

空间注意力:将Channel attention模块输出的特征图作为本模块的输入特征图。首先做一个基于channel的global max pooling 和global average pooling,然后将这2个结果基于channel 做concat操作。然后经过一个卷积操作,降维为1个channel。再经过sigmoid生成spatial attention feature。最后将该feature和该模块的输入feature做乘法,得到最终生成的特征。

Transformers网络包含self-attention和cross-attention机制,其主要的问题是时间开销、内存开销过高。现有许多思路来解决这个问题

  1. 使用预定义的稀疏注意力模式,最直接的范式就是将注意力模式限制到固定的局部窗口。而这种方法会丧失全局信息。为了补偿对全局信息的提取,可以增加关键元素的接受域,或是允许少量特殊令牌访问所有关键元素,或是添加一些预定义的稀疏注意模式,直接注意远处的关键元素
  2. 学习数据依赖的稀疏注意力,基于注意力的局部敏感数据哈希算法,将查询和关键元素散列到不同的容器中,或是使用k-means找到最相关的关键元素,或是学习block-wise稀疏注意力的block排序
  3. 探索自我注意力的低秩性质,通过尺寸维度而不是通道维度的线性投影来减少关键元素数量,或是通过内核化近似重新计算自注意力

本篇论文使用的可变性注意力是受可变性卷积启发,属于第二类,只关注从查询元素的特征中预测一个小的固定采样点集合。在相同FLOPS下,变形注意力要比传统卷积略慢。

目标检测的多尺度特征表示

在目标检测任务中,一张图像内真实对象的尺寸差别巨大,这也成为目标检测的一大困难。现代物体检测器通常利用多尺度特征来解决。FPN提出一个自顶向下路径融合多尺度特征;PANet进一步添加一条自底向上的路径到FPN顶部;或是结合通过一个全局注意力操作提取出的从所有尺寸中的特则;或是使用U型模型来融合多尺度特征。最近,NAS-FPN、Auto-FPN提出通过神经网络搜索自动设计交叉注意力联系;BiFPN是PANet的重复简化版本

本篇论文使用多尺度可变性的注意力模块可以通过注意力机制自然的将多尺度特征累加起来,无需借助特征金字塔网络

Transformers中的多头检测

Transformers是基于机器翻译的注意力机制的网络架构。为了使模型能够关注不同表示子空间和不同位置的内容,将不同注意力头的输出以可学习的权值线性聚合。

DETR基于Transformer encoder-decoder框架,合并了set-based 匈牙利算法,通过二分图匹配,强制每一个ground-truth box都有唯一的预测结果(通过该算法找优化方向,哪个ground-truth由哪个slot负责)

存在的问题

  1. DETR训练周期长,到达收敛状态的时间长,初始化时,图上各个位置的权重相同,而在训练结束时,权重只集中在图像中出现物体的位置,这里权重的更新似乎需要经过很多轮训练才能达到收敛
  2. 对小目标物体检测不友好,DETR使用多尺度特征处理小目标,而高分辨率的特征图会大大提高DETR复杂度

关键过程

  1. 通过CNN骨干网络将输入特征提取出来。DETR利用标准的Transformer编码器-解码器体系结构将输入特征映射转换为一组对象查询的特征。在目标查询特征(由解码器产生)上添加一个三层前馈神经网络(FFN)和一个线性投影作为检测头。
  2. 对于DETR的编码器,查询和关键元素都是特征图中的像素。编码器输入是ReaNet特征图,自注意的计算复杂度为O(h^2w^2c),随空间大小呈二次型增长。
  3. 对于DETR解码器,输入包括编码器中的特征图和N个由可学习位置嵌入表示的对象查询。解码器中存在两类注意模块,即交叉注意模块自我注意模块。在交叉注意模块中,对象查询从特征映射中提取特征。查询元素是对象查询的元素,关键元素是编码器的输出特征映射的元素。复杂度随特征映射的空间大小呈线性增长。在自注意模块中,对象查询相互交互,以捕获它们之间的关系。查询和关键元素都是对象查询。因此,对于适度数量的对象查询,复杂性是可以接受的。

论文概述

image-20220105165859553

端到端适用于目标检测的可变性transformers模型

模型使用ResNet-50作预训练

可变性注意力模块

不同于传统注意力模块注意图像中的所有位置,可变性注意力模块只关注参考点周围一小组关键采样点,无需考虑特征图的空间大小,即为每个查询只分配少量固定数量的关键点。
$$
DeformAttn(z_q,p_q,x)=\sum^M_{m=1}W_m[\sum^K_{k=1}A_{mqk}\times W^{‘}mx(p_q+\Delta p{mqk})],
$$
输入特征是C×H×W维的;q表示具有Zq个上下文特征、二维参考点Pq的查询元素;m表示注意力头;k表示采样的关键点的索引,K为采样关键点的总数,Δp和A分别为检测头的采样偏移量和权重

多尺度可变性注意力模块

$$
MSDeformAttn(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}\times W^{‘}m x^l (\phi_l(\hat{p_q})+\Delta p{mlqk})],
$$

x是多尺度特征输入图,l是输入特征的等级,k为采样点。多尺度变形注意与之前的单尺度版本非常相似,不同的是它从多尺度特征映射中采样LK点,而不是从单尺度特征映射中采样K点。Φ将归一化坐标重新转换为第l层的特征图。

可变形卷积是为单尺度输入而设计的,每个注意力头只关注一个采样点。然而,多尺度变形注意从多尺度输入中查看多个采样点。所提出的(多尺度)可变形注意模块也可以被视为Transformer注意的有效变体,其中可变形采样位置引入了预滤波机制(预先过滤不重要的点,降低计算复杂度)。当采样点遍历所有可能的位置时,所提出的注意模块相当于Transformer注意。

可变性transformer编码器

我们用提出的多尺度可变形注意模块替换DETR中的Transformer注意模块处理特征映射。该编码器的输入和输出都是具有相同分辨率的多尺度特征图。关键元素和查询元素都是多尺度特征图中的像素。对于每个查询像素,参考点就是它本身。为了确定每个查询像素所处的特征级别,除了位置嵌入之外,我们还在特征表示中添加了尺度级嵌入(记作el)。与固定编码的位置嵌入不同,尺度级嵌入{el}Ll=1是随机初始化并与网络联合训练的。可变形变压器编码器的参数在不同的特征层之间共享。

可变性transformer解码器

解码器中存在交叉注意模块和自注意模块。两种类型的注意模块的查询元素都是对象查询。在交叉注意模块中,对象查询从特征映射中提取特征,其中关键元素是编码器的输出特征映射。在自注意模块中,对象查询相互交互,其中的关键元素是对象查询。(这里和DETR网络相似)由于提出的变形注意模块是为处理卷积特征映射作为关键元素而设计的,所以只将每个交叉注意模块替换为多尺度变形注意模块,而保持自我注意模块不变。

由于多尺度可变形注意模块提取参考点周围的图像特征,通过让检测头相对于参考点的偏移量预测边界盒,可以进一步降低优化难度。

通过将DETR中的Transformer注意模块替换为可变形注意模块,建立了一个高效、快速收敛的检测系统,称为可变形DETR

迭代边界框优化

为了提高检测性能,作者建立了一种简单有效的迭代边界盒优化机制。这里,每个解码器层都根据前一层的预测来细化边界框。

两阶段可变性DETR

在原始DETR中,解码器中的对象查询与当前图像无关。作者使用两阶段目标检测思想,第一阶段使用可变性DETR生成区域建议,生成的区域建议将作为对象查询提供给解码器以进一步细化,形成一个两阶段的可变形DETR。

在第一阶段,为了实现高召回建议,多尺度特征图中的每个像素都将作为对象查询。然而,直接将对象查询设置为像素会给解码器中的自注意模块带来不可接受的计算和内存开销。为了避免这个问题,去掉了解码器,并形成了一个只有编码器的可变形DETR来生成区域建议。即每个像素被赋值为一个对象查询,直接预测一个边界框。得分最高的边界框被选为区域建议。在将区域建议提交到第二阶段之前,不应用NMS。

实验结果

image-20220105165859553
谢谢你请我吃糖果
0%