一文带你读懂DETR模型

这篇具有很好参考价值的文章主要介绍了一文带你读懂DETR模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

论文地址:

End-to-End Object Detection with Transformers

 Detr是Facebook提出来的一种目标检测结构,使用了一种基于transformer的全新网络结构,在没有使用以往的诸如yolo之类的算法的情况下就能取得相当不错的表现,再次印证了transformer的优越性能。

目录

Introduction

Set Prediction

DETR architecture

Backbone

Transformers and Parallel Decoding

Prediction feed-forward networks (FFNs)

实验结果

DETR for panoptic segmentation

对于Detr模型的评价

自己的做的一点工作


Introduction

Detr处理的问题是目标检测问题。这类问题可以简化为预测图片中物体的包围盒。现有的针对这类问题的处理方法都往往比较复杂,包括 defining surrogate regression and classification problems on a large set of proposals [37,5], anchors [23], or window centers [53,46]. Detr提供了一种使用transformer的encoder-decoder结构来直接预测包围盒的方法:

一文带你读懂DETR模型

Detr模型 先通过一个CNN的backbone网络对图片的进行特征提取,使用一个transformer的encoder-decoder结构直接获得N个固定数量的包围盒的预测。

本文的最主要贡献是使用bipartite matching loss来计算预测结果与ground truth之间的损失,以及使用transformer来代替之前复杂的处理流程。与gpt里面的encoder-decoder不同,这里的decoder是一次性预测所有的bounding box。

接下来就这两个关键问题进行介绍:

Set Prediction

包围盒的检测也就是一个集合预测的问题。这类问题有时候会遇到集合交叠的问题:一文带你读懂DETR模型

以往处理这类问题的方法有Non Maximal Suppression。

同时由于Detr模型直接预测N个包围盒的位置,而实际图像里面往往只有很少的物体,所以就需要确定一种匹配的方法,来将物体包围盒的ground truth来与这N个预测进行匹配,没有匹配成功的直接作为背景进行padding。

由于多个包围盒构成了一个集合,所以模型预测出来的结果应当具有集合中的顺序不变性。

这里使用的匹配算法是匈牙利匹配算法,这个算法计算每对预测的包围盒和ground truth的包围盒的距离,采用使得距离之和最小的匹配方式来进行匹配:

一文带你读懂DETR模型

注意这里的σ实际上是1~N的一个全排列。也就是每个配对的包围盒的标签对应关系。

那么具体是怎么计算这个距离的呢? 这里贴一段原文里面的计算公式:

一文带你读懂DETR模型

 具体来说,包围盒的距离由分类分数和距离分数所组成,总的配对目标就是最小化下面的值:

一文带你读懂DETR模型

 另外原文中提到,在ci是空集(也即是背景)的时候要将对数损失减小十倍,以平衡样本。空集与预测值之间的Lbox距离是一个常数,也就意味着这一部分实际上对匹配结果没有影响

这个Bounding box loss的计算方式如下,还是比较复杂的。具体的计算方式在作者代码的models\matcher.py里面,感兴趣的可以自己去看看。

一文带你读懂DETR模型

DETR architecture

一文带你读懂DETR模型

Backbone

预处理的backbone网络是一个对图片的维度进行变换的网络,通过卷积层来将图片的大小降低,通道提高。

一文带你读懂DETR模型

Transformers and Parallel Decoding

Detr所使用的transformer结构其实与transformer里面的encoder-decoder非常相似:

一文带你读懂DETR模型一文带你读懂DETR模型

Detr先将从backbone得到的C=2048的输入用1*1的卷积层进行降维,然后flatten后加入position embedding送入encoder中去。

在decoder的时候,使用0初始化object queries,再加上position embedding,可以这么理解:求取每一个position对应的patch与图片中的物体的embedding的相似度,使用position的query去查找对应的K有没有要查找的物体。

有几个需要注意的点:

1. Detr的encoder和decoder的position embedding是加在每一层multihead self-attention layer上的,而且只加在Q和K上,不加在V上,作者并没有给出这样做的原因,可能是因为Detr的任务与position密切相关,所以需要在每一层上都加。

一文带你读懂DETR模型

