End-to-End Object Detection with Transformers(2020)

news2024/12/26 21:32:25


文章目录

  • Abstract
  • Introduction
  • The DETR model
    • Object detection set prediction loss
      • 二元匹配
      • 匈牙利损失如下
      • Bounding box loss
    • DETR architecture
  • Conclusion

hh
源代码

Abstract

我们提出了一种将目标检测视为直接集预测问题的新方法。我们的方法简化了检测管道,有效地消除了许多手工设计的组件,如非最大抑制过程或锚生成,这些组件显式地编码了我们对任务的先验知识。新框架的主要组成部分,被称为检测变压器或DETR是一个基于集合的全局损失,它通过二元匹配强制进行唯一预测,以及一个变压器编码器-解码器架构

给定一组固定的小学习对象查询,DETR对对象和全局图像上下文的关系进行推理,以直接并行输出最终的预测集。在具有挑战性的COCO对象检测数据集上,DETR展示了与成熟且高度优化的Faster R- CNN基线相当的准确性和运行时性能。此外,DETR可以很容易地推广到统一的全视分割。我们表明,它明显优于竞争基线。

Introduction

现代检测器的性能受后期处理步骤、锚点集的设计以及将目标框分配给锚点的启发式算法的显著影响。
我们通过将目标检测视为直接集预测问题来简化训练管道,我们采用了一种基于变压器的编码器-解码器架构[47],这是一种常用的序列预测架构
我们的检测变压器(DETR)一次预测所有对象,并使用一组损失函数进行端到端训练,该函数在预测对象和真实对象之间执行二部匹配。DETR通过删除多个手工设计的组件来简化检测流程,这些组件编码先验知识,如空间锚定或非最大抑制

与之前大多数直接集预测工作相比,DETR的主要特征是将二部匹配损失和Transformer与(非自回归)并行解码结合在一起

我们的实验表明,DETR在大型对象上表现出明显更好的性能,这可能是由Transformer的非局部计算实现的。然而,它在小对象上获得较低的性能

DETR具有很好的泛化能力。在我们的实验中,我们证明了在预训练的DETR之上训练的简单分割头在Panoptic segmentation上的表现优于竞争基线[19],这是一项具有挑战性的像素级识别任务

The DETR model

对于检测中的直接集预测来说,有两个要素是必不可少的:(1)集预测损失,它迫使在预测值和真实值之间的唯一匹配;(2)预测(单次)一组对象并为它们之间的关系建模的架构

Object detection set prediction loss

由于输出物体的顺序不一定与ground truth的序列相同,作者使用二元匹配将GT框与预测框进行匹配。

二元匹配


L match (y i, yhat σ(i))是基真y i与索引为σ(i)的预测之间的成对匹配代价

匹配方式采用的匈牙利算法
匈牙利算法详解
正如爱情里没有所谓的先到先得,它是先到先让
假设abc和def在两个集合里,a先配对到d;
如果b也配对到d,则a让出d,a再去配对其能配对的第2个(e);
然后c如果配对到e,则让a再找a能配对的第三个(假设只剩f),
如果c配对到d,则b先让出d,假设b第二次配对到f,则这时a再让出f

匈牙利损失如下


σ是在第一步(1)中计算的最优分配,ci为目标类标号(可以是∅),bi∈[0,1]^4是定义地面真值盒中心坐标及其相对于图像大小的高度和宽度的向量,即第i个框,pσ(i)表示σ(i)指向的元素对应各个类的概率分布,bσ(i)表示predictions中σ(i)指向的元素的bbox,1{ci≠∅}表示当目标类部位空时取值为1

Bounding box loss

DETR architecture

整个DETR体系结构非常简单,它包含三个主要组件,提取紧凑特征表示的CNN主干编码器-解码器Transformer,以及进行最终检测预测的简单前馈网络(FFN)

在将其传递到Transformer编码器之前,模型将其扁平化并使用位置编码进行补充。然后,Transformer解码器将少量固定数量的学习到的位置嵌入(我们称之为对象查询)作为输入,并额外关注编码器输出。我们将解码器的每个输出嵌入传递给一个共享前馈网络(FFN),该网络预测检测(类和边界框)或“无对象”类

DETR可以在任何深度学习框架中实现,只要提供通用的CNN主干和变压器架构实现,只需几百行。在PyTorch中,DETR的推理代码可以用不到50行来实现[32]。

