MonoDepth

Godard 2016 · 论文

一句话总结 — 一种自监督单目深度估计方法,通过左右光度一致性在立体图像对上训练:训练时用立体图像作为监督信号,但测试时仅需单张图像即可。

问题

监督式单目深度估计将深度视为一个回归问题,因此需要海量的真值深度,而即便是昂贵的激光扫描仪,在存在运动和反射的自然场景中也难以给出精确的深度值。相比之下,立体相机装置便宜且普及。MonoDepth 的核心洞见是在训练阶段将深度估计问题转化为一个图像重建问题:预测将一个校正视图变形到另一个视图的视差场 dd,等价于通过 d^=bf/d\hat{d}=bf/d(基线 bb,焦距 ff)预测深度,因此图像重建误差就成为训练信号,完全不需要深度标签。

方法与架构

网络。 一个受 DispNet 启发的全卷积编码器-解码器网络(3100 万参数;ResNet50 编码器变体有 4800 万参数),带有跳跃连接,并在四个尺度上输出视差。关键之处在于,网络仅从左图出发即可同时预测两幅视差图 dld^ldrd^r;右图仅用于损失计算。反向变形使用来自空间变换网络(spatial transformer networks)的完全可微双线性采样器:I~l=Ir(dl)\tilde{I}^l = I^r(d^l)。视差通过缩放的 sigmoid 被约束在 [0,0.3×width][0, 0.3\times\text{width}] 范围内;ELU 替代了 ReLU(后者会使中间尺度的视差过早冻结),反卷积则被最近邻上采样加卷积所替代。

损失函数。 总损失 C=s=14CsC=\sum_{s=1}^4 C_s,每个尺度组合三个镜像(左/右)项:

Cs=αap(Capl+Capr)+αds(Cdsl+Cdsr)+αlr(Clrl+Clrr)C_s=\alpha_{ap}(C_{ap}^{l}+C_{ap}^{r})+\alpha_{ds}(C_{ds}^{l}+C_{ds}^{r})+\alpha_{lr}(C_{lr}^{l}+C_{lr}^{r})

朴素的单方向采样会产生与错误图像对齐的视差,或产生”纹理复制”伪影以及深度不连续处的误差;在 dld^ldrd^r 之间强制互一致性可以同时修复这两个问题。权重设置:αap=αlr=1\alpha_{ap}=\alpha_{lr}=1,每个尺度 αds=0.1/r\alpha_{ds}=0.1/r。使用 Adam(学习率 10410^{-4},批大小 8)训练 50 个 epoch,在 Titan X 上耗时约 25 小时;使用翻转/颜色抖动数据增强。一个测试时后处理步骤(pp)对图像及其镜像的视差取平均,以抑制立体去遮挡带来的渐变伪影。测试时仅使用最精细尺度上的 dld^l;对于 512×256 图像,推理耗时低于 35 毫秒(28+ FPS)。

实验结果

对SLAM的意义

MonoDepth 开创了自监督深度估计的先河,并催生了一个庞大的研究方向(Monodepth2、PackNet 及其他众多后续工作);其左右一致性以及 SSIM + L1 光度损失机制已成为该领域的标准工具。对于 SLAM 而言,它开辟了一条可以从 SLAM 系统本就在采集的同类原始驾驶/机器人视频数据中训练出深度先验的道路——无需深度传感器——这也是 D3VO、MonoRec 以及现代单目稠密建图所依赖的自监督深度技术路线的基础。

相关条目