《DiffusionDet: Diffusion Model for Object Detection》ICCV2023

摘要

本文提出了一种新的框架DiffusionDet,它将目标检测任务表述为从带噪声的边界框到目标边界框的去噪扩散过程(如图一所示)。在训练阶段,目标边界框逐渐扩散到随机分布,模型学习逆转这一加噪过程。在推理阶段,模型以渐进的方式细化一组随机生成的边界框以输出结果。在标准基准测试(包括MS-COCO和LVIS)上的广泛评估表明,DiffusionDet与以前建立的检测器相比,取得了有利的性能。这项工作在目标检测中带来了两个重要的发现:首先,随机边界框虽然与预定义的锚点或学习到的查询差异很大,但也是有效的目标候选;其次,目标检测这一代表性感知任务可以通过生成方式解决。

图一:将目标检测表述为从噪声框到目标框的去噪扩散过程

拟解决的问题:DiffusionDet旨在解决传统目标检测方法中存在的问题,特别是依赖于固定的一组可学习查询(如图二(a)(b)所示)的问题。作者提出了一个问题:是否有一种更简单的方法,甚至不需要可学习查询的代理?DiffusionDet通过直接从一组随机边界框(如图二(c)所示)检测对象来回答这个问题。

图二

创新之处

  1. 去噪扩散过程:DiffusionDet首次将目标检测表述为生成式去噪过程,这是据作者所知首次将扩散模型应用于目标检测。
  2. 动态边界框:DiffusionDet利用随机边界框作为目标候选,解耦了训练和评估阶段,可以在训练时使用N_{train}个随机边界框,而在评估时使用N_{eval}个随机边界框,N_{eval}可以是任意值,不需要等于N_{train}
  3. 渐进式细化:扩散模型通过迭代细化为DiffusionDet带来了好处,可以通过调整去噪采样步骤的数量来提高检测精度或加快推理速度。

方法

2.1 架构

DiffusionDet框架包含图像编码器和目标解码器两部分。图像编码器从输入图像中提取特征表示,目标解码器接收噪声边界框作为输入并预测类别分类和框坐标。在训练阶段,通过向真实边界框添加高斯噪声来构建噪声边界框。在推理阶段,DiffusionDet通过逆转学习到的扩散过程生成边界框,该过程调整噪声先验分布以适应学习到的边界框分布。

图三:在训练期间,通过将高斯噪声添加到真实框来构建噪声框。在推理中,噪声框是从高斯分布中随机采样的。

将整个模型分为两部分,图像编码器和目标解码器,前者只运行一次,从原始输入图像x中提取深度特征表示,后者将该深度特征作为条件,而不是原始图像,逐步细化来自噪声框zt的框预测。

图像编码器。图像编码器以原始图像为输入,提取其高级特征进行以下目标解码器。我们使用卷积神经网络(如ResNet)和基于transformer的模型(如Swin)来实现DiffusionDet。特征金字塔网络用于在之后为ResNet和Swin主干生成多尺度特征图。

目标解码器。从稀疏R-CNN借用,目标解码器将一组提议框作为输入,从图像编码器生成的特征映射中裁剪RoI-特征,并将这些RoI-特征发送到检测头,得到框回归和分类结果。在之后,我们的目标解码器由 6 个级联阶段组成。我们的解码器与稀疏 R-CNN 中的解码器之间的差异是:(1)DiffusionDet 从随机框开始,而 Sparse R-CNN 在推理中使用固定的学习框集; (2) Sparse R-CNN 将提议框的输入对及其对应的提议特征作为输入,而 DiffusionDet 只需要提议框; (3) DiffusionDet 在迭代采样步骤中重用检测器头,参数在不同的步骤中共享,每个步骤通过时间步嵌入指定到扩散过程,而 Sparse R-CNN 在前向传递中仅使用一次目标解码器。

2.2 训练

在训练过程中,我们首先将ground-truth框的扩散过程构建到有噪声的框中,然后训练模型逆转这个过程。

