MiDaS
Ranftl 2020 · 论文
一句话总结 — 通过混合多个异构数据集并使用尺度-偏移不变损失进行训练,实现鲁棒的相对(仿射不变)单目深度估计,在跨域场景下实现强大的零样本泛化能力。
问题
单目深度估计的成功取决于大规模且多样化的训练集,但在不同环境下大规模获取密集真值深度极为困难,以至于该领域分裂成了具有各自特征和偏差的多个数据集——基于立体的、激光扫描的、结构光的,每种都有各自的尺度约定、深度范围,甚至未知或不一致的标定。在单一数据集上训练的模型在域外表现脆弱。MiDaS构建了一套工具,使得即便标注彼此不兼容,也能联合在所有这些数据集上训练。
方法与架构
网络本身是一个传统的编码器-解码器结构(Xian等人基于ResNet的多尺度架构);本文的贡献在于围绕它构建的训练机制。
预测空间。 模型在视差空间(逆深度)中进行预测,直到一个未知的尺度和偏移——这是唯一能兼容所有标注类型(未标定的立体、激光、SfM)的表征。
尺度-偏移不变损失。 对于个有效像素,损失在预测和真值的对齐版本上计算:
一种对齐方式是最小二乘:,可闭式求解。鲁棒的替代方案用中位数/平均绝对偏差估计量对两个信号进行归一化:
表现最好的变体采用平均绝对误差,但会剔除每张图像中最大的20%残差(),使真值中的异常值永远不会影响训练。
梯度匹配。 一个多尺度梯度匹配项使深度不连续处变得锐利,并与真值边缘对齐(,个尺度):
每个数据集的损失为,其中。
帕累托最优数据集混合。 不是简单地对各数据集的损失求平均,而是将每个数据集视为多目标优化(Sener & Koltun)中的一个任务,寻求一个近似的帕累托最优点,使任何数据集都不占主导地位。
数据:MIX 5 + 3D电影。 五个训练集——ReDWeb、DIML、MegaDepth、WSVD,以及一个新的3D电影语料库(来自23部立体电影的约7.5万帧):立体视角间的光流用作视差代理,配合左右一致性检查(超过2像素的标记为无效)、自动帧过滤,以及天空区域被强制设为最小视差。
编码器预训练。 编码器的ImageNet表现能够预测深度估计的表现;最佳模型使用ResNeXt-101-WSL编码器(弱监督预训练),带来最多15%的相对提升,而随机初始化的ResNet-50比其预训练版本差约35%。
实验结果
评估采用零样本跨数据集迁移:测试数据集(DIW、ETH3D、Sintel、KITTI、NYU、TUM)在训练中从未见过。完整模型(MIX 5,ResNeXt-101-WSL)取得DIW WHDR 12.46,ETH3D AbsRel 0.129,Sintel AbsRel 0.327,以及异常值率23.90(KITTI)、9.55(NYU)、14.29(TUM)——在所有方法中平均排名最佳(2.0);最强的竞争方法(Li MD、Li MC、Wang WS、Xian RW)在平均相对性能上差65–82%。消融实验显示,每个单数据集模型的平均泛化能力都不如经过精心整理的小型ReDWeb基线,而对全部五个数据集进行帕累托最优混合,相比该基线平均性能提升22.4%(而简单混合仅提升19.5%),且剔除式MAE损失优于MSE和MAE变体。训练总计耗时约六个GPU月。
对SLAM的意义
MiDaS(其v2/v3 DPT骨干版本)在大约半个十年间是首选的现成单目深度模型,其尺度-偏移不变损失如今已成为深度学习中的标准做法(ZoeDepth、Depth Anything、Marigold)。对SLAM而言,相对深度可直接用作稠密先验——用于填补无纹理区域、正则化稠密建图,或在单目流水线中初始化深度——但需注意尺度和偏移必须由SLAM系统自身逐帧解决。
相关条目
- MonoDepth — 更早的自监督单数据集方法
- DPT — 后来成为MiDaS v3的ViT骨干网络
- ZoeDepth — 在MiDaS风格预训练之上增加度量尺度
- Depth Anything — 将该方案扩展到6200万张图像
- Metric3D — 通往度量深度(而非相对深度)的规范相机路线
- Scale ambiguity — 为什么仿射不变深度在单目SLAM中需要外部尺度