跳转至

DiffusionDepth: Diffusion Denoising Approach for Monocular Depth Estimation

会议: ECCV 2024
arXiv: 2303.05021
代码: https://github.com/duanyiqun/DiffusionDepth
领域: 3D视觉
关键词: 单目深度估计, 扩散模型, 去噪过程, 深度精细化, 自扩散

一句话总结

本文首次将扩散去噪过程引入单目深度估计任务,通过在潜在深度空间中执行视觉条件引导的迭代去噪,并提出自扩散机制解决稀疏GT深度的模式崩塌问题,在KITTI和NYU-Depth-V2上达到SOTA性能。

研究背景与动机

领域现状:单目深度估计是从单张2D图像预测逐像素深度的基础视觉任务,广泛应用于自动驾驶、机器人和增强现实。现有方法主要分为两类:(1) 回归方法(如BTS、PixelFormer)直接回归深度值;(2) 分类方法(如AdaBins、BinsFormer)将连续深度离散化后做分类。

现有痛点:(1) 纯回归方法容易过拟合,难以生成精细的深度细节,物体边缘和形状模糊;(2) 基于分类的方法通过bin center离散化深度值,导致深度图存在不连续性和模糊;(3) 两类方法都是一次性预测,缺乏逐步精细化的能力。

核心矛盾:深度估计需要同时捕捉粗粒度的场景结构和细粒度的物体细节,但现有的单步预测范式难以兼顾两者。扩散模型在生成任务中展现了强大的逐步精细化能力,但将其应用于深度估计面临一个关键障碍——户外场景的GT深度极其稀疏(KITTI仅3.75%-5%像素有GT),直接在稀疏GT上训练生成模型会导致模式崩塌。

本文目标 (1) 如何将扩散模型的迭代精细化能力引入深度估计?(2) 如何在稀疏GT深度场景下有效训练扩散模型?

切入角度:将深度估计重新建模为条件去噪扩散过程——从随机深度分布出发,在单目视觉条件引导下逐步去噪为精确深度图。同时提出自扩散(self-diffusion)策略,在模型自身的精细化深度上加噪而非稀疏GT上加噪,规避稀疏性问题。

核心 idea:将深度估计重构为视觉条件引导的迭代去噪过程,通过自扩散机制解决稀疏GT场景下的训练难题,实现逐步精细化的高质量深度预测。

方法详解

整体框架

DiffusionDepth的整体框架包含三个核心部分:(1) 视觉特征提取器(Swin Transformer + FPN)从输入图像构建多尺度视觉条件 \(c\);(2) 深度编码器-解码器将深度图映射到潜在空间并还原;(3) 单目条件去噪模块(MCDB)在潜在空间中执行条件去噪。推理时,从随机噪声 \(x_T\) 出发,经过 \(T\) 步去噪得到精细化的深度潜在表示 \(x_0\),再通过解码器输出最终深度图。

关键设计

  1. 任务重构——深度估计即去噪:

    • 功能:将深度估计从回归/分类范式转变为条件生成范式
    • 核心思路:定义条件去噪过程 \(p_\theta(x_{t-1}|x_t, c) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t, c), \sigma_t^2 I)\),其中 \(c\) 是单目视觉条件。使用DDIM加速推理,将随机方差设为0使预测确定性
    • 设计动机:扩散模型的迭代精细化天然适合深度估计——前几步建立粗粒度结构,后续步骤逐步修正细节和距离关系
  2. 单目条件去噪模块(MCDB):

    • 功能:在视觉条件引导下对深度潜在表示执行去噪
    • 核心思路:视觉条件 \(c \in \mathbb{R}^{H/4 \times W/4 \times c}\) 通过局部投影层上采样到与深度潜在 \(x_t \in \mathbb{R}^{H/2 \times W/2 \times d}\) 相同尺寸,然后通过元素级相加融合,再经过CNN块和自注意力层处理。采用轻量化设计保证推理效率
    • 设计动机:视觉条件提供场景语义和结构信息,通过层级融合让去噪过程能够利用图像中的视觉线索来引导深度精细化
  3. 自扩散机制(Self-Diffusion):

    • 功能:解决稀疏GT深度下扩散模型训练的模式崩塌问题
    • 核心思路:训练时不在稀疏的GT深度上加噪,而是在模型当前去噪输出的精细化深度潜在 \(x_0\) 上加噪生成 \(x_t\)。监督信号通过稀疏有效掩码将精细化深度与GT对齐。配合随机裁剪、抖动和翻转增强
    • 设计动机:户外深度GT仅覆盖3.75%-5%的像素,直接在稀疏GT上训练扩散模型会崩塌(实验验证KITTI上不收敛)。自扩散让模型学习"组织"整个深度图而不只是回归已知部分

