当前位置: 首页 > article >正文

DETR【论文阅读】

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.kler.cn/a/9775.html

相关文章:

  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • 【C++】一种针对代码的连续条件检查方案,累计布尔结果
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • 软件测试面试题(800道)【附带答案】持续更新...
  • 【Android开发经验】-- 如何实现RecyclerView子项的点击事件?
  • 基于springboot+mybatis的图书购物网站
  • 《Java8实战》第4章 引入流
  • 【voliate 关键字】
  • 行为型模式-命令模式
  • BAT程序员来说一说互联网大厂的秋招和实习,什么时候开始秋招,要不要准备实习? 没找到实习怎么办?实习是不是重要? 如何选择实习的offer?
  • MySQL开发04-MySQL优化器的提示功能
  • 小黑子—Java从入门到入土过程:第六章
  • 【openAI】调用gpt-xxx模型时显示网络连接错误(Error communicating with openAI...)
  • 封仲淹:OceanBase开源技术生态全景解析
  • Java基础教程之Object类是怎么回事?
  • 采用多种方式实现项目的查询多级缓存(四)
  • Java模拟rank() over()函数获取分组排名的方法设计及实现
  • 书 | 图理论 | 2020年GraphSage提出者William L. Hamilton《图表示学习》
  • Systemverilog中Constrained random value generation的记录
  • linux之pthread_join函数
  • 安全防御 --- APT、密码学
  • 《数据库系统概论》第三章课后习题 (4个表+三建工程项目)
  • JAVA所有版本特性【JAVA 1.0 - JAVA 20】
  • 圣戈班Saint-Gobain EDI需求分析