对于解码器,与原始Transformer的不同之处在于,我们的模型在每个解码器层并行解码N个对象由于解码器也是排列不变的,因此N个输入嵌入必须不同才能产生不同的结果,与编码器类似,我们将它们添加到每个注意层的输入中。N个对象查询由解码器转换为输出嵌入。然后通过前馈网络将它们独立解码为框坐标和类标签从而产生N个最终预测。在这些嵌入上使用自关注和编码器-解码器关注,该模型使用它们之间的成对关系全局地推断所有对象,同时能够使用整个图像作为上下文。

对于预测前馈网络FFN最后的预测由一个具有ReLU激活函数和隐藏维数d的3层感知器和一个线性投影层来计算FFN预测输入图像的归一化中心坐标、高度和宽度,线性层使用softmax函数预测类标签

Auxiliary decoding losses:我们发现在训练过程中,在解码器中使用辅助损失[1]是很有帮助的,特别是帮助模型输出每个类的正确对象数量。我们在每个解码器层后添加预测FFN和匈牙利损失,所有的预测FFN都共享它们的参数。我们使用一个额外的共享层规范来规范化来自不同解码器层的预测FFN的输入。

Conclusion

我们提出了一种新的基于transformers和二元匹配损失的目标检测系统,用于直接集预测。该方法在具有挑战性的COCO数据集上实现了与优化的Faster R-CNN基线相当的结果。DETR易于实现,具有灵活的架构,易于扩展到全光分割,具有竞争力的结果。此外,它在大型目标上的性能明显优于Faster R-CNN,这可能要归功于自关注对全局信息的处理
这种检测器的新设计也带来了新的挑战,特别是在小物体的训练、优化和性能方面。目前的检测器需要几年的改进才能解决类似的问题,我们希望未来的工作能够成功地解决DETR的问题。

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

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

相关文章

VUE中的index.html、App.vue和main.js的关系

