开发者社区> clichong> 正文

论文阅读笔记 | 目标检测算法——DETR

简介: 论文阅读笔记 | 目标检测算法——DETR
+关注继续查看
福利推荐:阿里云、腾讯云、华为云等大品牌云产品全线2折优惠活动来袭,4核8G云服务器899元/3年,新老用户共享优惠,点击这里立即抢购>>>

paper:End-to-End Object Detection with Transformers

code:https://github.com/facebookresearch/detr

image.png


摘要:

paper提出将目标检测问题看作是集合预测问题,简化了检测流程,有效的消除了一些设计需要:如非最大抑制程序或锚生成。DETR是一种基于集合的全局损失,通过双向匹配进行唯一预测,同时也是一种encoder-decoder结构。


实现了给定一个固定大小的query,DETR根据目标对象与全局图像的上下文关系直接并行输出最终的预测集。


其中,paper涉及到了一些transformer的概念,有关transformer的介绍可以查看我另外的两篇博客:


1. Transformer介绍


2. Vit 介绍(Transformer用于分类任务)


1. Introduction


在以往主流的目标检测框架中都是通过对anchor定义代理回归和分类问题来解决检测任务,但是这种方式需要人为自觉的设定anchor相关参数与一些后处理的方法。为此,作者提出DETR,一种直接集预测方法来绕过代理任务,同时使用了transformer结构。


通过将目标检测看作直接集预测问题,简化了训练流程,采用了一种基于transformer的编解码器结构。transformer的自注意机制,显式地建模序列中所有元素之间的成对交互,使这些架构特别适合于特定的集预测约束,如删除重复预测。结构如图1所示:

image.png

与以往大多数直接集预测的工作相比,DETR的主要特点是将二部匹配损耗和transformers与(非自回归)并行解码结合起来。相比之下,以前的工作集中于使用rnn的自回归解码。DETR中的匹配损失函数唯一地将一个预测框给一个ground truth对象,并且对预测对象的排列不变。


DETR在大型对象上展示了明显更好的性能,这很可能是由transformers的非局部计算实现的。然而,它在小对象上的性能较低。同时,其需要需要超长的训练时间。


2. Related work


作者的工作建立在以下几个领域:

1)用于集预测的二分匹配损耗

2)基于transformers的编码器-解码器体系结构

3)并行译码

4)目标检测方法


2.1 Set Prediction

在深度学习中,没有特定的结构用于直接集合预测。最典型的集合预测任务当属多标签分类问题,但这类方法不可以直接迁移到目标检测中(目标检测中还需要对目标进行定位)。这类任务中首要问题是重复检测,当前目标检测方法使用的是非极大值抑制。但集合预测不需要后处理,它通过全局推理来预测元素之间的关系。同时,可以使用全连接网络预测固定大小的集合,但同时会带来庞大的计算量。一种可能的解决办法是使用自递归序列模型,如循环神经网络。在这种情况下,损失函数应该对预测目标保持不变,一种解决办法是使用匈牙利算法设计损失函数来唯一匹配预测结果和标注信息。与以往方法不同的是,论文没有采用自回归模型,而是使用了带并行编码器的Transformer模型。


2.2 Transformers and Parallel Decoding

注意机制是神经网络层,从整个输入序列中聚集信息。Transformer引入了自注意层,类似于非局部神经网络,扫描序列的每个元素,并通过从整个序列中聚合信息来更新它。基于注意力的模型的主要优点之一是其全局计算和完美的记忆性,这使得它比rnn更适合长序列。


Transformer首先在自回归模型中使用,遵循早期的序列-序列模型,逐个生成输出tokens。但由于推理成本的限制,以并行的方式产生序列没能得到发展。为此,作者结合了Transformer和并行解码,以便在计算成本和执行集合预测所需的全局计算能力之间进行适当的权衡。


2.3 Object detection

在DETR中,通过直接预测输入图像的检测集,而不是锚框,从而简化检测过程。


