【AIGC】12、DINO | 针对 DETR-like 检测器的提升

news2024/12/24 22:16:37

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 Contrastive DeNoising Training
      • 2.3 Mixed Query Selection
      • 2.4 Look Forward Twice
    • 三、效果

论文:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

代码:https://github.com/IDEACVR/DINO

出处:香港大学 | 清华大学

时间:2022.07

在这里插入图片描述

一、背景

DINO:Detr with Improved deNoising anchOr boxes

DINO 是一个基于 DETR 结构的端到端目标检测器,通过对去噪训练使用对比学习的方式来提高了 DETR-like models 的性能和效果

DINO 的结构:

  • backbone
  • multi-layer Transformer encoder
  • multi-layer Transformer decoder
  • multiple prediction heads
  • 参考 DAB-DETR,作者在 decoder 中构建了 queries 作为 dynamic anchor box,并且通过 decoder layers 一步步对其进行 refine
  • 参考 DN-DETR,作者在 Transformer decoder layer 中的 ground truth label 和 box 添加了噪声,帮助模型在训练中实现更稳定的双边匹配
  • 作者还使用了 deformable attention 来提高计算效率

DINO 提出的三个新方式:

  • contrastive denoising training:

    为了提升 one-to-one matching 的效果,将一个 gt 对应的所有正负样本都加起来来实现,给一个 gt box 添加两个不同的噪声后,将噪声较小的 box 标记为 positive,另外一个标记为 negative

    能够帮助模型过滤掉同一目标的多个冗余输出

  • mixed query selection:

    改善 query 初始化

  • look forward twice:

    为了使用后面的层的 refine box information 来帮助前面层进行优化

二、方法

在这里插入图片描述

DINO: DETR with Improved DeNoising Anchor Boxes

DETR 是由两部分构成的:

  • positional part:作为 positional queries
  • content part:作为 content queries

DINO 的框架结构如图 2 所示:给定一个输入图像

  • 首先,使用 ResNet 或 Swin transformer 作为 backbone 来进行特征提取
  • 其次,将提取到的特征输入 Transformer encoder,并且加上 position embedding,进行 feature enhancement
  • 接着,使用 new mixed query selection 来初始化 anchor 作为 decoder 的 positional queries。对 content queries 不进行初始化,让其可以自己学习
  • 然后,使用 deformable attention [41] 来对 encoder 输出特征进行结合,并且逐层更新 queries
  • 最后,最终的输出是 refined anchor box 和 class result
  • 此外,类似于 DN-DETR,DINO 中也使用了 DN branch,来进行 denoising training,且在基础 DN 方法之外,还考虑的 hard negative samples

2.1 Contrastive DeNoising Training

DN-DETR 在稳定训练和加速收敛上表现很好,能够基于和 gt box 离得近的 anchor 来进行预测。

但是,DN-DETR 对附近没有 object 的 anchor 预测 “no object” 的能力较差

所以本文提出了 Contrastive DeNoising(CDN) 来剔除没用的 anchor

DN-DETR 中有一个超参 λ \lambda λ 来控制噪声尺度,生成的早上不会大于 λ \lambda λ,因为 DN-DETR 想要模型学习在适度的 noised queries 中重建 gt

DINO 中,提出了两个超参 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2,且 λ 1 < λ 2 \lambda_1 < \lambda_2 λ1<λ2,如图 3 所示,生成两种 CDN queries:

  • positive queries:noise scale 小于 λ 1 \lambda_1 λ1,用于重建 gt box
  • negative queries:noise scale 大于 λ 1 \lambda_1 λ1 小于 λ 2 \lambda_2 λ2,用于预测 “no object”

如图 3 所示,每个 CDN group 有一系列 positive queries 和 negative queries,如果一个图像有 n 个 GT box,CDN group 会有 2n 哥 queries,因为每个 GT box 生成一个 positive 和一个 negative queries

2.3 Mixed Query Selection

如图 5c,DINO 只使用 position information 和 selected top-K features 来初始化 anchor box,保持 content queries

在这里插入图片描述

2.4 Look Forward Twice

在这里插入图片描述

三、效果

在这里插入图片描述

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

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

相关文章

【JUC基础】15. Future模式

目录 1、前言 2、什么是Future 2.1、传统程序调用 3、JDK中的Future 3.1、Future相关API 3.2、FutureTask 3.2.1、FutureTask实现 3.2.2、FutureTask相关API 3.3、CompletableFuture 3.3.1、thenApply 3.3.2、异步任务编排之thenCompose() 3.3.3、异步任务编排之th…

南京市某高校计算机科学与技术专业性能测试与Loadrunner—考试试卷分析

XXX科技学院试卷 20 /20 学年 第 学期 课程所属部门&#xff1a; 课程名称&#xff1a; 课程编号&#xff1a; 考试方式&#xff1a;&#xff08;A、B、开、闭&#xff09;卷 使用班级&#xff1a; …

数据安全--16--数据采集阶段安全防护措施

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/131033616 一、引子 数据安全采集阶段的防护措施主要是从三个方面来开展的&#xff0c;第一个是从个人数据主体采集方面&#xff0c;第二个是从外部机构采集方面&#xff0c;以上两个方面基本涵盖了数…

读改变未来的九大算法笔记05_数字签名

1. 数字签名”&#xff08;Digital Signature&#xff09; 1.1. 单词数字化&#xff08;digital&#xff09;意味着其“由数字字符串组成” 1.2. 任何数字化的东西都能被拷贝 1.3. “签名”的全部意义在于能被读取&#xff0c;但不能被除了作者的任何人拷贝&#xff08;也就…

