介绍

新框架的主要成分,称为DEtection TRansformerDETR

给定一个固定的小型学习对象查询集,DETR对对象的关系和全局图像背景进行推理,直接并行输出最终预测集。

抛弃了多个手工设计的编码先验知识的组件(如非极大抑制),简化了检测管道

DETR不需要任何自定义图层,所以可以在任何包含标准CNN和转化器类的框架中轻松重现。

DETR的主要特点是结合了双向匹配损失和变压器与(非自回归)并行解码

对大目标效果好,因为transformer的全局关注上的优势。

对小目标效果不好。需要FPN多尺度预测。

DETR模型

目标检测集合预测损失

DETR推断出一个固定大小NN个预测集,只需通过一次解码器,其中NN被设定为明显大于图像中的物体数量。训练的主要困难之一是对预测的物体(类别、位置、大小)与地面实况进行评分。我们的损失在预测对象和地面真实对象之间产生一个最佳的双点匹配,然后优化特定对象(边界盒)的损失。

让我们用yy来表示对象的ground truth集合,y^={y^i}i=1N\hat{y}=\{\hat{y}_i\}^N_{i=1}NN个预测的集合。

假设NN大于图像中的物体数量,我们认为NN的大小也是由\varnothing填充的一个集合。

为了在这两个集合之间找到一个双侧匹配,我们寻找一个开销(cost)最低的NN个元素σSN\sigma \in \mathfrak{S}_N的排列组合。

σ^=arg minσSNiNLmatch(yi,y^σ(i))\hat\sigma = \argmin_{\sigma \in \mathfrak{S}_N}\sum^N_i\mathcal{L}_{match}(y_i,\hat{y}_{\sigma(i)})

其中,Lmatch\mathcal{L}_{match}ground truthyiy_i和索引为σ(i)\sigma(i)的预测之间的一对匹配开销。

根据先前的工作,用匈牙利算法有效地计算了这个最佳分配。

匹配成本同时考虑了类别预测和预测与ground truth箱的相似性。

ground truth集的每个元素ii可以被看作是一个yi=(ci,bi)y_i=(c_i,b_i)cic_i是目标类标签(可能是\varnothingbi[0,1]4b_i\in [0,1]^4是边缘框

对于索引为σ(i)的预测来说,我们定义cic_i类的概率为 p^σ(i)(ci)\hat{p}_{\sigma(i)}(c_i)预测框为b^σ(i)\hat{b}_{\sigma(i)} 。通过这些符号,我们定义 L(yi,y^σ(i))\mathcal{L}(y_i,\hat{y}_{\sigma(i)})1{ci}p^σ(i)(ci)+1{ci}Lbox(bi,b^σ(i))-\mathbb{1}_{\{c_i\not=\varnothing\}}\hat{p}_{\sigma(i)}(c_i)+\mathbb{1}_{\{c_i\not=\varnothing\}}\mathcal{L}_{box}(b_i,\hat{b}_{\sigma(i)})

第二步是计算损失函数,即在上一步中匹配的所有配对的匈牙利损失。我们对损失的定义与普通物体检测器的损失类似,即类别预测的负对数可能性和后面定义的盒式损失的线性组合。(这里的 11 是双线1,markdown里不知道怎么\usepakage,打不出来)

LHungarian(u,y^)=i=1N[log(p^σ^(i))(ci)+1{ci}L(bi,b^σ^(i))]\mathcal{L}_{Hungarian}(u,\hat{y})=\sum^N_{i=1}[-\log(\hat{p}_{\hat\sigma(i)})(c_i)+\mathbb{1}_{\{c_i\not=\varnothing\}}\mathcal{L}(b_i,\hat{b}_{\hat\sigma(i)})]

其中 σ\sigma 是第一步计算出的最佳分配

Bounding box loss

我们使用 l1\mathcal{l}_1 损失和广义IoU损失 Liou(,)\mathcal{L}_{iou}(\cdot,\cdot) 的线性组合,它是标度不变的。边缘框损失 Liou(bi,b^σ(i))\mathcal{L}_{iou}(b_i,\hat{b}_{\sigma(i)}) 定义为 λiouLiou(bi,b^σ(i))+λL1bib^σ(i)1\lambda_{iou}\mathcal{L}_{iou}(b_i,\hat{b}_{\sigma(i)})+\lambda_{L1}|| b_i-\hat{b}_{\sigma(i)} ||_1

DETR 架构

Backbone

初始图像 ximgR3×H0×W0x_{img} \in \mathbb{R}^{3\times H_0\times W_0}

激活映射(activation map)

  • fRC×H×Wf\in \mathbb{R}^{C\times H\times W}

  • C=2048C=2048

  • H,W=H032,W032H,W=\frac{H_0}{32},\frac{W_0}{32}

Transformer 编码器

使用1x1卷积将高维激活映射的特征图ff的通道维从CC减小到较小的dd, 创建一个新的特征图 z0Rd×H×Wz_0\in \mathbb{R}^{d\times H\times W}。 编码器期望一个序列作为输入,因此DETRz0z_0的空间尺寸折叠为一个尺寸,从而生成d×HWd\times HW特征图。 每个编码器层均具有标准体系结构。 由于Transformer的体系结构是置换不变的,因此DETR用固定的位置编码对其进行补充,该编码被添加到每个注意力层的输入中。

Transformer 解码器

解码器遵循Transformer 的标准结构,与原始转换器的不同之处在于,DETR模型在每个解码器层并行解码NN个对象,而不是使用自回归模型,一次预测一个元素的输出序列。

由于解码器也是空间无关的,因此NN个输入要加上位置编码,我们将它们添加到每个关注层的输入中。 NN 个对象查询由解码器转换为嵌入的输出。 然后,它们通过前馈网络(FFNs)独立地解码为边缘框坐标和类标签,从而得出 NN 个最终预测。

利用对这些嵌入的自编码器和解码器注意力,全局地将所有对象归结在一起,同时能够将整个图像用作上下文。

前馈网络

最终预测是由ReLU激活,藏层为3层的MLP计算的。 FFN预测边缘框的标准化中心坐标,高度和宽度,然后线性层使用softmax预测类标签。 由于我们预测了一组固定大小的N个边界框,其中N通常比图像中感兴趣的对象的实际数量大得多,因此使用了一个额外的特殊类标签\varnothing来表示在未检测到任何对象。 此类在标准对象检测方法中与背景类具有相似的作用。

辅助解码损失

我们发现在训练过程中使用辅助损失[1]在解码器中是有帮助的,特别是帮助模型输出每个类别的正确对象数量。我们在每个解码器层之后添加预测FFN和匈牙利损失。所有的预测FFN共享它们的参数。我们使用一个额外的共享LB层来规范来自不同解码层的预测FFN的输入。