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