linux(信号产生中)理论部分

1.实际执行信号的处理动作称为信号递达 2.信号从产生到递达之间的状态&#xff0c;称为信号未决&#xff08;Pending&#xff09; 3.进程可以选择阻塞某个信号的 ----------------------------------------------------------------------------------------------------------…

【JavaSE】Java(五十一):核心要点总结

文章目录 1. String str "love"; 和 String str new String("love);一样吗&#xff1f;2. 如何将字符串反转3. String类的常用方法有哪些?4. new String("sn") new String("ow")会创建几个对象&#xff1f; 1. String str “love”; 和…

「C/C++」C/C++ Lamada表达式

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「C/C」C/C程序设计 相关术语 Lambda表达式&#xff1a;是C11引入的一种函数对象&#xff0c;可以方便地创建匿名函数。与传统的函数不同&#xff0c;Lambda表达式可以在定义时直接嵌入代码&#xff…

JSON与storage

JSON JSON由来 ◼ 在目前的开发中&#xff0c;JSON是一种非常重要的数据格式&#xff0c;它并不是编程语言&#xff0c;而是一种可以在服务器和客户端之间传输的数据格式。 ◼ JSON的全称是JavaScript Object Notation&#xff08;JavaScript对象符号&#xff09;&#xff1a…

苹果震撼发布首款头显,搭配强悍Mac和iOS 17等全新产品,价值25000元!

&#x1f337; 博主 libin9iOak带您 Go to New World.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《IDEA开发…

随机过程与排队论(一页纸总结)

参数为 λ 的泊松过程的点间间距是相互独立的随机变量&#xff0c;且服从均值为 1/λ 的 指数 分布。 病人以每小时3人的泊松流到达医院&#xff0c;设该医院只有一个医生服务且容量为无穷&#xff0c;医生服务的时间服从指数分布&#xff0c;并且平均服务一个病人为30分钟&am…

内联函数 C/C++

代码&#xff1a; file1.c #include<stdio.h>void spam(double v); void masp(double w);inline static double square(double); double square(double x) { printf("%s %s %d\n", __FILE__, __func__, __LINE__);return x * x; } int main() {double q …

chatgpt赋能python:Python如何将图片Resize

Python如何将图片Resize 在网页设计和开发过程中&#xff0c;图片大小和质量对于网站性能和用户体验至关重要。网站图片过大会影响页面加载时间&#xff0c;降低用户体验&#xff1b;同时&#xff0c;过小的图片也会影响网站排名&#xff0c;因为搜索引擎的排名算法很重视网站…

chatgpt赋能python:Python如何循环运行程序

Python如何循环运行程序 Python是一种强大的动态语言&#xff0c;具备灵活性和易用性。在编写Python程序时&#xff0c;一个常见的需求是循环运行程序&#xff0c;特别是需要定期执行一些任务的情况下。 本文将介绍如何在Python中实现循环运行程序&#xff0c;并提供一些例子…

chatgpt赋能python:Python如何循环执行

Python如何循环执行 循环是编程中最基本和常用的结构之一。Python作为一门高级编程语言&#xff0c;提供了多种循环执行的方式。在本文中&#xff0c;我们将介绍Python中的循环语句和循环控制语句以及其运行原理。 Python循环语句 for循环 for循环是Python中最常用的循环语…

chatgpt赋能python:Python列表:如何使用Python将数据存入列表中

Python列表&#xff1a;如何使用Python将数据存入列表中 Python是一种广泛使用的编程语言&#xff0c;由于其易于学习和可读性&#xff0c;在数据科学和分析领域中使用广泛。在本文中&#xff0c;我们将讨论如何使用Python将数据存储在列表中。 什么是Python列表&#xff1f;…

语言是世上最奇妙的事物,没有之一

语言是世上最奇妙的事物&#xff0c;没有之一 品牌是靠语言传播的 语言是咋产生的&#xff1f;太玄了 趣讲大白话&#xff1a;猪如果会说话&#xff0c;谁吃谁还不一定呢 【趣讲信息科技187期】 **************************** 《未来简史》的作者说 人有了语言&#xff0c;就有…

Object类和Java中内置的一些接口

文章目录 一、Object类1.1Object类中的方法1.1.1toString()方法1.1.2equals()方法1.1.3hashCode()方法 二、Java中内置的一些接口2.1Comparable<T>接口2.2Cloneable接口 一、Object类 Object类是所有类的父类 1.1Object类中的方法 1.1.1toString()方法 Object类中的t…

Optimize Game Objects骨骼节点优化后SkinMesh以及动态骨骼

为了降低模型动画的性能开销&#xff0c;可以进行骨骼节点优化。 一、接口 unity官方提供了有两种方式可以进行节点优化&#xff1a; 注意当骨骼节点被优化后&#xff0c; Transform节点被剔除&#xff0c;因此需要将挂点等需要用到的节点暴露出来&#xff0c;即下面两个接口…

【高级篇】微服务保护

文章目录 微服务保护1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结 1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制2.1.簇点链路2.…

<DB2>《DB2内存详细介绍》

《DB2内存详细介绍》 1 架构图2 主要概念2.1 内存集&#xff08;Memory Set&#xff09;2.2 内存池&#xff08;Memory Pool&#xff09;2.3 内存块&#xff08;Memory Block&#xff09; 3 内存方案3.1 第一级服务器内存3.2 第二级操作系统内存和实例共享内存3.3 第三级数据库…