2. 原版transformer里面的outputs在输入模型前需要加入attention mask,在预测的时候需要将预测出的当前token输入模型计算下一个token。而Detr的预测实际上是并行的,也不需要attention mask。

3. 在计算损失函数的时候,为了更块的训练,在decoder的每一层上都将中间结果送入FFN中计算损失函数:

一文带你读懂DETR模型

一文带你读懂DETR模型

 作者还提到,Detr需要较长的训练时间。这是由于采用了transfomer结构造成的。

Prediction feed-forward networks (FFNs)

将Decoder的输出送入一个三层的FFN中,预测五个值:包围盒相对图片的中心xy坐标,包围盒相对于图片的height和width,以及包围盒的class label,也就是包围盒是否为背景。随后使用上面所讲的box loss就可以训练模型。

实验结果

作者与Faster R-CNN做了比较,并做了大量的消融实验,证明了计算auxiliary losses的有用性。

同时也对position embedding做了消融实验最后得出sine at attn是最好的position embedding方式:

一文带你读懂DETR模型

这里有一张比较有意思的图: 

一文带你读懂DETR模型

这里是encoder attention的可视化,可以看到encoder确实是注意到了图片中的不同部分

一文带你读懂DETR模型

这里是decoder的可视化,可以看到即使对于重叠的动物的腿,detr依然能分的非常清除,这个效果还是很不错的。

另外对于decoder输入的100个slot,detr统计了它们所预测的包围盒的分布:

一文带你读懂DETR模型

 每个点的位置代表着包围盒的位置,点的颜色代表包围盒的大小,可以看出不同的slot负责图像中不同的部分,所有slot都有可能预测整个图片大小的包围盒,这与coco的数据分布有关。

作者还测试了面对数据集中从未出现过的数量的包围盒的模型泛化能力:

一文带你读懂DETR模型

DETR for panoptic segmentation

只需要对Detr做一点小小的修改,就可以将这个模型应用到全景分割的任务上:

一文带你读懂DETR模型

为每一个预测出来的包围盒,使用一个panoptic head来生成图片对应的物体的二元分割。然后使用argmax求出每一个pixel最可能对应的物体。

训练的时候,有两种训练策略:可以同时训练两个head,也可以先训练预测box的head,再训练预测二元全景分割的head。

对于Detr模型的评价

detr模型使用一种全新的方式处理了物体分割这个已经有了很成熟的算法的问题,而且出道即颠峰。可见transformer对于不同领域的问题都能解决的很好,有成为通用人工智能的无限潜力。

至于模型的缺点,作者也承认,对于小目标的检测效果并不出众。我认为使用transformer的结构在目前和未来是很难完全取代CNN的。这是因为现有的Vit模型都将图片分成一个固定大小的patch,而不能像CNN那样每一层有着不同的感受野,能获取图像不同尺寸特征的细节结构。因此我们需要一种能够感知图像不同resolution的特征的方法,而不是全都划分成同样大小的patch一刀切。

而且detr模型收敛速度慢,资源消耗多。使用transformer来处理图像往往都会遇到这种问题。

我认为未来的许多cv问题都可以尝试这种使用transformer作为中间层的处理方式,将重点放在输入层输出层以及其训练方法上。实践已经检验了这些方法的有效性。

在后面的swin-transformer中,直接将图片经过简单的全连接层处理就输入到transformer中,但是我们完全可以尝试更多的网络结构组合。

另外,我认为可以充分利用图像中的对称性,比如将图像左右翻转计算包围盒,然后将得到的包围盒再次翻转与原来的计算平均值。文章来源地址https://www.toymoban.com/news/detail-451786.html

