DETR 【目标检测里程碑的任务】

news2025/1/21 1:03:25

paper with code - DETR

标题

End-to-End Object Detection with Transformers

  1. end-to-end 意味着去掉了NMS的操作(生成很多的预测框,nms 去掉冗余的预测框)。因为有了NMS ,所以调参,训练都会多了一道工序,都会比较复杂和麻烦,不是所有硬件都支持的。

所以一个【端到端 detr】 解决了上述的问题,把目标检测转化成了集合预测的问题。

DETR 不再出很多冗余的框,一下就让模型训练和部署变得很简单。

【全新的架构】

摘要

补一嘴。目标检测 任务 天然的就不适合 自回归的架构(GPT系列)。理解一下:检测大物体,不需要依赖检测小物体, 检测右边的物体也不需要先检测左边的物体。且自回归是顺序推理,目标检测想要的一定是并行的一起出框。

引言

之前的一些工作都是不是直接预测目标框,而是设计了一些回归任务 来生成了很多接近重复的框。

  • proposal Faster rcnn Cascade R-CNN 通过使用一系列逐级训练IoU阈值逐渐增加的检测器来解决高质量检测的问题
  • anchor RetinaNet 提出新的损失函数 focal loss
  • window centers object as points 新的物体检测方法,即将物体表示为一个点,通过关键点估计来找到物体中心点

再用nms来去除重复的框。所以需要很多的先验知识来设计NMS,如何可以好的去除这些冗余的框。DETR的目标就是消除这个鸿沟。

模型架构

训练整个流程分为以下四步:

  1. 用cnn去抽特征 。把特征拉直 送给transformer
  2. encoder的作用就是学习这些全局的信息,使用encoder的好处是:每一个像素点或者说每一个特征都和其他的特征有交互了,那么就大概可以知道哪块是哪个物体,对于同一个物体就应该只出一个框。
  3. decoder的作用生成框的输出。object query 。 query 限定了要出多少个框。query和self-attention做交互,从而得出了最后的框。默认是100。那么问题来了,这100个框 怎么得到最后的ground truth呢?

    使用了二分图匹配算法。
  4. 预测的框和ground truth的框做匹配,再匹配的框里面去算目标检测的loss。

(补充知识)DETR的二分图匹配损失函数是如何工作的?

DETR的全局损失函数采用了一个称为二分图匹配的方法,通过这种方法可以实现预测与实际目标的唯一匹配。在训练过程中,DETR会推断出一个固定大小的N个预测对象集合,然后通过最优的二分图匹配算法将这些预测对象与实际目标进行匹配。在匹配完成后,会对每个对象的特定损失(如边界框损失)进行优化。这个匹配的过程类似于用于将提议框或锚点与实际目标进行匹配的启发式分配规则。不同之处在于,DETR需要在直接集预测的情况下找到一对一的匹配,而不会出现重复的匹配。实际上,在匹配成本中,对于对象和空集之间的匹配成本并不依赖于预测结果,这意味着在这种情况下,成本是一个常数。DETR的全局损失函数还考虑了类别预测项,通过使用概率而不是对数概率,使得类别预测项与边界框损失项具有可比性,并且在实验中观察到了更好的性能表现。

推理的流程

  1. 和训练的逻辑一致,除了不再需要做训练的loss,直接在最后的输出上,用一个阈值去卡一个置信度。

结论

  1. 检测大物体的性能好,因为对大物体有全局建模的能力了,不再受限于anchor的设置
  2. 小物体就性能差了些。
  3. 对于未来的展望,后续的工作来改进。
    1. Deformable DETR 通过多尺度的特征来解决了小物体的问题。wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==训练太慢。

相关工作

  1. 集合预测
  2. transformer 并行解码
  3. 目标检测的相关工作 . 性能比较低,往往用手工设计的人工干预。

    1. set based loss Learning non-maximum suppression
    2. relation network Relation Networks for Object Detection cvpr 2018 

RNN系列 对比transformer 并行推理。

DETR 最终能够work的主要原因!!!还是用了transformer

主要算法

  1. 基于集合的目标函数

再说 二分图匹配,抽象点来说,举个例子,如何分配一些工人,去干一些活,让最后的支出最小。

最优二分图匹配,最后能给一个唯一解,能够给到每个人都去做最擅长的工作,让总支出最小。典型:匈牙利算法 工程实现:scipy linear-sum-assignment

  • 分类loss
  • box loss l1 loss 和generalized iou loss

  1. 模型结构框架

参考: DETR 论文精读【论文精读】_哔哩哔哩_bilibili

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

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

相关文章

【Linux基础开发工具】gcc/g++使用make/Makefile

目录 前言 gcc/g的使用 1. 语言的发展 1.1 语言和编译器自举的过程 1.2 程序翻译的过程: 2. 动静态库的理解 Linux项目自动化构建工具-make/makefile 1. 快速上手使用 2. makefile/make执行顺序的理解 前言 了解完vim编辑器的使用,接下来就可以尝…

解决Unity物体速度过快无法进行碰撞检测(碰撞检测穿透)

解决Unity物体速度过快无法进行碰撞检测(碰撞检测穿透) 一、解决碰撞检测穿透方法一Collision Detection碰撞检测总结: 二、解决碰撞检测穿透方法二 一、解决碰撞检测穿透方法一 首先我们知道只要是跟碰撞相关的基本都是离不开刚体 Rigidbod…