损失函数 / 训练策略

总损失为三项的加权和:\(L = \lambda_1 L_{ddim} + \lambda_2 L_{pixel} + \lambda_3 L_{latent}\)。其中 \(L_{ddim} = \|x_{t-1} - \mu_\theta(x_t, t, c)\|^2\) 监督去噪步骤;\(L_{pixel}\) 是像素级深度损失(SILog变体);\(L_{latent} = \|x_0 - \hat{x}_0\|^2\) 对齐潜在空间。训练1000步扩散、20步推理。前50%迭代使用L1+L2辅助损失。AdamW优化器,8×A100训练30轮。

实验关键数据

主实验

数据集 指标 DiffusionDepth 之前SOTA (URCDC-Depth) 提升
KITTI Eigen (0-80m) RMSE↓ 2.016 2.032 0.8%
KITTI Eigen (0-80m) Abs Rel↓ 0.050 0.050 -
KITTI Official (0-50m) RMSE↓ 1.418 1.528 7.2%
KITTI Official (0-50m) Abs Rel↓ 0.041 0.049 16.3%
NYU-Depth-V2 RMSE↓ 0.295 - -
NYU-Depth-V2 Abs Rel↓ 0.085 - -

消融实验

配置 Rel.↓ RMSE↓ 说明
20步推理(标准) 0.086 0.298 默认配置
15步(直接改) 0.118 0.455 性能严重下降
10步(直接改) 0.182 0.751 不可用
15步(重新训练) - ~0.30 仅轻微下降
在稀疏GT上扩散(KITTI) - 不收敛 模式崩塌
在稀疏GT上扩散(NYU) - 可比较 密集GT场景可行

关键发现

  • 自扩散机制是户外场景训练成功的关键——直接在稀疏GT上扩散在KITTI上不收敛
  • 去噪过程可视化显示:前10步建立场景结构,后续步骤精细化距离关系和边缘
  • 深度潜在空间使用×2下采样略优于×4下采样
  • 框架兼容多种视觉骨干(ResNet、Swin),且可与Bins等分类方法结合
  • 推理速度:ResNet骨干14FPS、Swin骨干5FPS(RTX 3090,20步)

亮点与洞察

  • 首次将扩散模型引入深度估计:开辟了生成式方法在3D感知任务中的新范式
  • 自扩散机制设计精巧:用简洁的思路解决了稀疏GT下生成模型训练的核心困难
  • 可视化揭示去噪过程的语义:先识别形状边缘,再调整深度关系,过程具有可解释性
  • 通用性强:扩散头可与不同骨干和深度特征提取方法自由组合

局限与展望

  • 推理速度受去噪步数限制,虽然20步可用但仍慢于直接回归方法
  • 直接修改推理步数(不重新训练)会导致严重性能下降,灵活性不足
  • 在线评测(KITTI Online)略低于VA-Depth和URCDC-Depth,可能因未使用长距离注意力等高级特征提取技术
  • 可探索更快的采样策略(如一致性模型)将推理步数降到1-4步

相关工作与启发

  • DiffusionDet:扩散模型做目标检测的先驱,将检测框生成建模为去噪过程
  • Latent Diffusion:在潜在空间做扩散的思路直接启发了本文的深度潜在空间设计
  • VA-Depth:变分推断做深度精细化,是非扩散范式的精细化方法
  • 启发:扩散模型的迭代精细化范式可推广到立体匹配、深度补全等其他3D感知任务

评分

  • 新颖性: ⭐⭐⭐⭐ 首次将扩散模型应用于深度估计,自扩散机制有创意
  • 实验充分度: ⭐⭐⭐⭐ 室内外双数据集+多项消融+推理过程可视化
  • 写作质量: ⭐⭐⭐⭐ 结构清晰,动机阐述充分
  • 价值: ⭐⭐⭐⭐ 开创性工作,为后续Marigold等方法铺路

相关论文