End-to-End Object Detection with Transformers论文阅读笔记

news2024/11/16 6:58:07

End-to-End Object Detection with Transformers

端到端,不需要NMS后处理了,直接出结果。

1、Abstract

将目标检测作为一个集合预测问题来解决。简化了检测的整体流程,有效的消除了许多人工设计的部分,比如NMS,anchor这些针对任务类型的先验知识。DETR的主要组成有一个基于集合的全局损失函数,通过二分图匹配来为每个目标确定唯一的预测结果,以及一个transformer的encoder-decoder架构。给一个固定长度(论文中固定为100)的可以学习的object queries,DETR通过物体和全局图片内容之间的关系,直接并行输出一组预测集。DETR概念上非常简单,而且也不要求你有拥有专业知识。DETR在检测的精度和运行时间和Faster RCNN相当。而且DETR还可以拓展到全景分割的任务当中。

2、Introduction

目标检测的目标是预测感兴趣的目标的bbox以及对应的类别。现在的目标检测方法都是通过间接的方式去处理集合预测问题,比如proposals、anchor、window center等方法,都是设计了一个替代的,将其当作回归、分类问题。它们的性能明显的受后处理操作的影响,因为其之前会生成大量的冗余框、所以需要使用NMS方法将冗余框抑制。为了简化这些流程,本文提出了一种直接进行集合预测的方法去绕过了那些代理问题。这种端到端的思想已经在其他复杂的预测任务中大量的使用了,并且取得了非常明显的效果,但是还没有应用到目标检测任务当中,之前的也有一些类似的尝试,但其要么就是需要融入更多的先验知识,要么就是在比较难的benchmarks数据集上取得不了很好的成绩。这篇文章弥补了这一gap。

image-20230101110515417

其中encoder可以寻找每个点与图像中其他部分之间的关系,这就可以让网络学习得到哪些区域属于同一个物体,哪些属于不同的物体。这有助于去除冗余的预测框。

DETR只预测一次,并将训练得到的预测结果和GT俩俩做二分图匹配,并计算loss function。DETR简化了目标检测流程,丢弃了人工设计的那些先验知识,比如anchor和nms。不像目前大多数检测方法,DETR没有任何定制化层,而且其可以非常简单的用任何包含标准CNN和transformer的架构复现。

与之前工作不一样的地方在于,DETR采用了二分图匹配计算loss,并且使用了没有自回归的decoder架构,decoder时可以并行。

结果显示DETR在大物体上的性能比较好,而在小目标检测性能比较差。而且其运行时间比较长。

整体流程就是:首先将图片通过CNN抽取特征,然后将其输入transformer架构,encoder有利于网络学习各个区域之间的关系,decoder生成预测框,并将其当做一个集合预测类型,将生成的预测框和GT做二分图匹配,计算bbox的loss和分类的loss。而在预测时没有GT框计算loss,那么就根据decoder输出的预测框的置信度的大小来输出最终的预测框。

3、The DETR model

3.1 Object detection set prediction loss

DETR推理得到固定的N个预测框。N比数据集中一张图片的最大物体个数多很多。如何设计预测框和GT之间的loss呢?将其当做一个二分图匹配问题。

image-20230101114254192

在目标检测任务中,cost matrix中应该放loss。

loss可以包含了分类loss和bbox loss。

− 1 { c i ≠ ∅ } p ^ σ ( i ) ( c i ) + 1 { c i ≠ ∅ } L box  ( b i , b ^ σ ( i ) ) . -\mathbb{1}_{\left\{c_{i} \neq \varnothing\right\}} \hat{p}_{\sigma(i)}\left(c_{i}\right)+\mathbb{1}_{\left\{c_{i} \neq \varnothing\right\}} \mathcal{L}_{\text {box }}\left(b_{i}, \hat{b}_{\sigma(i)}\right) . 1{ci=}p^σ(i)(ci)+1{ci=}Lbox (bi,b^σ(i)).

image-20230101114815409

3.2 DETR architecture

image-20230101114935831

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库连接池(C++11实现)

目的: 因为对数据库的操作实质上是对磁盘的IO操作,所以如果对数据库访问次数过多,就会到导致大量的磁盘IO,为了提高MySQL数据库(基于C/S设计)的访问瓶颈,除了在服务器端增加缓存服务器缓存常用的…

还在用BERT做文本分类?分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】

目录🍀一、前言🌱二、多分类场景简介🍃三、前期准备阶段🟥3.1 运行环境准备🟧3.2 文心ERNIE系列模型介绍🟨3.3 预训练模型加载⬜3.4 加载项目代码💐四、数据准备阶段🟩4.1 数据处理流…

变不可能为可能——记房产推销员佟鑫海

有勤奋,就会有所收获。傲人的成绩和背后的努力密切相关。俗话说得好,没卖不掉的房子,仅有卖不掉房子的艺人经纪人。关键是你是否有恒心。 在明升,总会有这样一群影子,他们每天精力旺盛,衣着光鲜&#xff0…

【C/C++ SOCKET编程】基于TCP协议实现服务器客户端的简单通信

什么是SOCKET Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。 TCP/IP协议 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议…

unsafe.Pointer和uintptr的区别

unsafe 包 func Alignof(x ArbitraryType) uintptr func Offsetof(x ArbitraryType) uintptr func Sizeof(x ArbitraryType) uintptr type ArbitraryType int type Pointer *ArbitraryType在unsafe包中,只提供了3个函数,两个类型。就这么少的量&#xf…

