【论文阅读】RT-DETR

image.png

RT-DETR 是一个实时的、基于Transformer的目标检测器,它的网络结构包含了一个backbone、一个高效的混合编码器和一个具有辅助预测头的Transformer解码器。

Backbone

RT-DETR 的 backbone 与其他的 DETR 分支一样,使用了业界常用的 Resnet,并且使用了网络最后三层的特征,分别记为S3S_3S4S_4S5S_5

高效的混合编码器(efficient hybrid encoder)

作者团队发现,在编码器阶段,似乎没有必要针对浅层特征应用Encoder,因为Encoder层具有相当高的计算复杂度,但对于浅层特征的效果较差。较深的特征具有更丰富、更抽象的语义特征,而Self Attention机制可能更关注特征的语义性,而非空间的局部细节。

因此,作者在颈部网络阶段,引入了两个模块,分别为AIFI(Attention-based Intra-scale Feature Interaction)和CCFF(CNN-based Cross-scale Feature Fusion)。

AIFI

具体地,AIFI就是一个基于自注意力机制的编码器,仅针对Backbone输出的最后一层特征施加单一尺度内的特征交互,这么做不仅降低了计算复杂度,甚至还提升了精度。

CCFF

而CCFF是一个跨尺度特征融合的模块,它将几个融合块(由卷积层组成)插入到融合路径中,融合块**(Fusion Block)**的作用是将两个相邻的尺度特征融合成一个新特征。

image.png

融合块包含两个1×1卷积来调整通道数量,由 RepConv 组成的 N个 RepBlocks 用于特征融合,两条路径的输出通过逐元素相加进行融合,整体的结构是一个FPN-PAN式的特征融合网络。

ba7c20e897bdae8563835815b30a568.png

因此,在处理图像特征这一部分,当我们的首要指标是实时性的时候,就当下的可供选择的技术而言,“特征提取”与“多尺度特征融合”的最优解决方案还是CNN架构:CNN主干网络与基于CNN的特征金字塔。也许,对于DETR框架来说,似乎Transformer才是核心,但其实更准确地说,代表了稀疏检测范式的基于object query的Transformer decoder才是DETR架构的核心,至于特征提取和融合,不论是CNN还是Transformer,都是一样的。

时至今日,通用视觉目标检测可以分为基于CNN架构的和基于Transformer架构的两大类,而这两大类的核心区别就在于前者是“密集检测范式”,即布置大量空间anchor作为采样点,因此寻找每个anchor所携带的感受野范围内的物体,如RetinaNet、YOLO和SSD;后者是“稀疏检测范式”,即设置固定数量(远小于前者的anchor数量)的object query去存储不同物体的高级语义特征,通过交叉注意力机制去查询图像中的感兴趣的目标,实现对图像中的目标的检测。

IoU 感知的查询选择

同时,在训练阶段,使用到了**DINO的“去噪思想”**来提升双边匹配的样本质量,加快训练的收敛速度。整体来看,RT-DETR的检测头几乎就是把DINO的照搬了过来,当然,其中的一些边边角角的操作给抹掉了,尽可能达到“精简”的目的。

DETR 中的对象查询是一组可学习的嵌入,由解码器优化并由预测头映射到分类分数和边界框。然而,这些对象查询难以解释和优化,因为它们没有明确的物理含义。后续工作改进了对象查询的初始化,并且将它们拓展到内容查询和位置查询(基于锚点)。其中,提出了查询选择方案,它们共同的特点是利用分类分数从编码器中选择排名靠前的 K 个特征来初始化对象查询(或仅位置查询)。然而,由于分类分数和位置置信度的分布不一致,有些预测框虽然由高分类分数,但是与真实框(GT)不接近,这导致选择了分类分数高但IoU分数低的框,而的丢弃了分类分数低但IoU分数高的框,这降低了检测器的性能。

为了解决这个问题,作者提出了 IoU 感知的查询选择,通过在训练期间对模型加以约束,使其对 IoU 分数高的特征产生高分类分数,对 IoU 分数低的特征产生低分类分数。因此,模型根据分类分数选择的排名靠前的K个编码器特征的预测框,既有高分类分数又有高IoU分数。

而在训练的loss上,回归损失还是GIoU损失和L1损失,而类别损失却做了一点改动——引入“IoU软标签”,如下图所:

$\begin{aligned}
L(\hat{y},y)& =L_{box}(\hat{b},b)+L_{cls}(\hat{c},\hat{b},y,b) \
&=L_{box}(\hat{b},b)+L_{cls}(\hat{c},c,IoU)
\end{aligned}$

所谓的**“IoU软标签”,就是指将预测框与 GT 之间的 IoU 作为类别预测的标签**。熟悉YOLO工作的读者一定对此不会陌生,其本质就是已经被广泛验证了的 IoU-aware。在最近的诸多工作里,比如RTMDet、DAMO-YOLO等工作中,都有引入这一理念,去对齐类别和回归的差异。

之所以会使用 IoU 软标签,是因为按照以往的 one-hot 方式,完全有可能出现“当定位还不够准确的时候,类别就已经先学好了”的“未对齐”的情况,毕竟类别的标签非0即1。但如果将IoU作为类别的标签,那么类别的学习就要受到回归的调制,只有当回归学得也足够好的时候,类别才会学得足够好,否则,类别不会过快地先学得比回归好,因此后者显式地制约着前者。

在使用了这个技巧后,显然训练过程中,类别的标签不再是此前的0和1离散值,而是0~1的连续值,那么就不能再使用标准的focal loss,因而采用了variable focal loss(VFL),这一损失函数也被用在了YOLOv6。

评论 (0)

暂无评论,来发表第一条评论吧!