3D Common Corruptions and Data Augmentation 论文笔记
3D Common Corruptions and Data Augmentation 阅读笔记 论文:3D Common Corruptions and Data Augmentation(CVPR 2022 Oral,arXiv 2203.01441v3) 作者:Oğuzhan Fatih Ka
论文主题导航
文章目录
3D Common Corruptions and Data Augmentation 阅读笔记
论文:3D Common Corruptions and Data Augmentation(CVPR 2022 Oral,arXiv 2203.01441v3)
作者:Oğuzhan Fatih Kar、Teresa Yeo、Andrei Atanov、Amir Zamir。机构:EPFL。项目页:https://3dcommoncorruptions.epfl.ch/
一句话总结
把深度、3D 网格、相机参数和语义等场景几何引入图像损坏,构建包含 20 种损坏的 3DCC 鲁棒性基准,使损坏符合真实成像规律;再将其中一部分作为在线 3D 数据增强,提高模型面对几何相关分布偏移时的鲁棒性。
研究动机
视觉模型部署到现实世界后会遇到运动模糊、光照变化、雾、遮挡和视角变化等自然分布偏移。现有方法存在真实性与可扩展性之间的矛盾:
- Common Corruptions(2DCC)等可扩展方法通常在整幅图像上均匀施加二维变换,不考虑物体远近和场景结构。例如,真实运动模糊具有视差,真实雾会随距离变浓,但 2D 方法通常对所有像素同等处理。
- 真实采集的数据最可信,但需要控制相机、光照、天气和物体状态,还要获得深度或语义真值,成本高且难以扩展。
- 完整 3D 模拟器可以生成损坏,但模拟域与真实域之间可能存在泛化问题。
核心思想:图像损坏不应只由二维像素位置决定,还应由场景几何和成像过程决定。 以真实 RGB 为基础,再利用深度、3D mesh 或预测深度修改图像,可以兼顾真实性、生成效率、参数可控性和可扩展性。
主要贡献
- 提出 3D Common Corruptions(3DCC)生成框架与鲁棒性基准,包含景深、相机运动、光照、视频、天气、视角、语义和传感器噪声等 20 种损坏。
- 提出基于场景几何的 3D 数据增强,将景深、相机运动和光照等损坏用于训练,使模型学习对更加真实的输入变化保持不变。
- 使用 MiDaS 预测伪深度,将深度相关损坏扩展到 ImageNet、COCO 等没有真实 3D 标注的数据集,并通过真实深度对照实验验证其有效性。
3DCC 的组成
3DCC 中的 corruption 是受控的图像退化或分布偏移,而不是文件损坏。20 种损坏为:
- 景深:Near Focus、Far Focus;
- 相机运动:XY-Motion Blur、Z-Motion Blur;
- 光照:Flash、Shadow、Multi-illumination;
- 视频:CRF Compression、ABR Compression、Bit Error;
- 天气:Fog 3D;
- 视角:Camera Pitch、Camera Roll、Field of View、View Jitter;
- 语义:Occlusion、Scale;
- 非 3D 噪声:Low-light Noise、ISO Noise、Color Quantization。
输入信息按生成难度分为三类:
- RGB + Depth:可生成景深、3D 雾、运动和视频等损坏;普通数据集可用 MiDaS 预测深度代替真实深度。
- RGB + 3D mesh/语义:用于视角变化、自然遮挡、尺度变化和完整光照渲染。
- 仅 RGB:用于低照度、ISO 噪声和颜色量化。这三项不基于 3D,但因常见且有评测价值而被收入基准。
方法
问题可以抽象为:给定清晰图像 、可用的场景信息 、损坏类型 和强度 ,生成损坏图像
可以是真实深度、预测深度、3D mesh、相机参数或语义标注。生成结果既可以离线保存为测试集,也可以在训练时在线采样作为数据增强。
景深损坏
目的:模拟真实相机中由物体深度、焦平面和光圈共同决定的散焦效果,而不是对整幅图像做均匀模糊。
- 根据深度分位数将场景离散为多个层;代码默认使用 8 个深度分段。
- 选择近处或远处深度作为焦平面,分别生成 Near Focus 和 Far Focus。
- 根据各层深度 、焦距位置 和光圈强度 计算模糊半径。代码使用的简化形式为
- 对 RGB 生成不同模糊半径的图像栈,再根据每个像素所属的深度区间进行插值和合成。
这样,位于焦平面附近的像素保持清晰,远离焦平面的区域逐渐模糊。与逐像素卷积相比,分层模糊栈能够较高效地并行计算。
相机运动与视频损坏
真实运动模糊具有视差:相同相机运动对近处和远处物体产生的像素位移不同。离线高质量生成流程为:
- 使用深度把单幅 RGB 图像反投影成点云;
- 定义相机沿 XY 平面或 Z 轴的运动轨迹;
- 沿轨迹渲染多个新视图;
- 使用 [49] 的方法修复单视图点云在去遮挡区域产生的空洞;
- 叠加多个视图,得到与视差一致的 XY/Z 运动模糊。
视频损坏复用这一流程,从单幅 RGB-D 图像生成多帧视频,再施加 H.265 的 CRF、ABR 压缩或传输比特错误,最后抽取一帧作为损坏图像。它不要求输入本身是视频。
3D 雾
采用标准大气散射模型:
为清晰像素, 为大气光, 为深度, 控制雾浓度。深度越大,透射率 越小,像素越接近大气光颜色,因此远处区域自然具有更浓的雾。该方法只需要 RGB 和深度,计算开销很低。
光照损坏
使用 Blender 在 3D mesh 中添加光源并重新计算场景照明:
- Flash:把光源放在相机位置,模拟相机闪光灯;
- Shadow:在相机视锥体外随机放置光源,产生与几何一致的阴影;
- Multi-illumination:组合多个位置和亮度不同的随机光源。
相比简单调节亮度,这种做法会考虑表面方向、物体遮挡和阴影位置。为了降低训练成本,可以预先计算照明或 reshading 图像。
视角与语义损坏
- 视角变化:修改相机俯仰、横滚、视场角和位置后,从 3D mesh 重新渲染图像。View Jitter 用于检查细微视点变化是否导致预测闪烁。
- 自然遮挡:从带语义标注的 mesh 中选择目标物体,通过移动相机让其他物体自然挡住目标,并连续控制遮挡率。
- 尺度变化:改变相机与目标物体之间的距离,在保持透视和场景关系的情况下改变其图像尺度。
这些操作依赖完整 mesh 和语义标注,不能仅凭普通 RGB 图像可靠生成,但可以提供传统随机遮挡无法构造的语义级评测。
传感器与量化损坏
- Low-light:降低像素强度,再加入泊松—高斯噪声;
- ISO Noise:固定泊松光子噪声,随强度增加高斯电子噪声;
- Color Quantization:减少 RGB 图像位深。
这组损坏不依赖 3D,作用是补充以往 2DCC 没有覆盖的现实传感器退化。
强度校准与初始数据集
直接使用各生成器的参数,会导致不同损坏的 severity 不可比。作者因此使用 SSIM 校准五档强度:
- 对在 2DCC 中有对应项的损坏,令每一档强度下 3DCC 与 2DCC 的平均 SSIM 相同;
- 对没有直接对应项的损坏,调节参数,使其处于相近的 SSIM 范围;
- 对视角和语义损坏,不离散成五档,而是连续改变相机参数、遮挡率或尺度。
初始数据集对 16,000 张 Taskonomy 测试图像施加 14 种损坏和五档强度,共约 万张图像;另在 Replica 上渲染约 32,000 张连续视角与语义变化图像。
3D 数据增强
训练时把几何一致的损坏图像作为输入,监督标签保持不变,使同一标签对应多种真实感输入变化,从而学习损坏不变性。论文主要概括为景深、相机运动和光照增强;发布代码中的训练调度进一步包含 3D 雾、闪光、随机景深、深度相关运动模糊和缩放模糊。
实现上要区分评测生成器与训练增强器:离线运动损坏采用点云渲染和去遮挡修复,训练时则为了速度使用深度分层和不同大小的模糊核进行近似。因此,增强不是逐行复现完整评测管线,而是生成同类、低成本的几何相关变化。
代码导航
- 总生成入口:
create_3dcc.py - 景深:
create_dof.py - 3D 雾:
create_fog.py - 相机运动与视频:
motion_video/ - 在线 3D 增强:
augs_3d_cc.py - 2D/3D 增强调度:
augmentation.py - 法线与深度训练:
train_normal.py、train_depth.py
实验
评测协议
- 主要任务:表面法线预测和深度估计,指标为预测与真值之间的 误差。
- 模型:在 Taskonomy 上训练的 UNet/DPT,以及在更大且更多样的 Omnidata 上训练的 DPT。
- Taskonomy 模型:学习率 、权重衰减 ,使用 AMSGrad 优化带拉普拉斯先验的似然损失。
- Omnidata DPT:学习率 、权重衰减 ,采用角度损失与 损失。
- 对比鲁棒性机制:DeepAugment、风格增强、对抗训练、Cross-Domain Ensembles 和 2DCC 数据增强。
主要结果
- 挑战性(图 6):现有鲁棒性机制虽然优于基线,但在 3DCC 上仍远弱于模型在清晰数据上的表现;2DCC 增强只能部分迁移到 3D 损坏。
- 数据与架构(图 7):Taskonomy-UNet 与 Taskonomy-DPT 表现接近;采用更大、更多样 Omnidata 的 DPT 更鲁棒,尤其是在视角变化上。非视角类损坏的平均误差从 0.069 降至 0.061。不过该比较同时改变了架构和数据,不能把提升完全归因于 DPT。
- 非冗余性(图 8):2DCC–2DCC、3DCC–3DCC 和 2DCC–3DCC 的平均误差相关性分别为 0.32、0.28、0.30。较低相关性说明 3DCC 提供了不同于传统 2DCC 的失效模式。
- 与高质量合成的一致性(图 9–10):在 Hypersim 的 200 张图像上,3DCC 与 Adobe After Effects 生成的近/远景深造成的模型误差总体相关性约为 0.80,明显高于普通 2D 散焦和随机噪声对照。这里验证的是失效趋势相关,而不是证明两组图像完全相同。
- 预测深度的有效性(图 11):在 Replica 上分别使用真实深度和 MiDaS 预测深度生成 1,280 张损坏图像,总体误差相关性约为 0.79;Near Focus、Far Focus、Fog 3D 分别为 0.90、0.69、0.78。
- 语义遮挡(图 13):遮挡率增大时,Taskonomy 和 Omnidata 分割模型的 IoU 都会下降;Omnidata 模型通常更鲁棒,而且下降趋势与物体类别相关。
- ImageNet-3DCC(图 14):鲁棒 ImageNet 模型仍显著退化;其总体趋势与 ImageNet-2DCC 有关,但 ANT、AugMix、DeepAugment 等方法的相对表现存在差异,说明 3DCC 能暴露额外问题。
3D 增强效果(表 1)
| 基准 | O+DPT | O+DPT+2DCC | Ours:再加入 3D 增强 |
|---|---|---|---|
| 2DCC 误差(×100) | 6.43 | 5.78 | 5.32 |
| 3DCC 误差(×100) | 6.13 | 5.94 | 5.42 |
| AE 误差(×100) | 7.84 | 6.50 | 4.94 |
| OASIS 角度误差 | 24.42 | 23.67 | 24.65 |
3D 增强显著改善 3DCC 和 AE 等损坏数据,AE 上收益最大;但 OASIS 清晰数据上的角度误差从 23.67 变为 24.65,并非严格提升。论文将 OASIS 的波动部分归因于真值稀疏、评估方差较大。
组件分析
主论文没有像典型网络论文那样系统消融深度分层数量、图像修复算法或每一种增强的独立贡献,主要通过下列对照论证设计:
- 3DCC 与 2DCC 的相关矩阵:说明新增损坏不是对 2DCC 的简单重复;
- 3DCC 与 AE、预测深度与真实深度:分别验证损坏的合理性和可扩展性;
- O+DPT、O+DPT+2DCC、O+DPT+2DCC+3D:验证 2D 与 3D 增强的增量作用;
- Ours 与 Ours+X-TC:X-TC 将 2DCC/3DCC/OASIS 指标略微改善,但 AE 从 4.94 变差到 5.47,收益并不一致。
局限与未来工作
- 3DCC 的真实感上限取决于深度、mesh、相机参数和语义标注质量;错误深度会产生错误的模糊、雾和运动效果。
- 20 种损坏只是起始集合,并不覆盖所有现实世界分布偏移或特定领域损坏。
- 预测深度能扩展景深和雾等损坏,但遮挡、尺度、精确视角和复杂光照仍依赖完整 3D mesh。
- 真实性验证主要集中于 AE 景深,没有针对全部 20 种损坏进行大规模真实相机验证。
- 基准没有平衡不同损坏类别的数量,直接平均时可能使包含更多操作的类别权重更高。
- 实验主要集中于深度和表面法线等稠密回归任务,对分类、检测和语义任务的覆盖有限。
- 离线高保真评测损坏与在线低成本训练增强并不完全一致,二者之间仍存在近似误差。
评述与要点提炼
- 数据层面的贡献:论文的核心不是新网络,而是把鲁棒性测试从统一二维滤镜推进到几何感知的真实成像变化。
- 现实性与可扩展性的折中:真实 RGB 保留原始外观,深度或 mesh 负责控制损坏的空间分布,避免完全依赖模拟器;预测深度进一步降低应用门槛。
- 评测闭环较完整:论文依次论证挑战性、相对 2DCC 的非冗余性、与 AE 的一致性、预测深度的可用性以及训练增强的收益。
- 结论需要克制:AE 只是现实损坏的代理,而且主要验证景深;0.80 的相关性说明两种方法倾向于暴露相似失效样例,不等于 3DCC 已完全复现真实世界。
- 对后续工作的启示:构建鲁棒性基准时,应把深度、可见性、光照、相机运动和语义关系视为损坏生成条件,而不是只在 RGB 平面设计滤镜。

