[目标检测]2023ICCV:DiffusionDet: Diffusion Model for Object Detection

作者:Shoufa Chen, Peize Sun, Yibing Song, Ping Luo

论文:https://arxiv.org/pdf/2211.09788v2

代码:https://github.com/ShoufaChen/DiffusionDet

摘要

      我们提出了一个新的框架DiffusionDet, 将目标检测构建为从噪声框到目标框的去噪扩散过程。|| 在训练过程中,目标框从真实框扩散到随机分布,模型接下来学习反转这个噪声过程。在推理过程中,该模型以渐进的方式将一组随机生成的框改善为输出结果。|| 本文工作具有非常强的灵活性,可以实现目标框的动态数量和迭代评估。|| 在标准数据集上的大量实验表明,DiffusionDet相比于之前的检测器取得了良好的性能。

1. Introduction

目标检测问题:旨在预测一张图片中目标的一组边界框和关联类别标签。作为一个基础的视觉识别任务,目标检测已成为许多相关识别场景的基石,例如实例分割、姿态估计、动作识别、目标跟踪和视觉关系检测。

已有方法:现代目标检测方法随着候选目标的发展而演进,例如,从经验对象先验(empirical object priors)到可学习的对象查询(learnable object queries)。|| 具体地,大多数检测器通过定义代理回归和分类来解决检测任务,例如滑动窗口(sliding windows)、区域建议(region proposals)、锚框(anchor boxes)和参考点(reference points)。最近,DETR提出可学习的对象查询以避免手工设计组件,并建立了一个端到端的检测管道,吸引了许多的关注在基于查询的检测范式。

动机提出:尽管这些方法简答且有效,但他们仍依赖于一组固定的可学习查询。一个自然而言的问题是:有没有一种更简单的方法,甚至不需要可学习查询的替代品(the surrogate of learnable queries)?

本文方法:我们通过设计一个新颖的框架来回答该问题,该框架直接从一组随机框中检测对象。从随机框开始,它不包含在训练阶段可学习的参数需要被优化,我们希望逐步优化这些框的位置和大小,指导他们完全地囊括住目标。这种noise-to-box方法既不需要启发式目标先验也不需要可学习的查询,进一步简化目标候选并推动目标检测管道的发展。

具体过程:DiffusionDet,通过扩散模型处理目标检测任务,将目标检测作为生成式任务投射到图像中边界框的位置和尺寸的空间上。在训练阶段,由方差表(variance shcedule)控制的高斯噪声被添加到GT框中以获得噪声框——>使用这些噪声框从backbone编码器(例如ResNet, Swin Transformer)中裁剪ROI(Region of Interest)区域的特征——>将这些ROI特征送入检测解码器中,该解码器经过训练后可以在没有噪声的情况下预测GT框——>在推理阶段,通过反转学习到的扩散过程生成边界框,该过程将噪声先验分布调整为边界框上学习到的分布。

DiffusionDet灵活性说明:作为一个概率模型,DiffusionDet具有很强的灵活性,即可以只训练网络一次,并在不同推理阶段的设置下使用相同的网络参数,主要包括:

  1. 动态框数。DiffusionDet将训练和评估过程解耦,即可以利用N_train个随机框训练DiffusionDet,同时使用N_eval个随机框评估,其中N_eval是随机的,可以不等于N_train。
  2. 迭代评估。得益于扩散模型的迭代降噪特性,DiffusionDet可以以一种迭代的方式重用整个检测头,进一步提升性能。

本文贡献

  • 将目标检测建模为生成式降噪过程(generative denoising process),第一个将扩散模型应用于目标检测的研究;
  • noise-to-box检测范式有几个吸引人的特性,例如解耦训练和评估过程;
  • 在COCO, Crowd-Human, LVIS数据集上,DiffusionDet实现了良好的性能,尤其是在不同场景的zero-shot transferring。

2. Related Work

目标检测. (略)

扩散模型. 作为一类深度生成式模型,扩散模型从随机分布的样本开始,通过逐渐去噪的过程恢复数据样本。扩散模型最近在计算机视觉、自然语言处理、音频处理、图相关主体、跨学科应用等领域取得了显著成果。