VUE中的index.html、App.vue和main.js的关系,个人理解。 javascriptCopy code import Vue from vue; import App from ./App.vue;new Vue({render: h > h(App), }).$mount(#app);

【工具与中间件】通过飞书应用操作云文档

文章目录 前言1. 准备工作1.1 创建应用1.2 创建文件夹 2. 测试租户/个人版实践2.1 权限配置2.2 控制台调试2.3 协作文档添加应用2.4 CRUD2.4.1 根据文档描述选择token并生成2.4.2 新增多维表格数据API2.4.3 删除多维表格数据API2.4.4 查询多维表格数据API2.4.5 修改多维表格数据…

CentOS7 安装 DockerCompose

目录 一、安装Docker 二、安装步骤 2.1 卸载 2.2 安装docker 2.3 启动docker 2.4 配置镜像加速器 一、安装Docker Docker 分为 CE 和 EE 两大版本。 CE 即社区版(免费,支持周期7个月)EE 即企业版强调安全,付费使用,支持周期 24 个月…

java连接PRINTRONIX T8000打印机打印标签及常见打印错误说明

需要注意的点:数据拼接时一定要在数据两边加上双引号,否则打印出来的东西会报错!!! package com.tscsdk;import java.io.IOException; import java.net.Socket; import java.text.SimpleDateFormat; import java.util…

速度超快的单图像生成3D目标方案,创新的One-2-3-45++来了!

论文链接: https://arxiv.org/pdf/2311.07885 github链接: https://sudo-ai-3d.github.io/One2345plus_page/ Demo链接: https://www.sudo.ai/3dgen 最近在开放世界的3D目标生成方面取得了显著的进展,图像到3D的方法&#xff0c…

Datawhale聪明办法学Python(task6字符串)及作业题解版

一、课程基本结构 课程开源地址: 课程进度列表 - 聪明办法学 Python 第二版 章节结构: Chapter 0 安装 InstallationChapter 1 启航 Getting StartedChapter 2 数据类型和操作 Data Types and OperatorsChapter 3 变量与函数 Variables and Functions…

在雷电模拟器中安装apk包使用charles抓包详细教程

背景 由于手头没有多余的平板,所以用模拟器来安装应用进行测试,有时候想要知道是前端问题还是后端问题,需要安装charles来进行抓包; 最终效果 模拟器上浏览应用,能抓到应用数据; 具体步骤 模拟器开启ro…

达梦兼容MySQL问题

问题 客户开发商 反馈 两台达梦数据库 执行相同SQL, 100.90.34.131上的 SQL语法 不支持。反馈是版本低导致的 分析 版本 100.90.34.131 10.74.28.22 发现 两个数据库大版本 一致,排除 版本原因。 开发环境 开发商 使用 10.74.28.22 的达梦。使用的是 …

MySQL增删改查(增加)

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🙉 内容推荐:MySQL数据库和表操作🙉 🐹今日诗词:父兵诛卓起长沙,直取江东作帝家🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主&…

基于Java SSM框架实现咖啡馆管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现咖啡馆管理系统演示 摘要 2021是网络科技的时代 ,众多的软件被开发出来,给客户带来了很大的选择余地,而且客户越来越追求更个性的需求。在这种时代背景下,客户对咖啡馆管理系统越来越重视,使更好…

使用terraform 来创建GCP的instance template 和基于它的vm

本人在上一篇的文章中已经介绍了如何去创建 google cloud的 vm 的image 和 instance template了 url: 快速构建自定义配置好的VM - 使用GCP instance-template 和 custom-image 但是里面的操作是基于gcloud CLI的。 在实际项目上, 我们对google cloud …

Python:正则表达式---贪婪匹配

在正则表达式中,贪婪匹配是指匹配尽可能多的字符,而非贪婪匹配(也称为懒惰匹配或最小匹配)则是匹配尽可能少的字符。 .* 表示匹配任意数量的任意字符(除换行符外)。贪婪匹配会将尽可能多的字符都作为匹配结…

vue中监听Form表单值的变化

想要监听From表单中某个值的变化需要用到vue中的 watch watch: {inputForm.isHeating() {this.inputForm.otherHeating}}, isHeating是表单中的某个值,如果他变化就会清空另一个值

【SpringMVC】SpringMVC的请求与响应

文章目录 0. Tomcat环境的配置1. PostMan工具介绍创建WorkSpace建立新的请求 2. 请求映射路径案例结构与代码案例结构案例代码 案例存在问题解决方案方法方法升级版——配置请求路径前缀注解总结 3. Get请求与Post请求案例结构与案例代码案例结构案例代码 Get请求Post请求接收中…

HotRC DS600遥控器+F-06A接收机

PWM原理说明 DS600遥控器说明 DS600遥控器的默认高电平是1.5ms 1通道 左右 2通道 前后 3通道 接管 上电后是1ms ,按一下是2ms,1ms和2ms切换 DS600接收机说明 */ #include "ps2.h" #include "common.h"#define LEFT_RIGHT_CHAN…

工具系列:PyCaret介绍_多分类代码示例

👋 工具系列:PyCaret介绍_多分类代码示例 PyCaret 介绍 PyCaret是一个开源的、低代码的Python机器学习库,可以自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,可以大大加快实验周期并提高生产效率。 与其他开…

理解按需自动导入 unplugin-auto-import unplugin-vue-components

文章目录 unplugin-auto-import基础使用构建工具引入插件配置插件 import:配置自动导入规则使用预设自动引入第三方库自动导入 TypeScript 类型vue 预设的自动导入配置 dts:让编辑器环境识别 ts 类型eslintrc:解决 eslint 检查错误dirs&#…

AI 论文精读,中文视频讲解:剖析人工智能本质 | 开源日报 No.120

mli/paper-reading Stars: 21.8k License: Apache-2.0 深度学习论文精读是一个深度学习相关论文列表,包括计算机视觉、生成模型、自然语言处理等多个领域。 该项目的核心优势和特点包括: 提供了大量关于深度学习各领域热门文章内容对不同年份发表的有较…

数据类型,运算符,表达式复习

本章没太需要复习的,重点复习一下逗号表达式还有习题吧 总结 表达式1,表达式2 计算的过程为,先算表达式1,再算表达式2,整个表达式的值为表达式2的值 还可以无限套娃,像这样((a,b&…

03-JVM对象创建与内存分配机制深度剖析

文章目录 对象的创建对象创建的主要流程一、类加载检查二、分配内存划分内存的方法解决并发问题的方法 三、初始化零值四、设置对象头五、执行<init>方法 对象半初始化对象大小与指针压缩什么是java对象的指针压缩&#xff1f;为什么要进行指针压缩&#xff1f; 对象内存…