DETR解析(DEtection Transformer)

 

论文地址:https://arxiv.org/abs/2005.12872

 

总体思路及优势分析

DETR是FIR提出的基于Transformers的端到端目标检测,将对象检测视为直接集合预测问题(set prediction),简化了检测流程,有效地消除了对先验知识和人工操作的要求,例如非极大值抑制NMS或锚点生成anchor。结果在coco数据集上效果与Faster RCNN相当,且可以很容易地将DETR迁移到其他任务例如全景分割。

 

优点

1、提出了一种目标检测新思路,真正的end-to-end,更少的先验(没有anchor、nms等),在大目标上检测较为准确;

2、在coco上,准确率、运行效率与高度优化的faster R-CNN基本持平。在大目标上效果比faster R-CNN好;

3、与大多数现有的检测方法不同,DETR不需要任何自定义层,因此复现容易,涉及到模块都能在任何深度学习框架中找到。

不足

1、对小物体检查效果欠佳

2、训练时间较长

DETR原理

DETR的流程很简单,可以归结如下:Backbone -> Transformer -> detect header。

9a7bb9c715ef4da88d328c3beefe11fb.png

DETR采用基于Transformer的编码器-解码器架构,Transformer 的自注意力机制明确地模拟了序列中元素之间的所有成对交互,使这些架构特别适合集合预测的特定约束,例如删除重复的预测。DETR模型架构:一个用于特征提取的 CNN 主干,一个编码器-解码器以及一个简单的全连接层 (FFN)。

 

注意力机制是聚合来自整个输入序列的信息的神经网络层。Transformer引入了自注意力层,与非局部神经网络类似,它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的记忆,这使得它们比RNN更适合长序列,在目标检测方面对物体识别效果更好,能够实现更全面的检测。

42ad00f227724261b04291a6de114b60.png

fa908b73e0444317aade8f9c38e757df.png

Backbone输入图像(H*W*C),通过CNN卷积得到特征图,用1x1卷积核进行卷积,将图像的通道维度从C减少到更小的维度d。降维之后得到一个新的特征图z0(H*W*d),与Spatial positional Encoding相加,由于Encoder期望一个序列作为输入,因此我们将z0的空间维度折叠为一维,从而产生 d×HW 特征图。然后被送到Encoder里。为了体现图像在x和y维度上的信息,作者的代码里分别计算了两个维度的positional Encoding,然后Cat到一起。

Transformer Encoder:FFN、LN等操作与Transformer类似,Encoder最后得到的结果是对N个物体编码后的特征。

Transformer Decoder:每个Decoder有两个输入:一个是object query(或者是上一个Decoder的输出),另一个是Encoder的结果,区别在于这里是并行解码N个object。与原始的Transformer不同的地方在于Decoder每一层都输出结果,计算loss;另外一个与Transformer不同的地方是,DETR的Decoder和Encoder一样也加入了可学习的positional embedding,其功能类似于anchor。最后一个Decoder后面接了两个FFN,分别预测检测框及其类别,从而产生N个最终预测。该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。

Prediction feed-forward networks (FFNs)最终预测由包含ReLU激活函数和隐藏维度d的3层感知器以及线性投影层计算。FFN预测框的中心坐标、高度和宽度。输入图像,线性层使用 softmax函数预测类标签。由于我们预测一组固定大小的N个边界框,其中N通常远大于图像中感兴趣对象的实际数量,因此使用额外的特殊类标签 ∅来表示未检测到对象(背景)。这里N被设计为固定的100个。

Auxiliary decoding losses:在每个Decoder之后添加预测FFN和匈牙利损失。所有预测FFN共享其参数。使用额外的共享层来规范来自不同Decoder的预测FFN的输入。实现一一对应之后,便能够利用分类Loss以及boundingbox Loss进行优化。DETR会同时预测所有对象,并使用一组损失函数进行端到端训练,该函数在预测对象prediction和真实对象ground truth之间使用匈牙利算法,将matching cost matrix传入linear-sum-assignment中执行二分匹配,得到预测框和真实物体和一对一匹配结果。

Matching cost matrix:

71f219ed7b0249af8cb5f66279114615.png

classification loss function:

a61d432b7bc14e8dbaa361e8a61da363.png

bounding box distance loss:

ee46b627db404821a5bb364c0fe1dd68.png

 

 

代码理解可参考:

https://blog.csdn.net/feng__shuai/article/details/106625695

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Detection Transformer(简称DETR)是将Transformer结构应用于目标检测的一种模型。它利用了Transformer结构的自注意力机制来对目标进行编码,并通过并行计算构建了一个端到端的检测模型,避免了以往目标检测模型中的冗余操作,使得目标检测问题变得更加简单。DETR是目标检测领域中将Transformer模型首次引入的开创之作。 DETR中的Encoder块基本上采用了Attention Is All You Need论文中的结构,并使用了修正后的位置编码,类似于ViT模型。每个Encoder块的结构如图所示,Encoder部分由多个Encoder块堆叠而成,第一个块的输入为经过修正的Backbone序列输入,后续的块的输入则是前一个块的输出,最终输出的维度与输入的维度相同。如果对Transformer的部分不清楚,可以参考相关资料进行复习。 DETR的官方源代码可以在GitHub上找到,提供了DETR的全部代码,包括训练代码、测试代码等。此外,DETR还提供了在coco数据集上的API曲线、训练权重和测试权重等资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [DETRDEtection TRansformer)要点总结](https://blog.csdn.net/qq_39592053/article/details/128008673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [DETR:DEtection TRansformer ](https://download.csdn.net/download/weixin_42715977/85994710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值