【数据结构进阶】布隆(Bloom Filter)过滤器【哈希+位图的整合】

布隆(Bloom Filter)过滤器【哈希位图的整合】 1、什么是布隆过滤器? 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空…

物联网与射频识别技术,课程实验(四)

实验4—— 基于帧的时隙ALOHA(FSA)算法的实现与性能分析 实验说明: 利用Python或Matlab模拟基于帧的时隙ALOHA算法; 分析标签数量k、帧中所含时隙个数n对信道利用率的影响,其中, 信道利用率发送数据的时间/(发送数据的时间信道空…

【JavaEE】线程的状态转换

新年快乐! 祝新的一年万事胜意! 魅力无限! 随心所欲! 蒸蒸日上! 文章目录1. 线程的基本状态2.Java中线程的状态3. 线程的转换1. 线程的基本状态 操作系统中线程有三个基本状态,就绪状态,运行状态,阻塞状态. 就绪状态, 已经获得除CPU之外的所有资源,只要得到CPU,可立即执行. …

(二十五)大白话数据库无法连接故障的定位,Too many connections

文章目录 1、你是否遇到过Too many connections?2、linux的文件句柄数量被限制1、你是否遇到过Too many connections? 今天要给大家分析另外一个真实的大家都经常会碰到的数据库生产故障,就是数据库无法连接的问题。 大家会看到的异常信息往往是“ERROR 1040(HY000): Too …

ubuntu18.04下mysql数据库安装和C语言连接操作

数据库在应用系统开发中很常见,在众多的数据库中,mysql总是会占有一席之地。本篇说明一下如何在ubuntu18.04上安装mysql数据库。 目录 1.更新环境 2.安装mysql数据库系统 3.检测是否安装成功 4.启动、重启、关闭,删除 5.给root用户设置…

vue3+Ts使用vuex模块化和非模块化管理的2种方式(非pinia)

官网写的很清楚:https://vuex.vuejs.org/zh/guide/typescript-support.html 2种方式 (都不是使用pinia的) 1:复杂版本(不定义自己的 useStore 组合式函数) 使用的时候需要在vuex引入 useStore 在store文件引入导出的key import { useStore } from ‘vu…

CSS3新增的has伪类选择器,让你能轻松选择父元素

文章目录一、语法二、链式操作三、兼容性问题CSS现在新增了一个允许我们选择父元素的伪类:has选择器。可以将其当做父级选择器。 一、语法 选择器1:has(选择器2){} /* 表示选择包含有选择器2的所有的选择器1 比如:*/ div:has(p) {background: black; }…

计算机网络期末考试重点归纳

第 1 章 概述 1. 网络的基本特点 连通性共享性 2. internet 和 Internet 的含义 internetInternet中文名称互连网互联网/因特网名词性质通用名词专用名词名词解释指由多个计算机网络互连而成的计算机网络指当前全球最大的、开放的、由众多网络连接而成的特定互连网&#xff…

电子学会2020年6月青少年软件编程(图形化)等级考试试卷(一级)答案解析

目录 一、单选题(共25题,每题2分,共50分) 二、判断题(共10题,每题2分,共20分) 三、编程题(共3题,每题10分,共30分) 青少年软件编程…

Ubuntu22.04下安装MongoDB(6.0版本)并进行相关数据库操作

前言 昨天用ubuntu22.04安装redis-5.0.5服务,因为版本不兼容,导致问题频发,最终在老师帮助下解决了,这又一次提醒了版本兼容的重要性 MongoDB安装与部署 因为所用ubuntu版本为22.04,所以不能按照老师所给文档进行安…

图书管理系统(Java实现简易版)

目录前言预期效果分析1. book包1.1 Book类1.2 BookList 类2. user包2.1 User类2.2 AdminUser类2.3 NormalUser类3. opera包3.1 IOPeration 接口3.2 AddOperation 类3.3 BrrowOperation 类3.4 DelOperation 类3.5 ExitOperation 类3.6 FindOperation 类3.7 ReturnOperation 类3.…

wikijs-一款wiki系统

2022,别了。 1、介绍 wikijs是一款知识共享wiki,优点是有权限管理系统、支持多人协作共同维护、支持markdown格式、支持评论、风格简洁等等。适合作为个人博客,或者小团队的文档知识库。 效果图: 2、部署流程 2.1、安装dock…

前端 | 装饰你的github profile(github 首页)

1.创建存储库 您可以创建一个与您的 github 帐户名同名的存储库 添加README文件 2.编辑README.md 现在,可以根据自己的喜好修改 repo 中的自述文件,但我在考虑包含哪些信息时查看了其他开发人员的资料。通常包括简短的介绍、使用的技术堆栈和联系方式…

【JAVA进阶】包装类,Arrays类,Lambda表达式

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 一、包装类 二、Arrays类 三、Lambda表达式 一、包装类 其实就是8种基本数据类型对应的引用类型。 基本数据类型 引用数据类型 byte Byte short Short int Integer l…

GPU存储器架构

上表表述了各种存储器的各种特性。作用范围栏定义了程序的哪个部分能使用该存储器。而生存期定义了该存储器中的数据对程序可见的时间。除此之外,Ll和L2缓存也可以用于GPU程序以便更快地访问存储器。 总之,所有线程都有一个寄存器堆,它是最快…