©PaperWeekly 原创 · 作者|张承灏
学校|中科院自动化所硕士生
研究方向|深度估计
深度学习的蓬勃发展得益于大规模有标注的数据驱动,有监督学习(supervised learning)推动深度模型向着性能越来越高的方向发展。但是,大量的标注数据往往需要付出巨大的人力成本,越来越多的研究开始关注如何在不获取数据标签的条件下提升模型的性能,也就是自监督学习(self-supervised learning)/无监督学习(unsupervised learning)。
对于立体匹配(stereo matching),或者双目深度估计,像 LiDAR 这样的设备是极其笨重且昂贵的,它所能收集的只是稀疏的深度信息,而我们需要的是密集的深度图(dense depth map);而基于结构光的设备往往只能在室内场景下进行深度信息标注,在室外场景下难以达到较高的标注质量。因此,自监督学习在立体匹配中得到越来越多的关注。
本文主要梳理了近年来自监督学习在深度立体匹配中的应用方法,希望和大家一起探讨学习。
Stereo Matching
立体匹配也称作视差估计(disparity estimation),或者双目深度估计。其输入是一对在同一时刻捕捉到的,经过极线校正的左右图像
和
。而它的输出是由参考图像(一般以左图作为参考图像)中每个像素对应的视差值所构成的视差图
。
视差是三维场景中某一点在左右图像中对应点位置的像素级差距。当给定摄像机的基线距离 和焦距 之后,我们就可以从视差图中自动计算出深度 , 。所以深度和视差是可以互相转换,相互等价的。
立体匹配算法分为四个步骤:
匹配代价计算(matching cost computation);
代价聚合(cost aggregation);
视差计算(disparity computation);
视差精修(disparity refinement)
传统的视差估计算法主要分为两类:
局部算法:主要基于滑动窗口来计算局部窗口内的匹配代价;
全局算法:通过优化包括局部数据项和平滑项的能量函数来计算立体视图之间的相关性;
传统的视差估计算法对于各种应用场景都具有等价的视差估计能力,不会因为场景变化而产生较大的差异,因此有论文将传统方法估计的视差图作为带有噪声的标签来提升无监督视差估计的性能,本文后面会提到。
随着深度学习的发展以及大规模合成/仿真数据的推动,CNN 将上述四个步骤统一成一个端到端的网络,进一步提升了视差估计的性能。本文主要探讨的是自监督学习在基于卷积神经网络的视差估计算法中的应用情况。
Self-Supervised Learning
在基于卷积神经网络的立体匹配算法中,有监督学习基本上是回归的方法,即采用 smooth L1 loss 计算预测的视差值和真实视差值之间的误差来监督网络的学习。自监督学习算法则主要从图像自身的特征结构,视差图自身的特点或者借助传统算法来构造噪声标签来训练深度模型。
Image Reconstruction Loss
和自编码器类似,我们最容易想到的就是通过重建图像来作loss。假设原来的左图(参考图像)为 (i,j 表示像素点的位置坐标),根据其预测的视差 以及原有的右图