基于Transformer的经典目标检测之DETR

背景

DETR,即DEtection TRansformer,是由尼古拉斯·卡里翁及其团队于2020年在Facebook AI Research首次提出的,它在目标检测领域开创了一种新的波潮。

虽然目前并未保持最先进(State Of The Art)的地位,但DETR对目标检测任务的创新重新定义显著影响了后续的模型,例如CO-DETR,它是当前LVIS上目标检测和实例分割的最先进技术。

摆脱传统的一对多问题情景,其中每个地面真实值对应着大量的锚点候选框,DETR通过将目标检测视为一个集合预测问题,使预测和地面真实值之间实现一对一的对应关系,从而消除了对某些后处理技术的需求。

目标检测回顾

目标检测是计算机视觉领域的一个子领域,专注于在图像或视频帧中识别和定位对象。它不仅仅对对象进行分类,还提供了一个边界框,指示对象在图像中的位置,从而使系统能够理解各个识别对象的空间上下文和位置。

afa0765ebd26d089f6554605c4a6f586.gif

Yolo5视频分割

目标检测本身非常有用,例如在自动驾驶中,但它也是实例分割的预备任务,其中我们试图寻找对象的更精确轮廓,同时能够区分不同实例(与语义分割不同)。

2c5324f428f8fca54d34fe5480975c29.jpeg揭秘非最大抑制

非最大抑制(NMS)长期以来一直是目标检测算法中的基石,在后处理中执行不可或缺的角色,以精炼预测输出。在传统的目标检测框架中,模型在潜在对象区域周围提出了大量边界框,其中一些不可避免地表现出重叠度很大(如上图所示)。

NMS通过保留具有最大预测目标分数的边界框,同时抑制表现出高度重叠的相邻边界框来解决这个问题,其重叠程度由IoU(交并比)度量量化。具体而言,给定一个预先设定的IoU阈值,NMS迭代地选择具有最高置信度分数的边界框,并使IoU超过此阈值的边界框失效,确保每个对象有唯一的、高度自信的预测。尽管NMS无处不在,DETR(DEtection TRansformer)大胆地回避了传统的NMS,通过将其重新定义为一个集合预测问题,重塑了目标检测。

通过利用Transformer,DETR直接预测了一个固定大小的边界框集,并消除了传统NMS的必要性,显著简化了目标检测流程,同时保留,甚至提高了模型性能。

深入了解DETR架构

在高层次上,DETR是:

  •  图像编码器(实际上是双图像编码器,因为首先有一个CNN骨干,然后是一个用于更具表达力的Transformer编码器)。

  •  产生图像编码的Transformer解码器。

753682de88451e6f18652be30baa849b.jpeg
DETR结构

让我们更详细地了解每个部分:

1.骨干:

我们从一个具有3个彩色通道的初始图像开始:

9604e8abc77b0aa1e5e9fad7f0b7ddb7.png

然后,将此图像馈送到骨干,即卷积神经网络。

9eadd03d376cec5a61e8da7dbb787b03.png

我们使用的典型值是C = 2048和H = W = H0 = W0 = 32。

2. Transformer编码器:

Transformer编码器理论上不是必需的,但它为骨干增加了更多的表达力,消融研究显示性能有所提高。首先,1x1卷积将高级激活图f的通道维度从C减小到较小的维度d。

f3a519d188909c090b83fcf209b30daa.png

但正如您所知,Transformer将输入序列的向量映射到输出序列的向量,因此我们需要折叠空间维度:

6ae887c8b96ddd03643445c29d63391c.png

现在我们准备将其馈送到Transformer编码器。重要的是要注意,Transformer编码器仅使用自注意机制。

aa527d4fcd80e4b146f958ef50cab908.jpeg

3. Transformer解码器:

这部分是最难理解的部分,坚持一下,如果你理解了这部分,你就理解了文章的大部分内容。解码器使用自注意和交叉注意机制的组合。它接收N个对象查询,并将每个查询转换为输出框和类别。

边界框预测是什么样子的呢?实际上由两个组件组成:

  • 一个边界框有一些坐标(x1,y1,x2,y2)来标识边界框。

  • 一个类别(例如海鸥,但也可以是空的)

重要的是N是固定的。这意味着DETR始终准确预测N个边界框。但其中一些可以是空的。我们只需要确保N足够大,以覆盖图像中的足够多的对象。然后,交叉注意机制可以关注由编码部分(骨干+Transformer编码器)产生的图像特征。

95c1e59ec412036535861de923b6eea2.jpeg详细的注意力机制

在原始的Transformer架构中,我们生成一个令牌,然后使用自注意力和交叉注意力的组合来生成下一个令牌,然后重复。但在这里,我们不需要这种递归的形式,我们可以一次性生成所有输出,以便利用并行性。

主要创新:二分图匹配损失

如前所述,DETR精确地产生N个输出(边界框+类别)。但每个输出仅对应一个地面真实值。如果您记得的话,这正是重点所在,我们不想应用任何后处理来过滤重叠的边界框。

9cdfaf31511f7e591954996bf465906d.jpeg

我们基本上希望将每个预测与最接近的地面真实值关联起来。实际上,我们正在寻找预测集和地面真实值集之间的双射,最小化总损失。

那么我们如何定义这个损失呢?

1. 匹配损失(成对损失

首先,我们需要定义一个匹配损失,它对应于一个预测框和一个地面真实框之间的损失,并且这个损失需要考虑两个组成部分:

  • 分类损失(预测边界框内的类别是否与地面真实值相同)

  • 边界框损失(边界框是否接近地面真实值)

c0e68894dabb2a746cbea0c1c7f70e8f.jpeg匹配损失

更确切地说,对于边界框组件,有两个子组件:

  • 交并比损失(IOU)

  • L1损失(坐标之间的绝对差异)

    c1d14e134333819312c508a4c6f33b59.jpeg

2. 双射的总损失

要计算总损失,我们只需对N个实例求和:

98db2d8547e9e243b1e6166721a98af2.jpeg

因此,我们的问题基本上是找到最小化总损失的双射:

4cfb6a5465e312eb8403b13f4a40909b.jpeg

性能见解

05645938315fc091f3bc04e144428518.jpegDETR与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在小型对象上的性能较低。

为什么在这种情况下注意力机制如此强大?

74f9dd8b17b887bf148e1efb4d46fa95.jpeg

重叠实例上的注意力

非常有趣的是,我们可以观察到在重叠实例的情况下,注意力机制能够正确分离单个实例,如上图所示。

965053eb72e5e0607127308f016ad159.jpeg

在极端位置上的注意力机制

还很有趣的是,注意力集中在对象的极端位置上,以生成边界框,这正是我们期望的。

总结

DETR不仅仅是一个模型;它是一种范 Paradigm 转变,将目标检测从一对多的问题转变为一个集合预测问题,有效利用Transformer架构的进步。自提出以来,已经出现了一些增强型模型,如DETR++和CO-DETR,它们现在在LVIS数据集上引领着实例分割和目标检测的最新技术。

·  END  ·

HAPPY LIFE

13a8449e8d205757448c3da8c2eca107.png

本文仅供学习交流使用,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值