MonoWAD: Weather-Adaptive Diffusion Model for Robust Monocular 3D Object Detection¶
会议: ECCV 2024
arXiv: 2407.16448
代码: 有
领域: 自动驾驶
关键词: 单目3D检测, 天气自适应, 扩散模型, 天气码本, 雾天检测
一句话总结¶
提出 MonoWAD,通过天气码本学习晴天知识作为参考,结合天气自适应扩散模型将雾效建模为噪声进行特征增强,实现在各种天气条件下鲁棒的单目3D目标检测。
研究背景与动机¶
单目3D目标检测仅依赖单张RGB图像估计3D边界框,因其成本低廉而被广泛用于自动驾驶。然而,现有方法几乎只关注理想天气(晴天)下的检测性能,当面对雾天等恶劣天气时,性能急剧下降。
实验数据直观说明了这一问题的严重性:在作者的复现实验中,多个SOTA方法在雾天KITTI上的AP3D几乎归零: - MonoGround: 晴天 Easy 25.24 → 雾天 0.00 - DID-M3D: 晴天 Easy 22.98 → 雾天 1.15 - MonoDETR: 晴天 Easy 28.84 → 雾天 7.40
这一性能悬崖式下降的根本原因在于:雾的密集散射和光吸收严重退化了视觉信息,而单目检测完全依赖视觉特征,没有LiDAR等深度传感器的补充。
作者识别出两个关键问题:(1) 如何量化输入图像需要多大程度的改善? 晴天只需少量增强,雾天需要大量增强;(2) 如何引导特征表示的增强方向? 增强需要有方向性——朝着"清晰天气"的方向增强。
现有去雾方法(image-level或feature-level dehazing)虽然在雾天有一定改善,但一刀切地去雾会损害晴天性能,因为它们无法根据天气条件动态调整增强力度。
方法详解¶
整体框架¶
MonoWAD 包含三个核心组件: 1. 骨干网络(DLA-102)提取输入特征 \(x^c\) 或 \(x^f\) 2. 天气码本(Weather Codebook) \(\mathcal{Z}\):记忆晴天知识,为任意输入生成天气参考特征 \(x^r\) 3. 天气自适应扩散模型(Weather-Adaptive Diffusion):基于 \(x^r\) 动态增强输入特征 最后由检测模块(transformer encoder-decoder)输出3D检测结果。
关键设计¶
-
天气码本(Weather Codebook):
- 可学习码本 \(\mathcal{Z} = \{z_k\}_{k=1}^K\),\(K=4096\) 个槽位,每个 \(z_k \in \mathbb{R}^{1 \times c}\)(\(c=256\))
- 输入特征通过卷积层得到 \(\hat{x}^c\) 或 \(\hat{x}^f\),对每个空间位置找最近码字进行量化:\(x^{r(c)} = \mathbf{q}(\hat{x}^c) := \arg\min_{z_k \in \mathcal{Z}} \|\hat{x}^c_{ij} - z_k\|\)
- Clear Knowledge Embedding (CKE) Loss:用KL散度使码本输出接近晴天特征的通道分布——\(\mathcal{L}_{cke} = D_{KL}(s^c \| s^{r(c)})\),其中 \(s^c, s^{r(c)}\) 分别是GAP+softmax后的通道概率
- Weather-Invariant Guiding (WIG) Loss:确保雾天和晴天输入产生相同的参考特征——\(\mathcal{L}_{wig} = \|x^{r(c)} - x^{r(f)}\|_2^2\)
- 总CKR损失:\(\mathcal{L}_{ckr} = \mathcal{L}_{cke} + \mathcal{L}_{wig}\)
- 设计动机:码本作为"天气记忆库",训练时记住晴天的视觉知识模式;推理时无论输入是晴天还是雾天,都能回忆出相同的"晴天参考",这个参考特征隐含了"需要增强多少"的信息
-
天气自适应扩散模型:
- 核心创新:用雾分布代替高斯噪声。定义雾分布 \(\mathcal{F} = x^f - x^c\)(雾天与晴天特征之差),作为扩散模型的噪声
- 前向过程:逐步向晴天特征 \(x^c_0\) 添加雾噪声——\(q(x^c_t | x^c_{t-1}) = \mathcal{F}(x^c_t; \sqrt{1-\beta_t}x^c_{t-1}, \beta_t \mathbf{I})\)
- 反向过程:条件自编码器 \(\boldsymbol{\epsilon}_\theta(x^c_t, t, x^r)\) 估计雾变量,以天气参考特征 \(x^r\) 作为条件
- 通过交叉注意力机制融合当前特征和参考特征: \(\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V\) 其中 \(Q = W_i^q \cdot \bar{x}^c_t\),\(K = W_i^k \cdot \bar{x}^r\),\(V = W_i^v \cdot \bar{x}^r\)
- 设计动机:传统扩散用高斯噪声,不理解天气语义;将雾效果建模为噪声,使扩散的前向/反向过程直接对应加雾/去雾过程。天气参考特征作为注意力的Key/Value,自动控制增强力度——晴天输入与参考差异小,增强少;雾天与参考差异大,增强多
-
天气自适应增强损失(WAE Loss):
- \(\mathcal{L}_{wae} = \mathbb{E}_{x^c, \boldsymbol{\epsilon}_n \sim \mathcal{F}, t}[\|\boldsymbol{\epsilon}_n - \boldsymbol{\epsilon}_\theta(x^c_t, t, x^r)\|_2^2]\)
- 确保扩散模型准确估计雾变量
- 设计动机:标准DDPM的MSE目标,但噪声分布替换为雾分布
损失函数 / 训练策略¶
- 总损失:\(\mathcal{L}_{Total} = \mathcal{L}_{OD} + \lambda_1 \mathcal{L}_{ckr} + \lambda_2 \mathcal{L}_{wae}\)
- \(\lambda_1 = \lambda_2 = 1\),\(\mathcal{L}_{OD}\) 为标准3D检测损失(分类+回归+深度)
- 训练数据:KITTI原始清晰图像 + 合成的foggy KITTI配对图像
- 雾图像基于DORN深度估计 + 物体距离合成
- 扩散步数 \(T=15\),单卡RTX 4090训练120 epochs
实验关键数据¶
主实验(KITTI验证集,Car类别)¶
| 方法 | 雾天 AP3D Easy | 雾天 Mod. | 雾天 Hard | 晴天 AP3D Easy | 晴天 Mod. | 平均 Mod. |
|---|---|---|---|---|---|---|
| GUPNet | 2.74 | 2.19 | 2.16 | 22.76 | 16.46 | 9.33 |
| DID-M3D | 1.15 | 0.61 | 0.64 | 22.98 | 16.12 | 8.37 |
| MonoGround | 0.00 | 0.00 | 0.06 | 25.24 | 18.69 | 9.35 |
| MonoDTR | 16.89 | 11.86 | 9.87 | 24.52 | 18.57 | 15.22 |
| MonoDETR | 7.40 | 5.74 | 4.53 | 28.84 | 20.61 | 13.18 |
| MonoWAD | 27.17 | 19.57 | 16.21 | 29.10 | 21.08 | 20.33 |
Virtual KITTI多天气结果:
| 方法 | 雾天 AP3D Easy | 雨天 Easy | 日落 Easy |
|---|---|---|---|
| MonoDTR | 8.79 | 11.73 | 9.86 |
| MonoDETR | 4.50 | 6.61 | 7.08 |
| MonoWAD | 13.33 | 14.12 | 13.38 |
消融实验¶
各模块贡献:
| 配置 | 雾天 AP3D Easy | 雾天 Mod. | 晴天 Easy | 晴天 Mod. | 说明 |
|---|---|---|---|---|---|
| Baseline | 13.75 | 9.61 | 22.63 | 17.16 | 无任何增强 |
| +WAD | 25.62 | 18.66 | 26.34 | 19.17 | 仅扩散模型 |
| +WC+WAD | 27.17 | 19.57 | 29.10 | 21.08 | 完整MonoWAD |
扩散步数T的影响:
| T | 雾天 AP3D Easy | 雾天 Mod. | 晴天 Easy | 晴天 Mod. |
|---|---|---|---|---|
| 无 | 13.75 | 9.61 | 22.63 | 17.16 |
| 5 | 23.57 | 17.91 | 26.03 | 19.21 |
| 10 | 25.28 | 18.49 | 26.79 | 19.90 |
| 15 | 27.17 | 19.57 | 29.10 | 21.08 |
| 20 | 24.54 | 18.29 | 24.85 | 18.54 |
与去雾方法对比(基于MonoDTR):
| 方法 | 雾天 Mod. | 晴天 Mod. | 平均 Mod. |
|---|---|---|---|
| MonoDTR | 11.86 | 18.57 | 15.22 |
| +RIDCP(图像去雾) | 12.41 | 17.89 | 15.15 |
| +DENet(特征去雾) | 17.44 | 5.70 | 11.57 |
| MonoWAD | 19.57 | 21.08 | 20.33 |
关键发现¶
- MonoWAD在雾天性能飙升的同时,晴天性能也有提升(29.10 vs baseline 22.63),这是传统去雾方法做不到的
- 去雾方法(DENet)虽然雾天提升17.44,但晴天暴跌到5.70——说明去雾操作对清晰图像有害
- 扩散步数T=15最优,T=20时出现过拟合退化
- 天气码本贡献显著:在WAD基础上加入WC,雾天AP3D Easy从25.62提升到27.17
- t-SNE可视化显示MonoWAD的晴天/雾天特征几乎重合,而其他方法呈明显分离
亮点与洞察¶
- 将雾效作为扩散噪声的思路非常巧妙:传统扩散用高斯噪声是无语义的,而雾分布\(\mathcal{F} = x^f - x^c\)天然携带天气退化信息,使得扩散过程直接学会"去雾"
- 天气码本的自适应机制:通过WIG Loss确保不同天气输入产生相同的参考特征,使得扩散模型的cross-attention自然实现自适应增强——不需要显式判断天气类型
- 晴天+雾天双赢:这是相比去雾方法最大的优势,因为增强力度由天气参考特征自动调节
局限与展望¶
- 推理速度慢:T=15时144ms/image,远慢于MonoDETR的38ms/image,扩散的迭代特性是瓶颈
- 需要配对训练数据:训练阶段需晴天-雾天配对图像来计算雾分布,限制了对其他天气的直接扩展
- 雾图像为合成数据:基于深度估计合成雾天图像,与真实雾场景存在domain gap
- 未来方向:探索无需配对图像的训练方式、加速扩散推理(如DDIM)、扩展到更多天气类型的联合处理
相关工作与启发¶
- MonoDTR (CVPR 2022): 深度引导的transformer单目检测器,本文的主要对比基线
- MonoDETR (ICCV 2023): DETR风格的单目3D检测,晴天表现最佳但雾天下降严重
- Foggy Cityscapes (Sakaridis et al.): 雾天合成方法的先驱,本文的雾合成遵循类似协议
- DDPM/Conditional Diffusion: 本文的扩散模型在噪声定义和条件机制上做了天气感知的改造
评分¶
- 新颖性: ⭐⭐⭐⭐ — 将天气变化建模为扩散噪声是一个有洞察力的创新,码本设计也很精巧
- 实验充分度: ⭐⭐⭐⭐⭐ — KITTI验证/测试、Virtual KITTI多天气、与去雾方法对比、多种扩散模型对比、步数消融、t-SNE可视化,极为完善
- 写作质量: ⭐⭐⭐⭐ — 问题定义清楚,方法motivation阐述充分
- 价值: ⭐⭐⭐⭐ — 直击自动驾驶的实际痛点,但推理速度和配对数据需求限制了即时部署