海康威视运行管理中心 Fastjson RCE

漏洞描述 海康威视运行管理中心系统存在低版本Fastjson远程命令执行漏洞,攻击者可在未鉴权情况下获取服务器权限,且由于存在相关依赖,即使服务器不出网无法远程加载恶意类也可通过本地利用链直接命令执行,从而获取服务器权限。 漏…

nodejs+vue+ElementUi会员制停车场车位系统

总之,智能停车系统使停车场管理工作规范化,系统化,程序化,避免停车场管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改停车场情况。 三、任务:小组任务和个人任务 智…

vue3 登录页和路由表开发

目录 应用场景/背景描述: 开发流程: 详细开发流程: 总结/分析: 背景描述 在上一篇的基础上开始开发,element-plusvue3 上一篇说道详细迁移的过程,如下: 所以我这篇开始了第一步&#xff0c…

Shell编程从入门到实战

Shell 概述 (1)Linux 提供的 Shell 解析器有 [rootflinkTenxun ~]# cat /etc/shells(2)bash 和 sh 的关系 [rootflinkTenxun bin]# ll | grep bash(3)Centos 默认的解析器是 bash [rootflinkTenxun bin]…

从Maven初级到高级

一.Maven简介 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。 一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须 能…

安装nodejs,配置环境变量并将npm设置淘宝镜像源

安装nodejs并将npm设置淘宝镜像源 1. 下载nodejs 个人不喜欢安装包,所以是下载zip包的方式。这里我下载的node 14解压包版本 下载地址如下:https://nodejs.org/dist/v14.15.1/node-v14.15.1-win-x64.zip 想要其他版本的小伙伴去https://nodejs.org/di…

【C++】bind绑定包装器全解(代码演示,例题演示)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》…

7ADC模数转换器

一.模数转换原理 ADC模拟-数字转换器可以将引脚上连续变化的模拟电压转换成内存中存储的数字变量,建立模拟电路到数字电路的桥梁。另外一种是DAC既是与前面相反,如PWM波,由于PWM电路简单且没有额外的功率损耗,更适用于惯性系统的…

HarmonyOS4.0系统性深入开发02 UIAbility组件详解(上)

UIAbility组件概述 概述 UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例…

基于Java SSM框架实现列车火车高铁票务信息管理系统项目【项目源码+论文说明】

基于java的SSM框架实现列车火车高铁票务信息管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被…

Linux学习笔记8-Uboot移植-网络设置和其他坑的解决

Linux之所以被称为操作系统,肯定是需要有引导程序来启动各个关键外设的运行,这里可以和个人电脑PC做个类比。我们在开机的时候是不是先要进入BIOS,BIOS在初始化硬盘、内存、USB接口、网口等之后,才可以进入Windows系统对吧&#x…

limma:单通道数据和RNA-seq数据差异性分析标准方法

前言 单通道数据极为流行,三大公司:Affymetrix、Illumina和Agilent的微阵列(microarray)技术产生的很多都是单通道数据。现在的主力的高通量测序机所产生的也是单通道数据,所以只要是被voom标准化(包括了l…

Unity中Shader观察空间推导

文章目录 前言一、本地空间怎么转化到观察空间二、怎么得到观察空间的基向量1、Z轴向量2、假设 观察空间的 Y~假设~ (0,1,0)3、X Y 与 Z 的叉积4、Y X 与 Z 的叉积 三、求 [V~world~]^T^1、求V~world~2、求[V~world~]^T^ 四、求出最后在Unity中使用的公式1、偏移坐标轴2、把…

Redis可视化工具Redis Desktop Manager mac功能特色

Redis Desktop Manager mac是一款非常实用的Redis可视化工具。RDM支持SSL / TLS加密,SSH隧道,基于SSH隧道的TLS,为您提供了一个易于使用的GUI,可以访问您的Redis数据库并执行一些基本操作:将键视为树,CRUD键…

vcruntime140_1.dll文件下载安装方法分享,如何安全修复vcruntime140_1.dll

遇到vcruntime140_1.dll文件遗失是用户在使用Windows操作系统时较为普遍遭遇到的一个问题,它归类于动态链接库(DLL)文件缺失的常见情形。在今天的内容里,我们将深入探讨如何正确地下载和安装vcruntime140_1.dll文件,以…

《操作系统A》期末考试复习题——大题51-62(手写笔记)

51、如果限制为两道的多道程序系统中,有4个作业进入系统,其进入系统时刻、估计运行时间为下图所示。系统采用SJF作业调度算法,采用SRTF进程调度算法。作业进入系统时刻、估计运行时间如下: 作业 进入系统时刻 估计运行时间/min …

php反序列化漏洞原理、利用方法、危害

文章目录 PHP反序列化漏洞1. 什么是PHP反序列化漏洞?2. PHP反序列化如何工作?3. PHP反序列化漏洞是如何利用的?4. PHP反序列化漏洞的危害是什么?5. 如何防止PHP反序列化漏洞?6. PHP反序列化漏洞示例常见例子利用方法PH…

关于pygame无法打开对应文件解决办法 pyame.error unable to open file

问题描述: 问题原因: 由于pygame版本过低导致无法进行声音播放,升级对应版本即可完成! 解决办法: 升级pygame包版本到2.1.2,即可解决该问题! pip install --upgrade pygame2.1.2