CVPR'2023 | Nerf-Stereo: 利用NeRF来训练双目立体匹配网络的新范式!

简介: CVPR'2023 | Nerf-Stereo: 利用NeRF来训练双目立体匹配网络的新范式!

640.png


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。

简而言之,在一个数据是新的黄金的世界里,获得灵活和可拓展的训练样本来释放深度立体网络的全部潜力仍然是一个待解决的问题。

贡献

640.png

Zero-Shot Generalization Results

基于上述问题,本文提出了一个新的范式来解决这一挑战。本文的主要贡献如下:

  • 提出了一种新的范式,利用神经渲染技术用户收集的图像序列,收集和生成立体训练数据,从而消除了对合成数据集、ground-truth深度或(甚至)真实立体图像对的需求
  • NeRF-Supervised训练方法结合了渲染的图像三元组和深度图以解决遮挡并增强细节
  • 在具有挑战性的立体数据集上实现了最先进的零样本(zero-shot)泛化结果,而不利用任何ground-truth或真实立体图像对

方法

640.png

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

此外,如上图所示,论文在每个双目立体像对的参考帧左侧再渲染第三张图像(第二个目标帧),从而产生一个完美对齐的立体图像三元组(说人话就是创建了一个三目系统来渲染三张图...)三目分别为:

  • 中间相机,可以渲染生成

  • 左相机,可以渲染生成

  • 右相机,可以渲染生成

640.png

最后,渲染得到的深度图,再加上相机内参,可以通过下面的公式提取视差图,以此来训练立体匹配网络。注意视差图与立体三元组的中心图像对齐

640.png

NeRF-Supervised Training Regime

上面生成的数据接下来将用于训练立体匹配模型。给定一个渲染立体图像三元组,论文通过向立体匹配网络提供作为立体对来预测视差图(注意论文种提出了两种视差图,一种是这里的预测视差图,一种是上文提到的渲染视差图)。然后,论文提出两种的NeRF-Supervised Training损失来进行训练:

Triplet Photometric Loss

第一种,论文利用图像重建来监督视差估计,估计出一种损失--光度损失。具体来说,首先利用估计的视差图来wrap目标帧,得到重接的参考帧,计算和之间的光度差进行的监督:

640.png

然而,这一公式在被遮挡的区域中缺乏合理的监督,如帧图像的左边界或每个深度不连续的区域的左侧,这在右侧图像中是不可见的。

为了克服这个限制,论文使用了上一节中提到的第三幅图像,也进行了一次图像重建(前面是将 warp到,这里将 warp到,思路一致,网络估计视差,视差补偿目标帧得到重建的参考值),进行的监督

通过计算,的遮挡区域的监督将会被补偿,最终计算的三元组光度损失:

640.png

上图显示了和立体像对计算时遮挡的影响,其有明亮的颜色显示。而在使用时,遮挡将被忽略,这样计算出的损失也更合理。最后,无纹理区域被掩模µ丢弃:

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+本文的数据集“对应的网络表现更好。

640.png

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泛化,超越了自监督和监督的方法。论文的工作代表了数据民主化的重大进步,将成功的关键交到了用户手中。

目录
相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
86 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
56 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
30天前
|
机器学习/深度学习 数据可视化
KAN干翻MLP,开创神经网络新范式!一个数十年前数学定理,竟被MIT华人学者复活了
【10月更文挑战第12天】MIT华人学者提出了一种基于Kolmogorov-Arnold表示定理的新型神经网络——KAN。与传统MLP不同,KAN将可学习的激活函数放在权重上,使其在表达能力、准确性、可解释性和收敛速度方面表现出显著优势,尤其在处理高维数据时效果更佳。然而,KAN的复杂性也可能带来部署和维护的挑战。论文地址:https://arxiv.org/pdf/2404.19756
40 1
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
46 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
271 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
|
1月前
|
机器学习/深度学习 算法
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
3月前
|
安全 Apache 数据安全/隐私保护
你的Wicket应用安全吗?揭秘在Apache Wicket中实现坚不可摧的安全认证策略
【8月更文挑战第31天】在当前的网络环境中,安全性是任何应用程序的关键考量。Apache Wicket 是一个强大的 Java Web 框架,提供了丰富的工具和组件,帮助开发者构建安全的 Web 应用程序。本文介绍了如何在 Wicket 中实现安全认证,
43 0
|
3天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
14 2
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。