Ground truth boxes填充。首先将一些额外的框填充到原始Ground truth框,以便所有框加起来等于固定数量的N_{train}。探索了几种填充策略,例如重复现有的地面实况框、连接随机框或图像大小框。这些策略的比较发现,连接随机框效果最好。

Box corruption。将高斯噪声添加到填充的Ground truth框框中。

训练损失。目标解码器以N_{train}损坏的框为输入,预测类别分类和框坐标的N_{train}预测。我们在 N_{train}预测集上应用集合预测损失。通过最优传输分配方法选择成本最低的前 k 个预测来为每个基本事实分配多个预测。

2.3 推理 

DiffusionDet的推理过程是一个从噪声到目标盒的去噪采样过程。从高斯分布中抽样的box开始,模型逐步改进其预测。

抽样步骤。在每个采样步骤中,将随机box或上次采样步骤的预测box送入目标解码器,以预测类别分类和box坐标。在得到当前步骤的box数后,采用DDIM估计下一步的盒数。将没有DDIM的预测框发送到下一步也是一种可选的渐进优化策略。

box更新。在每个采样步骤之后,预测框可以大致分为两种类型,期望和不期望的预测。期望的预测包含适当地位于相应对象的框,而不期望的预测则是任意分布的。直接将这些不需要的box发送到下一次采样迭代不会带来好处,因为它们的分布不是由训练中的box损坏构建的。为了使推理更好地与训练一致,我们提出了box更新策略,通过将这些不需要的box替换为随机的box来恢复这些box。具体来说,我们首先过滤掉得分低于特定阈值的不需要的框。然后,我们将剩余的box与从高斯分布中抽样的新随机box连接起来。

Once-for-all。由于随机box的设计,我们可以用任意数量的随机box和采样步数来评估DiffusionDet,而不需要等于训练阶段。相比之下,以前的方法在训练和评估过程中依赖于相同数量的处理box,并且它们的目标解码器在前传过程中只使用一次。

结论

DiffusionDet通过将目标检测视为从噪声边界框到目标边界框的去噪扩散过程,提出了一种新的检测范式。这种噪声到框的管道具有动态框和渐进式细化等吸引人的特性,使得我们可以使用相同的网络参数在不同的推理情况下获得所需的速率-精度权衡,而无需重新训练模型。在标准检测基准上的实验表明,DiffusionDet与建立的检测器相比具有有利的性能。未来的工作可能会将DiffusionDet应用于视频级任务,例如目标跟踪和动作识别,或者将DiffusionDet从封闭世界扩展到开放世界或开放词汇目标检测。

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

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

相关文章

ISAAC SIM踩坑记录--ROS2相机影像发布

其实这个例子官方和大佬NVIDIA Omniverse和Isaac Sim笔记5:Isaac Sim的ROS接口与相机影像、位姿真值发布/保存都已经有详细介绍了,但是都是基于ROS的,现在最新的已经是ROS2,这里把不同的地方简单记录一下。 搭建一个简单的场景&a…

Leetcode 905 Sort Array By Parity

题意:一个数组,把偶数放在前面,奇数放在后面, 并且顺序不影响答案,返回一个满足条件的解就可以 https://leetcode.com/problems/sort-array-by-parity/description/ 题解:对撞双指针,前面的指针遇到奇数停…

outlook邮箱关闭垃圾邮件——PowerAutomate自动化任务

微软邮箱反垃圾已经很强大了非常敏感,自家的域名的邮件都能给扔到垃圾邮箱里,但还是在本地增加了一层垃圾邮箱功能,然后垃圾邮箱并没有提示,导致错过很多通知,本身并没有提供关闭的功能,但微软有个Microsof…

「Py」Python基础篇 之 Python都可以做哪些自动化?

✨博客主页何曾参静谧的博客📌文章专栏「Py」Python程序设计📚全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定…

candence: 原理图生成网表时报错:Duplicate Pin name “xxx“

