论文阅读笔记:Digging Into Self-Supervised Monocular Depth Estimation
论文阅读笔记:Digging Into Self-Supervised Monocular Depth Estimation
- 1 背景
- 2 创新点
- 3 方法
- 4 模块
- 4.1 自监督训练
- 4.2 优化自监督深度估计
- 4.2.1 每个像素的最小重建损失
- 4.2.2 自动掩码静态像素
- 4.2.3 多尺度估计
- 4.2.4 最终的训练损失
- 4.3 额外考虑
- 5 效果
1 背景
大规模获取每像素的GT深度数据具有挑战性。为了克服这一限制,自监督学习已成为执行单目深度估计的训练模型的一种有前景的替代方案。在本文中,作者提出了一系列改进,与竞争的自监督方法相比,这些改进共同产生了定量和定性改进的深度图。
生成高质量的颜色深度很有吸引力,因为它可以廉价地补充自动驾驶汽车中使用的激光雷达传感器,并实现新的单照片应用,例如图像编辑和 AR 合成。解决深度问题也是使用大型未标记图像数据集对下游判别任务的深度网络进行预训练的有效方法。然而,为监督学习收集具有准确GT深度的大型且多样化的训练数据集本身就是一个艰巨的挑战。作为替代方案,最近的几种自监督方法表明,可以仅使用同步立体对或单目视频来训练单目深度估计模型。
在这两种自监督方法中,单目视频是立体监督的一个有吸引力的替代方案,但它也带来了一系列挑战。除了估计深度之外,模型还需要在训练期间估计时间图像对之间的自我运动。这通常涉及训练一个姿态估计网络,该网络将有限的帧序列作为输入,并输出相应的相机变换。相反,使用立体数据进行训练使得相机姿态估计成为一次性离线校准,但可能会导致与遮挡和纹理复制伪影相关的问题。
2 创新点
提出了三种架构和损失创新,这些创新相结合,在使用单目视频、立体对或两者进行训练时,可以极大地改进单目深度估计:
(1)一种新颖的外观匹配损失,可以解决使用单目时出现的像素遮挡问题监督
(2)一种新颖且简单的自动掩蔽方法,用于忽略在单目训练中未观察到相对相机运动的像素
(3)多尺度外观匹配损失,以输入分辨率执行所有图像采样,从而减少深度伪影。
3 方法
自监督单目训练的研究通常探索日益复杂的架构、损失函数和图像形成模型,所有这些最近都有助于缩小与完全监督方法的差距。本文证明,一个令人惊讶的简单模型和相关的设计选择可以带来更好的预测。特别是,本文提出
(i)最小重投影损失,旨在稳健地处理遮挡
(ii)减少视觉伪影的全分辨率多尺度采样方法
(iii)自动掩蔽损失以忽略训练像素违反相机运动假设。
4 模块
本文的深度预测网络采用单一颜色输入 I t I_t It 并生成深度图 D t D_t Dt 。首先回顾单目深度估计自监督训练背后的关键思想,然后描述深度估计网络和联合训练损失。
4.1 自监督训练
自监督深度估计将学习问题定义为一种新颖的视图合成问题,通过训练网络从另一幅图像的角度预测目标图像的外观。通过限制网络使用中间变量(在本文的例子中为深度或视差)执行图像合成,可以从模型中提取可解释的深度。这是一个不适定问题,因为每个像素可能存在大量不正确的深度,在给定这两个视图之间的相对姿态的情况下,可以正确地重建新颖的视图。经典的双目和多视图立体方法通常通过强制深度图的平滑度以及在通过全局优化(例如,求解每像素深度)时计算补丁上的照片一致性来解决这种模糊性。
本文也将问题表述为训练时光度重投影误差的最小化。将每个源视图 I t ′ I_{t'} It′ 相对于目标图像 I t I_t It 的姿态的相对姿态表示为 T t → t ′ T_{t→t'} Tt→t′ 。本文预测一个密集的深度图 D t D_t Dt,它可以最小化光度重投影误差 L p L_p Lp ,其中
这里 p e pe pe 是光度重建误差,例如像素空间中的 L 1 L1 L1 距离; p r o j ( ) proj() proj() 是 I t ′ I_{t'} It′ 中投影深度 D t D_t Dt 的二维坐标, < > <> <> 是采样运算符。为了简化符号,假设所有视图的预先计算的内在函数 K K K 是相同的,尽管它们可以不同。按照[21],使用双线性采样对源图像进行采样,这是局部可微分的,并且按照[75, 15]使用 L 1 L1 L1 和 S S I M SSIM SSIM 制作光度误差函数 p e pe pe ,即
其中 α = 0.85 α = 0.85 α=0.85 。如[15]中所示,使用边缘感知平滑度
其中 KaTeX parse error: Undefined control sequence: \* at position 5: d_t^\̲*̲ = d_t/\bar{d_t… 是[62]中的平均归一化逆深度,以阻止估计深度的收缩。
在立体训练中,源图像 I t ′ I_{t'} It′ 是立体图像对中的第二个视图,它具有已知的相对姿态。虽然单目序列的相对姿势事先未知,但[76]表明可以训练第二个姿态估计网络来预测投影函数 p r o j proj proj 中使用的相对姿势 T t → t ′ T_{t→t'} Tt→t′ 。在训练过程中,同时求解相机姿态和深度,以最小化 L p L_p Lp 。对于单目训练,使用时间上与 I t I_t It 相邻的两个帧作为源帧,即 I t ′ ∈ { I t − 1 , I t + 1 } I_{t'} ∈ \{I_{t−1}, I_{t+1}\} It′∈{It−1,It+1} 。在混合训练(MS)中, I t ′ I_{t'} It′ 包括时间相邻的帧和相反的立体视图。
4.2 优化自监督深度估计
现有的单目方法产生的深度质量低于最好的完全监督模型。为了弥补这一差距,本文提出了几项改进,可以显着提高预测深度质量,而无需添加需要训练的额外模型组件,如图3。
4.2.1 每个像素的最小重建损失
当计算多个源图像的重投影误差时,现有的自监督深度估计方法将重投影误差平均到每个可用的源图像中。这可能会导致像素出现问题,这些像素在目标图像中可见,但在某些源图像中不可见(“Figure 3” (Godard 等, 2019, p. 3) (pdf) (c))。如果网络预测此类像素的正确深度,则被遮挡的源图像中的相应颜色可能与目标不匹配,从而导致较高的光度误差损失。这些有问题的像素来自两个主要类别:由于图像边界处的自我运动而导致的视野外像素和被遮挡的像素。视野外像素的影响可以通过在重投影损失中屏蔽此类像素来减少,但这并不能解决遮挡问题,其中平均重投影可能会导致模糊的深度不连续性。
本文提出了一种同时解决这两个问题的改进方案。在每个像素处,只使用最小值,而不是对所有源图像的光度误差进行平均。因此,最终的每像素光度损失是
图4为这种损失在实践中的示例。
使用最小的重投影损失可以显著减少图像边界处的伪影,提高遮挡边界的清晰度,并提高准确性,如表2。
图4中的 L L L 和 R R R 反了,看着是按时序采集的意思。右上图中的颜色表示选择底部的哪些源图像进行式-4的匹配。
4.2.2 自动掩码静态像素
自监督的单目训练通常在移动摄像机和静态场景的假设下进行。当这些假设被打破时,例如当摄像机静止或场景中有物体运动时,性能可能会受到很大影响。对于通常在训练期间观察到的移动的物体,这个问题可以在预测的测试时间深度图中表现为无限深的“孔”,如图2。这激发了本文的第二个贡献:一种简单的自动掩码方法,可以过滤掉序列中从一帧到下一帧外观不会改变的像素。这具有让网络忽略与相机以相同速度移动的对象的效果,甚至可以在相机停止移动时忽略单目视频中的整帧。
本文也对损失μ应用了逐像素蒙版,选择性地加权像素。然而,与之前的工作相比,本文的掩码是二进制的,因此 μ ∈ { 0 , 1 } μ ∈ \{0, 1\} μ∈{0,1} ,并且是在网络的正向传递上自动计算的,而不是从对象运动中学习或估计的。作者观察到,在序列中相邻帧之间保持不变的像素通常表示静态相机、与相机相对平移相等的物体或低纹理区域。因此,将 μ 设置为仅包括翘曲图像的重投影误差 I t ′ → t I_{t'→t} It′→t 低于原始未翘曲源图像 I t ′ I'_t It′ 的像素损失,即
其中 [] 是 Iverson 括号。在摄像机和另一个对象都以相似的速度移动的情况下, μ μ μ 可以防止图像中保持静止的像素污染损失。同样,当相机处于静态状态时,遮罩可以过滤掉图像中的所有像素,如图5。本文通过实验表明,这种简单且廉价的损失修改带来了显着的改善。
4.2.3 多尺度估计
由于双线性采样器的梯度局部性,为了防止训练目标卡在局部最小值,现有模型使用多尺度深度预测和图像重建。在这里,总损失是解码器中每个尺度上各个损失的组合。[12, 15] 计算每个解码器层分辨率下图像上的光度误差。作者观察到,这倾向于在中等较低分辨率深度图中的大型低纹理区域创建“孔”,以及纹理复制伪影(深度图中的细节错误地从彩色图像传输)。在光度误差不明确的低纹理区域中,深度中的孔可能以低分辨率出现。这使得深度网络的任务复杂化,现在可以自由地预测不正确的深度。
受立体重建技术的启发,提出了对这种多尺度公式的改进,其中将视差图像的分辨率和用于计算重投影误差的彩色图像的分辨率解耦。本文不是计算模糊的低分辨率图像上的光度误差,而是首先将较低分辨率的深度图(从中间层)上采样到输入图像分辨率,然后重新投影、重新采样并计算这个较高输入分辨率下的误差 p e pe pe ,如图3。此过程类似于匹配色块,因为低分辨率视差值将导致高分辨率图像中的整个像素“色块”变形。这有效地限制了每个比例尺的深度图,使其朝着相同的目标工作,即尽可能准确地重建高分辨率输入目标图像。
4.2.4 最终的训练损失
作者将每个像素的平滑度和掩蔽的光度损失( L = μ L p + λ L s L = μL_p + λL_s L=μLp+λLs )结合起来,并平均每个像素、尺度和批次。
4.3 额外考虑
本文的深度估计网络基于一般的 U-Net 架构,即编码器-解码器网络,具有跳跃连接,使其能够表示深度抽象特征和局部信息。作者使用 ResNet18 作为编码器,与现有工作中使用更大、更慢的 DispNet 和 ResNet50 模型相比,它包含 11M 参数。从 ImageNet上预训练的权重开始,并表明与从头开始训练相比,这提高了紧凑模型的准确性,如表2。本文的深度解码器输出为 sigmoid,其他位置为 ELU 非线性。作者将 σ 形输出转换为 D = 1/(aσ + b) 的深度,其中选择 a 和 b 以将 D 限制在 0.1 到 100 个单位之间。在解码器中使用反射填充代替零填充,当样本落在图像边界之外时,返回源图像中最近的边界像素的值。这显著减少了现有方法中发现的边界伪影,例如 [15]。
对于姿态估计,使用轴-角度表示来预测旋转,并将旋转和平移输出缩放 0.01。对于单目训练,使用三帧的序列长度,而姿态网络由 ResNet18 形成,经过修改以接受一对彩色图像(或六个通道)作为输入,并预测单个 6-DoF 相对姿态。以 50% 的几率执行水平翻转和以下训练增强:随机亮度、对比度、饱和度和色相抖动,范围分别为 ±0.2、±0.2、±0.2 和 ±0.1。重要的是,颜色增强仅适用于馈送到网络的图像,而不适用于用于计算 L p L_p Lp 的图像。馈送到姿态和深度网络的所有三个图像都使用相同的参数进行增强。
5 效果
本文的方法在KITTI 2015上与其他SOTA的对比效果可见表1。