SfM-Learner
Zhou 2017 · 论文
一句话总结 — 仅使用光度视图合成作为监督信号,从无标签单目视频中联合训练单视角深度网络和多视角位姿网络,开创了自监督深度+自运动这一研究方向。
问题
有监督的深度和位姿估计需要昂贵的真值——用于深度的LiDAR扫描,用于位姿的动作捕捉或高精度GPS/INS——这将训练数据限制在少数装备了传感器的数据集上。然而非结构化的单目视频基本上是免费且无限的。
其核心洞见是:视图合成系统”只有当其对场景几何和相机位姿的中间预测与物理真值相符时,才能持续表现良好”。因此,在视图合成这一”元任务”上训练网络,深度和自运动必然会作为中间预测涌现出来。
方法与架构
- 两个网络,仅通过损失函数耦合。 深度网络(DispNet风格的编码器-解码器结构,带跳跃连接和多尺度旁路预测;深度输出为,)只看单张目标帧。位姿网络(目标帧与源帧拼接;7个步幅为2的卷积,然后是一个通道数为的1×1卷积——每个源视角3个欧拉角+3维平移——再做全局平均池化)预测相对位姿。两者联合训练,但在测试时独立运行。
- 视图合成目标。 给定目标帧和源帧:
其中是被warp到目标帧坐标系的。每个目标像素通过下式投影到源视角:
(为内参,为预测深度),通过对4个相邻像素的可微双线性采样(空间变换网络)填充得到。只有深度和位姿都正确,warp结果才能保持光度一致性。
- 可解释性掩码。 第三个头(与位姿编码器共享,5个反卷积层,逐对做softmax)预测一个软掩码来加权损失,,用以降低运动物体、遮挡和非朗伯效应的影响;一个趋向1的交叉熵正则项防止出现全零这一无意义的掩码解。
- 梯度局部性修正。 双线性采样的梯度是局部的,因此完整目标函数被应用于一个图像金字塔上,并对深度的二阶梯度加上平滑惩罚:
- 训练。 使用TensorFlow;,;Adam(学习率0.0002,批大小4),约15万次迭代;128×416分辨率下的3帧片段(44,540个KITTI序列:训练40,109个/验证4,431个)。
实验结果
- KITTI深度(Eigen划分,697张测试图像,中值缩放): 在KITTI上训练时Abs Rel为0.208,加入Cityscapes预训练后为0.198——与有深度监督的Eigen等人方法(Fine版0.203)相当,接近有位姿监督的Garg等人方法(截断50米:0.201对0.169),但落后于同期的立体训练方法Godard等人(0.148)。考虑到零标签,这一结果相当出色。
- 可解释性消融实验的影响较小(0.221 → 0.208 Abs Rel)——KITTI在3帧片段范围内大多是静态的。
- 位姿(KITTI里程计09/10,5帧片段上的ATE): 0.021±0.017 / 0.020±0.015米——优于在同样5帧片段上运行的ORB-SLAM(short)(0.064±0.141 / 0.064±0.130)以及均值里程计基线,仅落后于ORB-SLAM(full),后者利用完整序列并结合回环检测和重定位(0.014±0.008 / 0.012±0.011)。
- Make3D零样本测试: 在没有任何Make3D训练的情况下Abs Rel为0.383——能捕捉全局布局,但与Make3D有监督方法相比仍有差距。
- 论文指出的固有局限:尺度模糊性依然存在,内参必须已知,静态场景/光度一致性假设限制了精度——这与限制直接法SLAM的假设相同。
对SLAM的意义
SfM-Learner表明经典SfM/SLAM目标——跨视角的光度一致性——可以作为训练信号,而不仅仅是运行时的代价函数,让网络从原始视频中学习深度和自运动。它的视图合成损失成为Monodepth2、D3VO以及众多自监督VO/深度系统的模板,这些系统现在将学习到的深度先验反馈回SLAM流水线。它标志着直接法SLAM与端到端学习型里程计之间的概念桥梁。