原理图生成网表时报错:Duplicate Pin name “xxx” 这个错误的意思是,原理图中管脚命名重复 解决这个问题的方法: 1、绘制元件的时候不要用相同的管脚名,比如GND等的,就稍加个后缀做区分2、就是将管脚属性修改为 &qu…

Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分,考虑后Diffusion Policy的重要性很高,加之后续还有一系列基于其的改进工作 故独立成本文,且写的过程中 …

计算机网络学习笔记-3.2介质访问控制

文章目录 介质访问控制静态划分信道 动态分配信道轮询访问介质访问控制随机访问介质访问控制ALOHA协议简介ALOHA协议的工作原理 介质访问控制 介质访问控制(MAC,Medium Access Control),质访问控制的目的是确保多个设备能够高效、…

GitCode光引计划有奖征文大赛

一、活动介绍 GitCode平台汇聚了众多杰出的G-Star项目,它们犹如璀璨星辰,用各自的故事和成就,为后来者照亮前行的道路。我们诚邀广大开发者、项目维护者及爱好者,共同撰写并分享项目在GitCode平台上托管的体验,挖掘平…

深入理解接口测试:实用指南与最佳实践5.0(三)

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

Python实现云原生应用的后端开发

目录 1. 云原生后端开发基础2. 云原生架构与核心概念3. Python实现云原生后端应用1. 基本的微服务实现2. 容器化应用:Docker化微服务3. 使用Kubernetes进行部署 4. 云原生后端开发案例与代码实现案例 1:用户认证服务(使用策略模式&#xff09…

使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行

electron-egg一个入门简单、跨平台、企业级桌面软件开发框架https://www.kaka996.com/electron-egg 跳转地址 1,使用 git下载代码到本地,如果没有git需要进行安装 # gitee git clone https://gitee.com/dromara/electron-egg.git # github git clone https://github.com/dro…

linux中报文从网卡到用户态recv的架子

分享一篇后台服务器性能优化之网络性能优化,希望大家对Linux网络有更深的理解。 曾几何时,一切都是那么简单。网卡很慢,只有一个队列。当数据包到达时,网卡通过DMA复制数据包并发送中断,Linux内核收集这些数据包并完成…

2019年下半年试题二:论软件系统架构评估及其应用

论文库链接:系统架构设计师论文 论文题目 对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系…

网络安全-蓝队基础

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…

集群策略选择vs生产需求点(负载/可用性、灾备/安全性)

• 集群策略分类 负载均衡靠: -主从。读写分离。 灾备靠: -同步( 主备,一定带同步功能。主从,一定带同步功能。主主,一定带同步功能。由于主备、主主不常用,同步基本等价于主从。)…

AI开发-三方库-PyTorch-NumPy

1 需求 官网:https://numpy.org/ 2 接口 3 示例 4 参考资料

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪 1、路由关系 2、漏洞触发口unserialize(base64_decode($data)); 2、__destruct(),魔术法方法调用close函数方法 3、未找到利用链,尝试__call魔术方法 4、逆推找call_user_func 函数 第一部分 namespace yii\db; class BatchQueryResu…

Maven 构建项目

Maven 是一个项目管理和构建工具,主要用于 Java 项目。它简化了项目的构建、依赖管理、报告生成、发布等一系列工作。 构建自动化:Maven 提供了一套标准化的构建生命周期,包括编译、测试、打包、部署等步骤,通过简单的命令就可以执…

任务调度中心-XXL-JOB使用详解

目录 详解 调度中心 执行器 原理 快速入门 源码仓库地址 1.初始化数据库 2.配置调度中心 1.解压源码 2.需改配置文件 3.启动调度中心 3.配置执行器 1.引入pom依赖 2.修改配置文件 3.执行器组件配置 4.部署执行器项目 4.开发第一个任务 BEAN模式(类…

PostgreSQL 无法为连接创建新的进程

PostgreSQL could not fork new process for connection 前几天在使用 PostgreSQL 数据库的过程中遇到这样一个错误。 could not fork new process for connection: Resource temporarily unavailable 看字面意思是无法克隆一个新的进程供连接使用,资源暂时不可用。…