到了这里,关于一文带你读懂DETR模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 抖音小店无货源处罚全解,一文带你读懂官方规则,合理规避风险

    大家好,我是电商年年 根据官方解释, “无货源店铺” ,指店铺经营者没有现货,在网上找产品找货源,在未取得货源方授权的情况下,把货源信息“搬运”到自己的店铺中,等有消费者下单,店铺经营者再去 货源方店铺下 单,由货源方向消费者派单发货。   那官方对于

    2024年02月03日
    浏览(54)
  • 3D智能相机:带你读懂3D机器视觉如何实时扫描构建物体的3D模型

    作者:御剑飞行  3D智能相机是一种能够捕捉三维空间中物体形状和位置信息的相机。它可以在一个瞬间同时捕捉到物体的深度和颜色信息,并用这些数据创建一个三维模型。 3D智能相机工作方式示意图,图源@御剑飞行 3D智能相机能够捕获物体的更详细信息,包括其尺寸、形

    2024年04月09日
    浏览(44)
  • 一口气带你读懂跨境电商出海模式

    作为一名跨境电商卖家,掌握正确的“出海模式”至关重要。今天,就让我们一起揭开跨境电商的神秘面纱,探索它的各种出海模式,为你的电商之旅提供指引。 1️⃣ 国际站模式 ✅起步门槛:10W及以内 ✅利润:高 ✅客单价:较高(以 B2B 大单为主) ✅运营难度:中低,

    2024年02月21日
    浏览(44)
  • Linux - 一篇带你读懂 Curl Proxy 代理模式

    curl 是一个很有名的处理网络请求的 类Unix 工具。出于某种原因,我们进行网络请求,需要设置代理。本文讲全面介绍如何为 curl 设置代理 设置代理参数 基本用法 设置 HTTP 代理 下面两种设置代理的方式是可以的 由于代理地址的默认协议为  HTTP, 所以可以省略,按照下面的

    2024年02月05日
    浏览(57)
  • 工时管理为何对项目如此重要?8Manage 带你读懂!

    “时间就是金钱”,相信作为管理者都已经听腻了这话,但在项目管理中确实是真理。你要知道项目工时是会直接影响到项目费用成本的,不论项目工作是按小时还是按固定费用计费和付款,在一段工时内完成的工作越多,说明效率就越高,而费用成本也就越低。而且员工工

    2024年02月16日
    浏览(38)
  • 1.4W字!让我带你读懂springmvc的世界!

    目录 一.前提了解 1.tomcat和servlet的关系? 2.springmvc想要实现web开发必须满足的条件是什么? 二.什么是SpringMVC 三.基于SpringMVC创建web项目 ①创建项目并选择依赖  ②设置热部署(部分代码改动不需要手动重新run即可生效) 四.理解前后端分离的开发过程 五.SpringMVC实现web开发

    2024年02月06日
    浏览(55)
  • 图论:一文教你读懂常见的图遍历算法

    深度优先搜索(DFS): 从一个起始节点开始,访问该节点并将其标记为已访问。 递归地访问所有与当前节点直接相连且未被访问过的节点。 重复上述步骤,直到所有节点都被访问过或没有未访问的节点。 广度优先搜索(BFS): 从一个起始节点开始,将其放入队列中,并标

    2024年04月25日
    浏览(30)
  • 带你读论文第十一期:上海人工智能实验室孙伟高博士,分享大模型分布式训练方法!...

     Datawhale论文  来源:WhalePaper,负责人:芙蕖 由Datawhale团队成员发起,对目前学术论文中比较成熟的 Topic 和开源方案进行分享,通过一起阅读、分享论文学习的方式帮助大家更好地“高效+全面+自律”学习,让大家都有所收获和提升!方向包括自然语言处理(NLP)、计算机视

    2024年04月23日
    浏览(43)
  • DETR-《End-to-End Object Detection with Transformers》论文精读笔记

    End-to-End Object Detection with Transformers 参考:跟着李沐学AI-DETR 论文精读【论文精读】 在摘要部分作者,主要说明了如下几点: DETR是一个端到端(end-to-end)框架,释放了传统基于CNN框架的一阶段(YOLO等)、二阶段(FasterRCNN等)目标检测器中需要大量的人工参与的步骤,例如:

    2024年02月11日
    浏览(46)
  • 【Deformable DETR 论文+源码解读】Deformable Transformers for End-to-End Object Detection

    上一篇讲完了DETR相关原理和源码,打算继续再学习DETR相关改进。这次要解读的是21年发表的一篇论文: ICLR 2021:Deformable DETR: Deformable Transformers for End-to-End Object Detection 。 先感谢这位知乎大佬,讲的太细了: Deformable DETR: 基于稀疏空间采样的注意力机制,让DCN与Transformer一起玩

    2023年04月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包