扩散模型用于感知任务. 虽然扩散模型在图像生成方法已取得了巨大成功,但它们在判别任务中的潜力尚未得到充分探索。一些先驱工作试图采用扩散模型进行图像分割。然而,尽管大家对这个想法有浓厚的兴趣,但之前还没有成功将生成式扩散模型应用于目标检测中,其进展明显落后于分割任务。我们认为这可能是因为分割任务是以图像-图像的 方式处理,这和图像生成任务的概念更相近,而目标检测是一个集合预测问题,其需要将目标候选分配给GT目标。本文是第一个尝试将扩散模型应用于目标检测。

3. Approach

3.1 Preliminaries

3.2 Architecture

由于扩散模型迭代生成数据样本,需要在推理阶段多次运行模型f_theta(即神经网络)。但是,在每次迭代时都直接将f_theta应用于原始图像上计算会很困难。因此,本文将整个模型分为图像编码器检测解码器,前者只运行一次,从原始图像x中提取深度特征表示,后者将深度特征作为条件,逐步从噪声框z_t中改善得到预测框。

3.3 Training and 3.4 Inference

4. Experiments

数据集:COCO、LVIS v1.0、CrowdHuman

实验细节

  • ResNet和Swin主干网分别在ImageNet-1K和ImageNet-21K上使用预训练权重进行初始化;
  • 解码器使用Xavier init进行初始化;
  • 使用AdamW优化器进行训练,初始学习率2.5x10^-5,权重衰减为10^-4。所有模型都在8个GPUS上以mini-batch size为16进行训练。
  • 默认的训练schedule为450K iterations,在350K和420K次迭代时,学习率除以10。
  • 数据增强:随机水平翻转、调整输入图像大小的缩放抖动、随机裁剪增强。
  • 测试阶段:每个采样步骤的预测由NMS集成在一起,以获得最终预测。

### 扩散模型在CVPR会议中的镜面反射研究与应用 扩散模型(Diffusion Model)近年来成为计算机视觉领域的重要工具之一,在图像生成、修复以及增强等方面表现出卓越性能。然而,关于其具体应用于镜面反射的研究,则更多集中在如何处理复杂场景下的光照条件和表面材质特性。 #### 镜面反射建模的重要性 镜面反射是一种复杂的光学现象,涉及光线在光滑表面上的定向反射行为。这种现象对于许多实际应用场景至关重要,例如自动驾驶汽车感知系统中对湿滑路面或金属物体的识别[^1]。因此,利用先进的机器学习技术来改进这些方面的表现显得尤为重要。 #### CVPR 中的相关工作概述 通过查阅近几年 ICCV、CVPR 和 ECCV 的论文列表可以发现,虽然直接提到 “diffusion model” 结合 “mirror reflection” 的文章数量有限,但在更广泛的上下文中存在大量讨论有关逆向渲染 (Inverse Rendering) 及其实现方法的工作[^2]。这类研究通常会探讨如何从单张或多视角图片恢复三维形状及其对应的材料属性参数估计问题。 以下是几个可能关联到该主题方向的例子: - **NeRF-based Approaches**: Neural Radiance Fields 提供了一种强大的框架用于合成高质量视图并重建真实世界对象。一些扩展版本尝试引入额外约束以更好地捕捉高光效果等细节特征。 - **Material-aware Segmentation & Synthesis**: 特定类型的分割网络被设计用来区分不同种类的物质类别(比如玻璃 vs 塑料),进而辅助后续任务如编辑或者重绘含有强烈反光区域的目标物象素级标签分配过程。 #### 应用实例分析 尽管目前尚未见到完全专注于上述两个关键词组合的具体案例报道出来;但是我们可以推测未来可能会有如下几种潜在的应用形式出现: 1. **Enhanced AR/VR Experiences** 利用基于扩散的过程创建更加逼真的虚拟环境,其中包含了精确模拟的各种表面特性的互动反馈机制。 2. **Improved Object Detection under Challenging Conditions** 当面对具有强眩光干扰的情况时,能够有效降低误报率的同时提高召回率水平 3. **Advanced Image Editing Tools** 用户可以通过简单的操作指示软件自动调整特定区域内所呈现出来的光泽度变化趋势 ```python import torch from diffusers import DiffusionPipeline # Example pipeline setup for diffusion models. pipeline = DiffusionPipeline.from_pretrained('model_name') image = pipeline(prompt="a shiny metallic sphere").images[0] # Hypothetical function to process mirror reflections using a pre-trained network. def enhance_mirror_reflection(input_image): processed_image = apply_diffusion_model(input_image) return adjust_material_properties(processed_image) enhanced_output = enhance_mirror_reflection(image) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值