一些目标检测器使用了二分匹配损耗。然而,在这些早期的深度学习模型中,不同预测之间的关系仅采用卷积或全连接层建模,而手工设计的NMS后处理可以提高它们的性能。最近的探测器与NMS一起对ground truth和预测值之间使用非唯一的分配规则。使用直接的集合损失,不需要任何后处理步骤。然而,这些方法使用额外的手工上下文特征,如提议框坐标,以高效地建模检测之间的关系。


还有使用基于CNN激活的编码器-解码器架构的两分匹配损失来直接产生一组包围盒的检测器,但是这些方法仅在小数据集上进行评估,而没有参照现代基线,且没有利用并行解码的最新transformers。


3. DETR model


在预测过程中,有两条因素对直接的集合预测至关重要:

1)预测的损失函数确保预测框与真实框的唯一匹配

2)确保检测结构可以预测一组对象且对他们之间的关系建模


DETR的具体结构如图所示:

image.png


3.1 Object detection set prediction loss

通过解码器的输出,DETR会输出一组N个固定大小的预测,其中N是要比图像中的目标数量要大的。训练的主要难点之一是根据ground truth对预测对象(类别、位置、大小)进行评分。作者提出的损失产生了预测对象和ground truth之间的最佳二分匹配,然后优化特定对象(边界框)的损失。

image.png

这种寻找的过程与现代探测器中用于匹配提议或锚点到ground true的启发式分配规则相同。主要的区别是,需要找到一对一的匹配来进行没有重复的直接集预测。


第二步是计算损失函数,即前一步中匹配的所有配对的匈牙利损失。这里作者对损失的定义类似于普通检测器的损失,即类预测的负对数似然和后面定义的边界框损失的线性组合:

image.png


3.2 DETR architecture

总体的DETR体系结构非常简单。它包含三个主要组成部分,在下面描述:一个CNN主干提取一个紧凑的特征表示,一个编码器-解码器转换器,和一个简单的前馈网络(FFN),进行最终的检测预测。


DETR可以在任何深度学习框架中实现,该框架提供了一个通用的CNN主干和一个只有几百行代码的转换器架构实现,在PyTorch中,用不到50行代码就可以实现用于DETR的推理代码。


3.2.1 Backbone

image.png

3.2.2 Transformer encoder

image.png


3.2.3 Transformer decoder

解码器遵循transformer的标准结构,使用多头自注意力机制和编码器-解码器变换N个尺寸为d的嵌入。与原始transformer的不同之处在于,DETR模型在每个解码器层并行解码N个对象,而Vaswani等人使用Autoregressive模型,每次预测一个元素的输出序列。由于解码器也是置换不变的,因此输入嵌入必须不同才能产生不同的结果。这些输入嵌入是我们称之为object queries的学习位置编码,与编码器类似,我们将它们添加到每个注意层的输入中。


所以N个object queries在解码器中会被转换成N个output embedding。然后通过前馈网络将它们独立解码为框坐标和类标签,从而得出最终的预测。使用自注意力机制作用于这些embedding上,模型利用它们之间的成对关系对所有对象进行全局推理,使得可以使用整副图像作为上下文。


3.2.4 Feed-forward networks

最后的预测是由一个带有ReLU激活函数和隐藏维数的3层感知器和一个线性投影层来计算的。FFN预测输入图像的归一化中心坐标、框的高度和宽度,线性层使用softmax函数预测类标签。由于我们预测一个固定大小的N个包围盒集合,其中N通常比图像中感兴趣的物体的实际数量大得多,所以使用额外的特殊类标签?来表示槽内未检测到物体。这个类在标准对象检测方法中扮演着类似于背景类的角色。


3.2.5 Auxiliary decoding losses

