双目深度估计中的自监督学习概览
©PaperWeekly 原创 · 作者|张承灏
学校|中科院自动化所硕士生
研究方向|深度估计
深度学习的蓬勃发展得益于大规模有标注的数据驱动,有监督学习(supervised learning)推动深度模型向着性能越来越高的方向发展。但是,大量的标注数据往往需要付出巨大的人力成本,越来越多的研究开始关注如何在不获取数据标签的条件下提升模型的性能,也就是自监督学习(self-supervised learning)/无监督学习(unsupervised learning)。
本文主要梳理了近年来自监督学习在深度立体匹配中的应用方法,希望和大家一起探讨学习。
匹配代价计算(matching cost computation); 代价聚合(cost aggregation); 视差计算(disparity computation); 视差精修(disparity refinement)
局部算法:主要基于滑动窗口来计算局部窗口内的匹配代价; 全局算法:通过优化包括局部数据项和平滑项的能量函数来计算立体视图之间的相关性;
在基于卷积神经网络的立体匹配算法中,有监督学习基本上是回归的方法,即采用 smooth L1 loss 计算预测的视差值和真实视差值之间的误差来监督网络的学习。自监督学习算法则主要从图像自身的特征结构,视差图自身的特点或者借助传统算法来构造噪声标签来训练深度模型。
Image Reconstruction Loss
和自编码器类似,我们最容易想到的就是通过重建图像来作loss。假设原来的左图(参考图像)为 (i,j 表示像素点的位置坐标),根据其预测的视差 以及原有的右图 , 我们可以通过 warping 操作得到重构后的左图 。这里的 warping 操作是根据左图每个像素点对应的视差值,在右图中寻找对应的像素点再差值得到的。
在 PyTorch 中用 grid_sample 函数来实现,采样器的原理是基于 Spatial Transformer Networks(STN) [1] 得到的,对同一行中的两个像素进行双线性采样,这是一个可微的过程。
设 N 为像素点的个数,那么最简单的图像重构损失函数定义如下:
通常,经过重构的图像可能具有很大的失真,仅仅采用重构图像和原图的比较还不够,我们会引入图像质量评价中的图像相似度指标 SSIM [2] 来综合的计算重构图像和原始图像在光度上的误差。
这里 α 是基本重构误差和相似度误差的权重。一般采取单尺度的 SSIM 以及简化的 3*3 滤波,α 一般取 0.85,相似度误差占据更大的比重。
Disparity Smoothness Loss
由于我们需要密集的视差图,为了使得视差在局部上保持平滑,我们可以对视差梯度 ∂d 进行 L1 惩罚。由于深度不连续性通常出现在图像的梯度上,因此图像的梯度 ∂I 也被考虑进来。
这里是分别使用了 x 方向和 y 方向的视差梯度和图像梯度。
Left-Right Disparity Consistency Loss
以上两种损失函数是自监督学习中最基本,最常用的损失函数。下面这篇论文提出了左右视差一致性损失,虽然是基于单目图像的,但是也可以用在双目深度估计上。
论文标题:Unsupervised Monocular Depth Estimation with Left-Right Consistency
论文来源:CVPR 2017 Oral
论文链接:https://arxiv.org/abs/1609.03677v3
开源代码:https://github.com/mrharicot/monodepth
论文提出的框架如下:
和原有方法不同,输入是左图(双目是左右图),输出不仅是以左图为参考图像的视差图 , 还有以右图为参考图像的视差图 。除了应用上述两种损失函数外,还提出了一种左右视差一致性损失。
我们可以将以右图为参考图像的 作为 warping 操作的输入图像,再以左图为参考图像的 作为输入的视差图,经过 warping 操作就会得到 的重构视差图 。注意,这里得到的是重构的视差图,而非重构的左图。因此,左右视差一致性损失可以写作:
Weighted Local Contrast Normalization
下面这篇论文通过分析重构误差的缺点,提出了一种新的加权局部对比度归一化操作,从而优化了重构误差损失函数。
论文标题:ActiveStereoNet: End-to-End Self-Supervised Learning for Active Stereo Systems
论文来源:ECCV 2018 Oral
论文链接:https://arxiv.org/abs/1807.06009v1
复现代码:https://github.com/meteorshowers/StereoNet-ActiveStereoNet
论文提出了一个针对主动视觉的端到端的深度学习方法,我们主要来看其对于重构误差的分析和改进。作者认为光度重构误差具有以下两点不足:
在视觉设备感知外部环境时,接收到的信号强度与距离的平方成反比,这导致光度对距离具有明显的依赖。
明亮的像素点往往比暗的像素点更容易产生较大的残差。
基于以上两个观察,深度网络在训练时倾向于在容易学习的地方学习(比如,明亮的区域),然后对其他区域进行平滑处理(比如,较暗的区域)。
因此,对于较暗的像素点,它需要更准确的深度信息来监督才能学得比较好。但是在自监督学习中,我们缺少的正是这种准确的深度信息(真实的视差标签),这样就会导致较暗的区域学得很差。并且,当前景和背景差异较大时,这种损失会在被遮挡的区域产生更大的误差,导致网络无法再继续学习下去。
论文提出的加权局部对比度归一化(WLCN)就是用来移除亮度与视差的相关性。具体来说,对每一个像素点,计算以其为中心的 9*9 区域内的所有像素点的局部均值 μ 和标准差 σ,这些局部的统计量用来归一化当前的像素点。
其中 η 是一个小常量。下图展示了 LCN 归一化后的结果。
由上图可以看出,对于仅使用重构误差(左图),在红色框中较亮的部位对应的重构误差较大。而采用 LCN 对输入图像归一化处理后(中间图),这些重构误差不会过渡的偏向明亮的区域。这表明 LCN 不仅消除了光度和视差之间的联系,而且在遮挡区域能够提供较好的残差。
但是另一个问题是,在弱纹理区域局部标准差 可能会趋近于 0,从而导致这部分的损失偏大。为了解决这个问题,作者提出使用参考图像在 9*9 局部区域的标准差 来作一个重新加权(re-weight)。因此,重构误差可以重写为:
从上面图中的右边可以看出,经过重加权之后弱纹理区域的误差也变小了,这是因为这部分对应的权值 也趋近于 0 了。
Guided Confidence Loss
除了挖掘图像和视差本身的特性,我们还可以从外部借助一些带有噪声的标签作为监督信息。在本文开头介绍过,传统方法虽然没有基于深度学习的方法性能高,但是对各种场景具有较好的泛化能力。
下面这篇论文就是借助传统方法先对图像估计一次视差,再通过置信度的学习来自动的鉴别带有噪声的标签,从而实现无标签条件下的深度模型学习。
论文标题:Unsupervised Domain Adaptation for Depth Prediction from Images
论文来源:TPAMI 2019
论文链接:https://arxiv.org/abs/1909.03943v1
复现代码:https://github.com/CVLAB-Unibo/Unsupervised_Depth_Adaptation
从 (e) 到 (h) 我们可以看出, 越小,监督信息越多,但是相应的噪声也越多; 越大,虽然噪声减少了,但是准确的监督信息也变少了。因此,超参数 也可以纳入到损失函数中一起优化。由于在优化过程中, 容易收敛到1,作者提出了下面的改进版损失函数:
将 看做是一个可学习的变量,即上面的描述方式; 将 看做是一个简单网络 的输出,该网络可以采用 3 个 3*3 的卷积层,后面接一个全局平均池化得到。
从上图可以看出,无论是将 看作学习的变量(倒数第二行)还是网络的输出(最后一行),都不如人工交叉验证效果好(倒数第三行)。
上面几篇论文的分析主要关注的是自监督学习,论文中还有其他亮点没有阐述,大家如果感兴趣还可以详细阅读论文。从上面的分析中我们可以归纳出,近年来自监督学习在立体匹配中主要从下面三个方面来考虑:
从图像自身的特性出发:如图像重构损失,图像相似度计算,加权局部对比度归一化;
从视差图的特点出发:如视差平滑损失;
从传统方法中借鉴:如引导置信损失。
未来的自监督学习我认为可以从两方面着手,一是探索如何将图像本身的特性和视差的关系构建起来,因为图像的 RGB 信息本身和视差信息是没有关系的,图像重构误差本身并不等价于视差回归损失。二是如何获取更加准确的稀疏监督信息,毕竟只需要稀疏的监督信息就能学出很好的视差估计网络,但是前提是监督信息必须准确,也就是少而精。
点击以下标题查看更多往期内容:
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
📝 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。