Title: NeRF-Supervised Deep Stereo
Paper: https://arxiv.org/pdf/2303.17603.pdf
Code: https://github.com/fabiotosi92/nerf-supervised-deep-stereo
导读
本文介绍了一个新颖的学习框架,可以轻松地训练立体匹配网络,而不需要任何ground-truth数据。利用最先进的神经渲染解决方案,论文从使用单个手持相机收集的图像序列生成立体训练数据。在此基础上,进行NeRF监督训练,同时利用渲染的立体三元组来补偿遮挡,深度图像作为代理标签(proxy labels)。这使得立体匹配网络能够预测清晰且详细的视差图。实验结果表明,按照这种方法训练的模型比现有的自监督方法在具有挑战性的Middlebury数据集上提高了30-40%,填补了与有监督模型的差距,并且大多数时候在zero-shot泛化方面表现优异。
背景
在双目立体匹配(双目深度估计)任务中,端到端的深度学习方法在提供足够的训练数据的情况下,在基准测试上提供出色的结果。这是它成功的关键因素,同时也是它最大的限制之一。想要获得标注的真实深度数据,需要用到其它的传感器(如激光雷达等),有较大的障碍。最近提出的方法主要通过自监督训练和合成数据集来解决这个问题。但是它们仍然存在问题:
- 自监督训练:预测效果在特殊区域(遮挡、非朗伯曲面等)远不如有监督训练。同时跨域的泛化能力较差。
- 合成数据集:高质量的合成数据集制作成本高且少。同时合成数据和真实数据存在gap。
简而言之,在一个数据是新的黄金的世界里,获得灵活和可拓展的训练样本来释放深度立体网络的全部潜力仍然是一个待解决的问题。
贡献
Zero-Shot Generalization Results
基于上述问题,本文提出了一个新的范式来解决这一挑战。本文的主要贡献如下:
- 提出了一种新的范式,利用神经渲染技术和用户收集的图像序列,收集和生成立体训练数据,从而消除了对合成数据集、ground-truth深度或(甚至)真实立体图像对的需求
- NeRF-Supervised训练方法结合了渲染的图像三元组和深度图以解决遮挡并增强细节
- 在具有挑战性的立体数据集上实现了最先进的零样本(zero-shot)泛化结果,而不利用任何ground-truth或真实立体图像对
方法
Framework Overview
上图展示了论文的NeRF-Supervised (NS)学习框架。首先从多个静态场景中收集多视图图像。然后,在每个场景上拟合一个NeRF来渲染立体图像对和深度图。最后,利用渲染的数据来训练任何现有的立体匹配网络。
Training Data Generation
首先介绍如何利用NeRF生成图像对。
Image Collection and COLMAP Pre-processing
从单个静态场景中利用单个手持相机(如手机)获取一组图像,并使用COLMAP估计相机内参和外参,收集到的数据用于训练一个神经辐射场(NeRF)。
NeRF Training
通过从收集的图像位置渲染一批光线的颜色,并针对收集的帧中的像素颜色优化L2损失,为每个场景训练独立的NeRF:
在本工作中,论文采用Instant-NGP作为NeRF引擎。
Stereo Pairs Rendering
训练好了NeRF后,论文为每个训练好的NeRF模型定义了多个虚拟立体相机(虚拟外参)。对于每个虚拟的立体相机,如上图所示,可以同时渲染任意空间分辨率的任意视点的无数的双目立体像对(左右目,左侧为参考帧,右侧为目标帧)
rendered left-center-right triplet
此外,如上图所示,论文在每个双目立体像对的参考帧左侧再渲染第三张图像(第二个目标帧),从而产生一个完美对齐的立体图像三元组(说人话就是创建了一个三目系统来渲染三张图...)三目分别为:
- 中间相机,可以渲染生成
- 左相机,可以渲染生成
- 右相机,可以渲染生成
最后,渲染得到的深度图,再加上相机内参,可以通过下面的公式提取视差图,以此来训练立体匹配网络。注意视差图与立体三元组的中心图像对齐。
NeRF-Supervised Training Regime
上面生成的数据接下来将用于训练立体匹配模型。给定一个渲染立体图像三元组,论文通过向立体匹配网络提供作为立体对来预测视差图(注意论文种提出了两种视差图,一种是这里的预测视差图,一种是上文提到的渲染视差图)。然后,论文提出两种的NeRF-Supervised Training损失来进行训练:
Triplet Photometric Loss
第一种,论文利用图像重建来监督视差估计,估计出一种损失--光度损失。具体来说,首先利用估计的视差图来wrap目标帧,得到重接的参考帧,计算和之间的光度差,进行的监督:
然而,这一公式在被遮挡的区域中缺乏合理的监督,如帧图像的左边界或每个深度不连续的区域的左侧,这在右侧图像中是不可见的。
为了克服这个限制,论文使用了上一节中提到的第三幅图像,也进行了一次图像重建(前面是将 warp到,这里将 warp到,思路一致,网络估计视差,视差补偿目标帧得到重建的参考值),进行的监督。
通过计算,的遮挡区域的监督将会被补偿,最终计算的三元组光度损失:
上图显示了和立体像对计算时遮挡的影响,其有明亮的颜色显示。而在使用时,遮挡将被忽略,这样计算出的损失也更合理。最后,无纹理区域被掩模µ丢弃:
Rendered Disparity Loss
第二种,论文还通过利用匹配网络预测的视差图和NeRF渲染视差图(渲染深度图,深度图转视差图)之间差异的额外损失来进一步辅助光度损失:
为了解决由NeRF渲染的深度图经常显示出伪影和大误差问题,论文采用基于渲染不确定性的过滤机制来仅保留最可靠的像素
上述的两项损失相加,权重平衡了光度和视差损失的影响,就完成了 NeRF 监督训练:
实验
Comparison with MfS
论文通过NeRF-Supervised (NS)训练了三个立体匹配网络(PSMNet、CFNet、RAFT-Stereo作为backbone)来进一步评估本文渲染的数据集质量以及训练方法(NS)的有效性,并与目前最先进的从单个图像中生成立体像对的最新方法Mfs做对比。
表1 Direct Comparison with MfS
上表显示了NS与MfS训练的三个backbone所获得的结果的对比——包括他们提出的数据集(50万张图像)和本文的数据集(only 270 scenes)。最终,使用本文所提数据集并且采用NS监督训练的网络,总是比”Mfs+它的数据集“以及”Mfs+本文的数据集“对应的网络表现更好。
Qualitative Comparison on Midd-A H (top) and Midd-21 (bottom) Datasets
上图显示了Mfs用它的数据集训练的RAFT-Stereo和本文NS训练的RAFT-Stereo的对比。结果显示了后者的更详细的预测,特别是在薄结构中,对于没有经过ground truth训练的方法,这是前所未有的质量。
Zero-Shot Generalization Benchmark
上表显示,NS训练的RAFT-Stereo在整个Middlebury都是最好的(超出其它方法30-40%),与用带有GT的仿真数据集SceneFlow训练的RAFT-Stereo不相上下。
总结
论文提出了一个开创性的pipeline,利用NeRF来训练深度立体匹配网络,而不需要ground truth深度或立体摄像机。通过用一个低成本的手持相机捕捉图像,通过论文提出的NeRF-Supervised范式生成成千上万的立体对进行训练。这种方法导致了最先进的Zero-Shot泛化,超越了自监督和监督的方法。论文的工作代表了数据民主化的重大进步,将成功的关键交到了用户手中。