背景
DETR,即DEtection TRansformer,是由尼古拉斯·卡里翁及其团队于2020年在Facebook AI Research首次提出的,它在目标检测领域开创了一种新的波潮。
虽然目前并未保持最先进(State Of The Art)的地位,但DETR对目标检测任务的创新重新定义显著影响了后续的模型,例如CO-DETR,它是当前LVIS上目标检测和实例分割的最先进技术。
摆脱传统的一对多问题情景,其中每个地面真实值对应着大量的锚点候选框,DETR通过将目标检测视为一个集合预测问题,使预测和地面真实值之间实现一对一的对应关系,从而消除了对某些后处理技术的需求。
目标检测回顾
目标检测是计算机视觉领域的一个子领域,专注于在图像或视频帧中识别和定位对象。它不仅仅对对象进行分类,还提供了一个边界框,指示对象在图像中的位置,从而使系统能够理解各个识别对象的空间上下文和位置。
Yolo5视频分割
目标检测本身非常有用,例如在自动驾驶中,但它也是实例分割的预备任务,其中我们试图寻找对象的更精确轮廓,同时能够区分不同实例(与语义分割不同)。
揭秘非最大抑制
非最大抑制(NMS)长期以来一直是目标检测算法中的基石,在后处理中执行不可或缺的角色,以精炼预测输出。在传统的目标检测框架中,模型在潜在对象区域周围提出了大量边界框,其中一些不可避免地表现出重叠度很大(如上图所示)。
NMS通过保留具有最大预测目标分数的边界框,同时抑制表现出高度重叠的相邻边界框来解决这个问题,其重叠程度由IoU(交并比)度量量化。具体而言,给定一个预先设定的IoU阈值,NMS迭代地选择具有最高置信度分数的边界框,并使IoU超过此阈值的边界框失效,确保每个对象有唯一的、高度自信的预测。尽管NMS无处不在,DETR(DEtection TRansformer)大胆地回避了传统的NMS,通过将其重新定义为一个集合预测问题,重塑了目标检测。
通过利用Transformer,DETR直接预测了一个固定大小的边界框集,并消除了传统NMS的必要性,显著简化了目标检测流程,同时保留,甚至提高了模型性能。
深入了解DETR架构
在高层次上,DETR是:
图像编码器(实际上是双图像编码器,因为首先有一个CNN骨干,然后是一个用于更具表达力的Transformer编码器)。
产生图像编码的Transformer解码器。
DETR结构
让我们更详细地了解每个部分:
1.骨干:
我们从一个具有3个彩色通道的初始图像开始:
然后,将此图像馈送到骨干,即卷积神经网络。
我们使用的典型值是C = 2048和H = W = H0 = W0 = 32。
2. Transformer编码器:
Transformer编码器理论上不是必需的,但它为骨干增加了更多的表达力,消融研究显示性能有所提高。首先,1x1卷积将高级激活图f的通道维度从C减小到较小的维度d。
但正如您所知,Transformer将输入序列的向量映射到输出序列的向量,因此我们需要折叠空间维度:
现在我们准备将其馈送到Transformer编码器。重要的是要注意,Transformer编码器仅使用自注意机制。
3. Transformer解码器:
这部分是最难理解的部分,坚持一下,如果你理解了这部分,你就理解了文章的大部分内容。解码器使用自注意和交叉注意机制的组合。它接收N个对象查询,并将每个查询转换为输出框和类别。
边界框预测是什么样子的呢?实际上由两个组件组成:
一个边界框有一些坐标(x1,y1,x2,y2)来标识边界框。
一个类别(例如海鸥,但也可以是空的)
重要的是N是固定的。这意味着DETR始终准确预测N个边界框。但其中一些可以是空的。我们只需要确保N足够大,以覆盖图像中的足够多的对象。然后,交叉注意机制可以关注由编码部分(骨干+Transformer编码器)产生的图像特征。
详细的注意力机制
在原始的Transformer架构中,我们生成一个令牌,然后使用自注意力和交叉注意力的组合来生成下一个令牌,然后重复。但在这里,我们不需要这种递归的形式,我们可以一次性生成所有输出,以便利用并行性。
主要创新:二分图匹配损失
如前所述,DETR精确地产生N个输出(边界框+类别)。但每个输出仅对应一个地面真实值。如果您记得的话,这正是重点所在,我们不想应用任何后处理来过滤重叠的边界框。
我们基本上希望将每个预测与最接近的地面真实值关联起来。实际上,我们正在寻找预测集和地面真实值集之间的双射,最小化总损失。
那么我们如何定义这个损失呢?
1. 匹配损失(成对损失)
首先,我们需要定义一个匹配损失,它对应于一个预测框和一个地面真实框之间的损失,并且这个损失需要考虑两个组成部分:
分类损失(预测边界框内的类别是否与地面真实值相同)
边界框损失(边界框是否接近地面真实值)
匹配损失
更确切地说,对于边界框组件,有两个子组件:
交并比损失(IOU)
L1损失(坐标之间的绝对差异)
2. 双射的总损失
要计算总损失,我们只需对N个实例求和:
因此,我们的问题基本上是找到最小化总损失的双射:
性能见解
DETR与Faster RCNN的性能
DETR:这是指原始模型,它使用Transformer进行目标检测,并使用ResNet-50作为骨干。
DETR-R101:这是DETR的变体,使用ResNet-101作为骨干,而不是ResNet-50。这里,“R101”代表“ResNet-101”。
DETR-DC5:这个版本的DETR在其ResNet-50骨干中使用了修改后的扩张C5阶段,通过增加特征分辨率,提高了模型对较小对象的性能。
DETR-DC5-R101:这个变体结合了这两个修改。它使用ResNet-101骨干,并包含扩张的C5阶段,从而既受益于更深的网络,又受益于增加的特征分辨率。
DETR在大型对象上明显优于基线,这很可能是由Transformer允许的非局部计算所致。但有趣的是,DETR在小型对象上的性能较低。
为什么在这种情况下注意力机制如此强大?
重叠实例上的注意力
非常有趣的是,我们可以观察到在重叠实例的情况下,注意力机制能够正确分离单个实例,如上图所示。
在极端位置上的注意力机制
还很有趣的是,注意力集中在对象的极端位置上,以生成边界框,这正是我们期望的。
总结
DETR不仅仅是一个模型;它是一种范 Paradigm 转变,将目标检测从一对多的问题转变为一个集合预测问题,有效利用Transformer架构的进步。自提出以来,已经出现了一些增强型模型,如DETR++和CO-DETR,它们现在在LVIS数据集上引领着实例分割和目标检测的最新技术。
· END ·
HAPPY LIFE
本文仅供学习交流使用,如有侵权请联系作者删除