DETR【论文阅读】

news/2025/2/12 23:01:33/

End-to-End Object Detection with Transformers

1. Introduction

  • 发表:ECCV 2020
  • 影响:在目标检测上使用了一种全新的架构,是里程碑式的工作。简单优雅统一的结构,不再依赖于人的先验知识(anchor生成,nms),只需CNN和transformer。
  • 解决问题:正如标题所说的,使用transformer做端到端的目标检测。之前的方法并不是端到端的,需要proposal或anchor 以及后处理(nms:非极大值抑制来去除冗余框),导致训练和部署困难。
  • 方法:将目标检测(预测框的位置及类别)看成一个集合预测的问题, 本质上这些boxes是一个集合,不同的图像对应的集合是不同的,而目标检测的任务就是预测给定图片对应的集合。1)提出了一种新的损失函数,通过二分图匹配的方式并行地输出一组独一无二的预测,这样就不存在冗余的框,也不需要nms;2)使用transformer encoder-decoder的架构,在encoder部分引入learned object query(有点类似anchor的意思)对全局信息进行学习,且预测每个object对应的框是并行的,因为这些框的预测并不依赖于其他框(即没有顺序结构)
  • 优点:简单,只需支持CNN和transformer,代码也很短。很容易扩展到其他任务上,例如在全景分割任务上就能取得很好的效果。
  • 结果:能够和基线模型差不多。

2. Method

框架

在这里插入图片描述
图像首先输入CNN中提取特征,将其拉直输入到encoder中去学习全局信息。然后将学习到的特征输入到decoder中生成预测框

  • CNN:个人觉得是为了学习局部特征。因为object总是在一块区域。
  • encoder:主要是为了学习全局信息,每个点都能看到图像中的其他点(有一定的交互),这样对于一个object大概率就只会出现一个框。这样的全局特征有利于移除全局的框。感觉前面的CNN+encoder就是为了对局部特征和全局特征进行建模。
  • decoder:这里的输入除了encoder的特征还有一组qurey,与特征进行交互。query的数量限定了decoder会输出多少个框(在论文中设置的是100)。因此每张图像都会输出100个框。
  • 对于100个框,作者将选择框的任务看成集合预测的问题,在训练的时候使用二分图匹配的方式得到匹配的框,在此基础上计算loss。在测试的时候使用阈值进行选择,置信度高于阈值则视为object,否则为背景类。

结果

  • 在COCO数据集上取得了与Faster R-CNN competitive的结果;
  • 优点:但是DETR在大物体的表现上很好,归功于transformer对全局建模的能力,而基于anchor的方法受限于anchor的大小;且DETR可以看成一种框架,可以较容易地扩展到别的任务上,例如全景分割
  • 不足:DETR在小物体上的表现并不好,需要改进。且训练慢(是之前训练时长的10倍)

http://www.ppmy.cn/news/46712.html

相关文章

javaweb笔记2

JSP 1、在webapp的根目录下新建一个index.jsp文件,访问以下地址: http://localhost:8080/webappName/index.jsp 实际上访问这个index.jsp文件,底层执行的是:index_jsp.class这个程序。 这个index.jsp会被tomcat翻译成index_jsp.j…

vue项目使用elementui上传组件 打包后报错t.upload.addEventListener is not a function的解决方案

错误问题 Vue:xhr.upload.addEventListener is not a function 这个问题是因为mockjs改动了axios里面XMLHttpRequest对象致使的 根据axios源码 l是一个XMLHttpRequest对象 mockJs把l变量从XMLHttpRequest对象改为了MockXMLHttpRequest对象 因此l.upload是一个空对象 空对象…

K8s为什么要放弃Docker

公司定期分享整理的资料 放弃始由 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation 2020 年,k8s 1.20 终于正式向 Docker “宣战”:kubelet将弃用 Docker 支持,并将在未来的版本中完全移除。…

git使用规范文档

git使用规范文档 Git使用规范流程图 开发人员操作步骤: 第一步:clone代码 在你的本地代码库进行从远程仓库clone代码操作(100%表示clone完成) 进入项目文件,右键Git Bash Here 切换到你所进行开发的分支上 拉取该分…

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…

小红书达人种草怎么收费?

随着小红书平台的快速发展,用户数量在不断的上升,市场上也涌现出了很多的小红书营销公司,小红书营销主要是以小红书代写代发、品牌植入广告等方式来做品牌种草品宣。 小红书达人种草怎么收费这个问题,相信很多商家朋友都非常关心…

Ubuntu18.04 Gitkraken GitCracken

参考资料: ubuntu 安装 Gitkraken 9.x Pro 版本_gitkraken ubuntu CSDN博客【GitCracken】v8.1.1_gitcracken不起作用_等风来不如迎风去的博客-CSDN博客 关键: 材料1:需要使用linux/GitKraken-v8.1.1.tar.gz材料2:需要使用wcxo…

【Linux】 密码相关。pwconv

密码相关。pwconv 在linux中,早期的用户密码(经过加密)存放在/etc/passwd文件之中,但是大多数的应用程序通常都需要读取这个文件,所以会造成一定的安全隐患 因此后来的linux(centos)系统将这个…