《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.xdnf.cn/news/14478.html

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

相关文章

加深深度学习矩阵计算理解--用人类直觉 走进线性代数(非应试)

文章目录 前言一、向量二、线性组合、空间与基三、矩阵和线性变换四、矩阵乘法与线性变化复合1、矩阵乘法代表线性变换的复合2、实例说明 五、三维空间的线性变换1、基本性质2、直觉理解3、矩阵表示 六、行列式一、行列式的定义2、行列式在空间中的抽象理解 七、逆矩阵 列空间秩…

AIGC学习笔记(5)——AI大模型开发工程师

文章目录 AI大模型开发工程师004 垂直领域的智能在线搜索平台1 智能在线搜索平台需求分析大模型不够“聪明”增强大模型的方式需求分析2 智能在线搜索平台方案设计方案设计技术选型大模型版本GLM-4大模型注册使用Google Cloud平台注册创建可编程的搜索引擎3 智能在线搜索平台代…

【C++滑动窗口】1234. 替换子串得到平衡字符串|1877

本文涉及的基础知识点 C算法:滑动窗口及双指针总结 LeetCode1234. 替换子串得到平衡字符串 有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符,且长度为 n 的字符串。 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就…

源码分享-Springboot+Vue大学生社团活动平台附源码,sql文件,配套论文

源码获取: 复制链接到浏览器打开即可领取 夸克网盘领取链接:https://pan.quark.cn/s/187d2ca0e3ec 百度网盘领取链接:https://pan.baidu.com/s/1apbO6k1cEqFXV-USf0I2IA?pwdccaj 提取码: ccaj 1.1课题背景及意义 随着现代网络技术发展&#xff0…

南山前海13元一份的猪脚饭

​今天没有带饭,中午打算去中国国有资本资本风投大厦的工地餐点吃个打工餐。 ​快到工地餐点就看到不少工友已经开始津津有味吃饭了哈。其实树下也有很多小鸟在觅食,可能是找一些剩饭吃的样子,大部分是麻雀为主。​ ​肚子有些饿,…

C++builder中的人工智能(29):如何在Windows项目中导入FANN库

这篇文章旨在使用由Steffen Nissen开发的FANN库实现人工神经网络。FANN库支持20多种编程语言,包括Delphi和C Builder。您可以在FANN的官方网站上找到完整信息和文档,并下载FANN的源文件。 步骤: 下载FANN库: 从Nissen的官方网站下…

Java开发人员学习ArkTs笔记(二)-函数与类

大家好,我是一名热爱Java开发的开发人员。目前,我正在学习ARKTS(Advanced Java Knowledge and Technology Stack),并将不断输出我的学习笔记。我将在这里分享我学习ARKTS的过程和心得,希望能够为其他开发人…

maven环境搭建

maven基本知识 https://blog.csdn.net/qq_41187116/article/details/125955085?spm1001.2014.3001.5502 maven环境搭建 maven软件下载 不要去官网下,慢~ 直接相信清华大学吧: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.9/bin…

jmeter常用配置元件介绍总结之线程组

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之线程组 1.线程组(用户)1.1线程组1.1.setUp线程组和tearDown线程组1.2.Open Model Thread Group(开放模型线程组)1.3.bzm - Arrivals Thread Group(到达线程组)1.4.jpgc - Ultimate Thread Group(终极线程组)1.5.jpgc - St…

八 Bean的生命周期

八、Bean的生命周期 8.1 什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。 所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。 什么时候创建Bean对象? 创建Bean对象的前后会调用什…

【入门篇】桃园结义【算法赛】——多语言版

题目跳转 python import os import sys# 请在此输入您的代码 print(3)C #include <stdio.h> #include <stdlib.h>int main(int argc, char *argv[]) {printf("%d",3);return 0; }C #include <iostream> using namespace std; int main() {// …

速看!!!24下软考系统分析师综合知识真题回忆,考点已更新

2024下半年软考考试已经结束了&#xff0c;为大家整理了网友回忆版的系统分析师真题及答案&#xff0c;总共30道题左右。 下半年考试的宝子们可以对答案预估分数&#xff01;准备明年考的宝子可以提前把握考试知识点和出题方向&#xff0c;说不定会遇到相同考点的题目&#xff…

HarmonyOS NEXT:模块化项目 ——修改应用图标+启动页等

涉及官方文档 应用配置文件应用/组件级配置图标资源规范 涉及到app.json5配置文件和module.json5配置文件 1、 icon和label的校验。 IDE从5.0.3.800版本开始&#xff0c;不再对module.json5中的icon和label做强制校验&#xff0c;因此module.json5与app.json5只需要选择其一…

dolphinscheduler

dolphinscheduler 官网地址&#xff1a; https://dolphinscheduler.apache.org/zh-cn/docs/3.2.1/about/hardware 1. 概念&#xff1a;dolphinscheduler是一个功能强大的开源调度系统&#xff0c;专为管理和调度大规模数据处理任务设计。 2. 特点&#xff1a; 分布式架构、支持…

Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型多变量回归预测

Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型多变量回归预测 目录 Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 吐血售&#xff01;聚划算&#xff01;Transforme…

【C++】C++11特性(上)

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;C 个人主页&#xff1a;Celias blog~ 目录 一、列表初始化 二、std::initializer_list 三、右值引用和移…

Maven 构建项目

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

在jquery里,使用$.each()函数循环数组,对象,dom的用法

介绍 $.each() 能遍历一维数组&#xff0c;多维数组&#xff0c;JSON对象&#xff0c;dom2元素。在开发中可以很高效的处理各种数据结构。前提&#xff0c;需要导入jquery 使用 遍历JSON对象 var objDemo {name: linda,age:12, desc: a girl};$.each(objDemo,function(i,va…

UniApp 应用、页面与组件的生命周期详解

UniApp 应用、页面与组件的生命周期详解 在uni-app中包含了 应用生命周期、页面生命周期、和组件生命周期&#xff08; Vue.js的&#xff09;函数。 应用生命周期 应用生命周期仅可在App.vue中监听&#xff0c;在其它页面监听无效。 <script>export default {onLaunc…

进程的创建/终止/等待/替换

目录 一、进程创建 &#xff08;一&#xff09;fork函数的概念 &#xff08;二&#xff09;fork函数示例 二、进程终止 &#xff08;一&#xff09;退出码的概念 &#xff08;二&#xff09;退出码的含义 &#xff08;三&#xff09;相关函数和指令 三、进程等待 &…