辅助损耗在帮助模型输出正确的类的对象数量的时候比较有帮助。在每一层解码器后加入预测FFN层和匈牙利损耗。所有预测FFN共享它们的参数,然后使用一个额外的共享层范数对来自不同解码器层的预测FFN输入进行归一化。


3.3 Overall process

这里回顾一些整个DETR的总体流程:

image.png

image.png


ps:预测过程遇上所示,而对于训练过程来说,也是类似,不是复杂了一点。通过二分匹配计算损失来不断训练。而在3.1节已经介绍过了,训练的主要难点之一是根据ground truth对预测对象(类别、位置、大小)进行评分。作者提出的损失产生了预测对象和ground truth之间的最佳二分匹配,然后优化特定对象(边界框)的损失。

image.png


4. Result


  • 与Faster-RCNN的对比:

image.png

  • Encoder层数的影响:

image.png

  • Decoder层数的影响:

image.png

  • l 1 与G I o U 叠加进行边界框回归损失的作用:

image.png

总结:


提出了一种新的基于transformers和二分匹配损耗的直接集预测目标检测系统DETR。与Faster R-CNN相比,它在大物体上的表现要好得多,这可能要归功于自注意机制对全局信息的处理。这种探测器的新设计也带来了新的挑战,特别是在小物体的训练、优化和性能方面。


论文的关键是将特征输入Transformer后依旧要保持目标的位置信息以及最后通过合适的方法将预测结果同标注信息匹配。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
3D检测经典 | 第一个Anchor-Free、第一个NMS-Free 3D目标检测算法!!!
3D检测经典 | 第一个Anchor-Free、第一个NMS-Free 3D目标检测算法!!!
81 0
超大超全!万字长文详解多领域实时目标检测算法(2022最新)(下)
基于深度神经网络的目标检测器不断发展,并用于多种应用,每个应用都有自己的一组要求。安全关键型的应用程序需要高精度和可靠性,而低延迟的任务需要节约资源的神经网络结构。实时目标检测器在有高影响力的现实世界应用中是必不可少的,并不断有新方法提出,但它们过分强调精度和速度上的改进,而忽略了其他方面,如多功能性、鲁棒性、资源和能源效率。现有网络的参考基准不存在,新网络设计的标准评估指南也不存在,这导致比较模棱两可和不一致。
75 0
超大超全!万字长文详解多领域实时目标检测算法(2022最新)(中)
基于深度神经网络的目标检测器不断发展,并用于多种应用,每个应用都有自己的一组要求。安全关键型的应用程序需要高精度和可靠性,而低延迟的任务需要节约资源的神经网络结构。实时目标检测器在有高影响力的现实世界应用中是必不可少的,并不断有新方法提出,但它们过分强调精度和速度上的改进,而忽略了其他方面,如多功能性、鲁棒性、资源和能源效率。现有网络的参考基准不存在,新网络设计的标准评估指南也不存在,这导致比较模棱两可和不一致。
192 0
一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(下)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于激光雷达雷达点云、多模态数据的相关算法,下面展开讨论下~
129 0
一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(上)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于激光雷达雷达点云、多模态数据的相关算法,下面展开讨论下~
158 0
超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于单目、双目和伪激光雷达数据的相关算法,下面展开讨论下~
47 0
经典神经网络 | fast rcnn目标检测算法详解
经典神经网络 | fast rcnn目标检测算法详解
51 0
目标检测算法之FPN(附FPN代码实现)
目标检测算法之FPN(附FPN代码实现)
164 0
不需要锚框:一种全卷积 One-Stage 目标检测算法(FCOS)
不需要锚框:一种全卷积 One-Stage 目标检测算法(FCOS)
122 0
RCNN目标检测算法内容详解(依托论文讲解)
RCNN目标检测算法内容详解(依托论文讲解)
59 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
网易云音乐音视频算法处理的 Serverless 探索之路
立即下载
阿里技术参考图册-算法篇
立即下载
阿里千亿特征深度学习算法XNN实践
立即下载


http://www.vxiaotou.com