《Unsupervised Scale-consistent Depth ...》论文笔记
这篇笔记是关于3篇文章的合集,它们分别是:
- An unsupervised scale-invariant depth estimation and ego-motion learning process based on monocular video data.
- An unsupervised scale-invariant depth estimation method based on video data.
- 《An indoor depth estimation network architecture based on an auto-reciprocal rectification process, suitable for unsupervised learning》
参考代码:
1. 概述
介绍:在自监督的深度估计算法中MonoDepth2一个较为经典的方法,文章的整体pipeline与其存在一定的相似性,都是输入连续视频帧作为输入,通过构建光度重构误差进行深度预测和相机位姿的修正。在这篇文中比较鲜明的创新点主要包含如下几点:
1)对于视频中存在物体运动、遮挡与一些困难像素区域(无纹理或是若纹理)情况提出了一种新的reweight机制,从而去降低这些像素在整体训练过程中的影响,从而提升深度自监督网络的训练稳定性;
2)自监督的深度估计方法在训练和测试中是使用不同的帧切片进行的,这就导致其深度预测的scale是不一致的,这就对后期恢复真实轨迹信息(视觉里程计)带来了困难,对此文章提出了一种对于帧间scale进行约束的方法。在此基础上再套用一个SLAM的上层架构便可以得到基于视频自监督的SLAM;
不过需要注意的是文章提出的scale一致性并不能代表深度预测的一致性和平滑性,这一点需要进行区分。
这篇博文的内容源自上面所列的三篇文章,并非全面覆盖所有内容。本文着重探讨了深度估计技术,在论文2中提及了与SLAM相关的内容时选择了不同的侧重点而不做深入讨论
2. 方法设计
2.1 自监督深度估计pipeline
文章的深度估计pipeline见下图所示:

在上图中可以看到文章所介绍的方法与MonoDpeth2方法非常接近。它们都接收连续的2帧图像作为输入,并利用DepthNet和PoseNet建立图像之间的光度重构约束关系。这些输入图像(I_a,I_b)建立了深度估计结果(D_a,D_b)以及相机位姿参数P_{ab}之间的联系。在这种情况下,
光度重构误差可被视为以下形式:
L_p=\frac{1}{|V|}\sum_{p\in V}\lambda_i||I_a(p)-I_a^{'}(p)||_1+\lambda_s\frac{1-SSIM_{aa^{'}}(p)}{2}
其中V代表重投影后有效的像素集合,在此基础上按照输入图像作为引导对深度估计结果实施平滑约束:
L_s=\sum_p(e^{-\nabla I_a(p)}\cdot\nabla D_a(p))^2
经过上述自监督约束后,
接下来处理物体运动、遮挡以及困难像素区域等问题。
研究者发现这些像素所在的深度估计值在相邻两帧之间存在显著差异。
因此,
通过设计相应的网络约束形式来统一这些区域的深度预测结果,
从而提升整体深度估计的质量。
PS: 尽管文章中的算法通过对这种假设进行视觉辅助手段阐述, 但这一假设过于-stringent, 在后续细致研究的基础上仍需进行深入判断. 然而个人认为该假设仍显-stringent, 因此在后续的文章中借鉴了MonoDepth中的自动遮罩机制.
回过头再看一下文章对于深度差异的描述:
D_{diff}(p)=\frac{|D_b^a(p)-D_b^{'}(p)|}{D_b^a(p)+D_b^{'}(p)}
其中,D_b^{'}代表的是经过D_b差值之后的结果,含义就是帧间连续了那么就从帧间推导出序列连续。之所以这样做的原因是按照相机位姿warp之后的深度并不是在图像网格上对其的,因此使用差值的方式去减少误差,详见下图:

文章的目的在于完成warp后的深度差异最小化这一目标。
其对应的约束函数则定义为:
该公式计算所有顶点上深度差异的平均值。
进一步地,在光度重构中使用的权重掩膜则被定义为:
这一表达式表示用1减去各顶点处的深度差异。
就如文中所提及的ARN模块一样,在不同的数据集统计基础上
该模块主要聚焦于KITTI和NYU两个数据集各自的旋转平移性质
通过对其旋转平移性质进行深入分析研究,在后续章节中我们将会详细阐述这种关系及其对像素分布的影响

可以理解为NYU数据集由于手持设备操作导致了较多的旋转分量存在,在文章中特意设计了一个ARN模块来缓解因旋转带来的负面影响,并进一步提高整体自监督深度估计性能)。这一部分更多地提供了一种分析问题的方法论思路,在不同数据集的情况下表现会有所差异,在实际应用中的参考意义相对较小。
3. 实验结果
“SC-SfMLearner-Release”的性能比较:

“sc_depth_pl”的性能比较:

