资讯专栏INFORMATION COLUMN

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

jiekechoo / 3199人阅读

摘要:在这种情况下,损失函数应该对预测目标保持不变,一种解决办法是使用匈牙利算法设计损失函数来唯一匹配预测结果和标注信息。


如有错误,恳请指出。


paper:End-to-End Object Detection with Transformers
code:https://github.com/facebookresearch/detr

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

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

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

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

1. Introduction


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

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

与以往大多数直接集预测的工作相比,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的具体结构如图所示:

3.1 Object detection set prediction loss

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

y y y来表示对象的ground true集合,用 y ^ = { y ^ } i = 1 N /hat{y} = /{/hat{y}/}^{N}_{i=1} y^={y^}i=1N来表示N个预测的集合。假设N的数目是要比一副图像上的对象要多的,其实也可以认为 y y y是一组数目也是N的集合,但是多出来的部分为null,也就是∅(no object)。为了找到这两个集合之间的二分匹配,作者寻找代价最低的n个元素的排列 σ ∈ S N σ∈S_{N} σSN,公式可以表示为:
σ ^ = arg ⁡ min ⁡ σ ∈ S N ∑ i N L m a t c h ( y i , y ^ σ ( i ) ) (1) /hat{σ} = /arg /min_{σ/in S_{N}} /sum^{N}_{i}L_{match}(y_{i}, /hat{y}_{σ}(i)) /tag{1} σ^=argσSNminiNLmatch(yi,y^σ(i))(1)
其中, L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_{i},/hat{y}_{σ}(i)) Lmatch(yi,y^σ(i))表示的是ground truth y i y_{i} yi与预测框 σ i σ_{i} σi之间的成对匹配代价。其中匈牙利算法有效地计算了这种最优分配。

匹配代价既考虑了类预测,也考虑了预测框和ground true的相似性。其中ground true集合中的每个成员都可以看成是 y i = ( c i , b i ) y_{i} = (c_{i}, b_{i}) yi=(ci,bi),其中 c i c_{i} ci表示目标类别(可能是null,也就是没有目标对象);而 b i ∈ [ 0 , 1 ] 4 b_{i} /in [0, 1]^{4} bi[0,1]4是定义ground truth中心坐标及其相对于图像大小的高度和宽度的向量。而对于预测的边界框 σ i σ_{i} σi,定义其类别概率为: p ^ σ ( i ) ( c i ) /hat{p}_{σ(i)}(c_{i}) p^σ(i)(ci) ,定义其预测框坐标为: b ^ σ ( i ) /hat{b}_{σ(i)} b^σ(i)。利用这些符合,定义成对匹配代价函数为:
L m a t c h ( y i , y ^ σ ( i ) ) = − 1 { c i = ∅ } p ^ σ ( i ) ( c i ) + 1 { c i ≠ ∅ } L b o x ( b i , b ^ σ ( i ) ) (2) L_{match}(y_{i},/hat{y}_{σ}(i)) = -1_{/{c_{i}=∅/}}/hat{p}_{σ(i)}(c_{i})+1_{/{c_{i}≠∅/}}L_{box}(b_{i},/hat{b}_{σ(i)}) /tag{2} Lmatch(yi,y^σ(i))=1{ci=}p^σ(i)(ci)+1{ci=}Lbox(bi,b^σ(i))(2)
这种寻找匹配的过程与现代探测器中用于匹配提议或锚点到ground true的启发式分配规则相同。主要的区别是,需要找到一对一的匹配来进行没有重复的直接集预测。

第二步是计算损失函数,即前一步中匹配的所有配对的匈牙利损失。这里作者对损失的定义类似于普通检测器的损失,即类预测的负对数似然和后面定义的边界框损失的线性组合:
L H u n g a r i a n ( y , y ^ ) = ∑ i = 1 N [ − log ⁡ p ^ σ ^ ( i ) ( c i ) + 1 { c i ≠ ∅ } L b o x ( b i , b ^ σ ( i ) ) ] (3) L_{Hungarian}(y,/hat{y}) = /sum^{N}_{i=1} [-/log /hat{p}_{/hat{σ}(i)}(c_{i})+1_{/{c_{i}≠∅/}}L_{box}(b_{i},/hat{b}_{σ(i)})] /tag{3} LHungarian(y,y^)=i=1N[logp^σ^(i)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121511.html

相关文章

  • 目标检测再次革新!图灵奖得主团队提出Pix2Seq,将Detection变成了Image Capti

    摘要:根据对象描述构建序列在目标检测数据集中,图像具有可变数量的对象,表示为检测框和类别标签的集合。通过序列增强,能够大幅延迟,并在不增加噪声和重复预测频率的情况下提高召回率。继之后,目标检测范式又一次被革新,这个过程,为目标检测专门 关注公众号,发现CV技术之美 ▊ 写在前面 本文提出了一种...

    ARGUS 评论0 收藏0
  • ECCV 2018 | CornerNet:目标检测算法新思路

    摘要:表示类别为,坐标是的预测热点图,表示相应位置的,论文提出变体表示检测目标的损失函数由于下采样,模型生成的热点图相比输入图像分辨率低。模型训练损失函数使同一目标的顶点进行分组,损失函数用于分离不同目标的顶点。 本文由极市博客原创,作者陈泰红。 1.目标检测算法概述 CornerNet(https://arxiv.org/abs/1808.01244)是密歇根大学Hei Law等人在发表E...

    awkj 评论0 收藏0
  • 目标检测算法——YOLOV1解析

    摘要:前言之前打算分析源码的,但是由于工作较忙就耽误了。直到红色框的网格处,我们发现有一只狗,这是标签为狗的类别数,为,为包含狗的物体框的中心坐标和宽高。在中只用物体框中心点所在的网格进行预测,因此红色框周围的网格的标签数据也全都是。 前言 之前打算分析caffe源码的,但是由于工作较忙就耽误了。但是希望今后还是能坚持写博客,对知识进行总结梳理,锻炼自己的表达能力。 最近一段时间在研究yol...

    Astrian 评论0 收藏0
  • 目标检测算法——YOLOV1解析

    摘要:前言之前打算分析源码的,但是由于工作较忙就耽误了。直到红色框的网格处,我们发现有一只狗,这是标签为狗的类别数,为,为包含狗的物体框的中心坐标和宽高。在中只用物体框中心点所在的网格进行预测,因此红色框周围的网格的标签数据也全都是。 前言 之前打算分析caffe源码的,但是由于工作较忙就耽误了。但是希望今后还是能坚持写博客,对知识进行总结梳理,锻炼自己的表达能力。 最近一段时间在研究yol...

    DirtyMind 评论0 收藏0
  • [论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结

    《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期待与您前行,加油。 前一篇文章分享了S&P2019《HOLMES: Real-time APT Detection through Correlation of Suspicious Informati...

    EasonTyler 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<