作者 | Fangjinhua Wang 编辑 | 3D视觉之心
点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
本文只做学术分享,如有侵权,联系删文
近年来,随着深度学习技术的发展,基于学习的MVS方法相较于传统方法取得了显著的进展。本综述[1](Learning-based Multi-View Stereo: A Survey)对这些基于学习的方法进行了分类:
基于深度图
基于体素
基于NeRF(神经辐射场)
基于3D高斯投影
大规模前馈方法。
其中,基于深度图的方法因其简洁、灵活和可扩展性被广泛关注。在综述中,文章对当前文献进行了全面回顾,探讨了各类基于学习的MVS方法的表现,并对这些方法在流行基准上的效果进行了总结。文章还讨论了该领域未来的研究方向,旨在推动3D重建技术的发展。
基础知识
基于深度图的多视图立体视觉(MVS)方法,包括大多数传统和基于学习的方法,通常由几个组件组成:相机校准、视图选择、多视图深度估计和深度融合。在本节中,我们介绍这些组件,以便读者能够清晰地了解MVS问题。需要注意的是,相机校准和视图选择也是其他基于学习的方法的组成部分。
相机校准
相机校准是确定相机的内参和外参以准确理解其几何和特性的重要过程。它是MVS的基础步骤,确保后续的重建过程基于准确且一致的几何信息,最终导致更加可靠和精确的场景3D表示。通常,通过运行现成的结构光或SLAM算法来获取校准后的相机参数。这些相机参数包括外参矩阵T = [R|t]和内参矩阵K。基于深度图的MVS方法通常需要一个限定的深度范围[dmin, dmax]以提高估计的准确性。对于离线方法,深度范围可以通过将稀疏点云从结构光投影到每个视角并计算最小和最大z值来估算。相比之下,在线方法通常设置恒定的深度范围,例如[0.25m, 20.00m],因为场景规模通常是固定的。
视图选择
视图选择是重建中的一个重要步骤,平衡三角测量质量、匹配精度和视图视锥体的重叠非常重要。目前,视图选择主要有两种策略。
首先,对于大多数在线MVS深度估计方法,当一个帧的姿态与先前关键帧的姿态有足够的差异时,该帧会被选择为关键帧。然后,每个关键帧采用几个先前的关键帧来估计深度。GP-MVS提出了一种启发式的姿态-距离度量策略,用于选择合适的视图。
其次,对于大多数离线MVS方法,视图选择是通过使用结构光获得的稀疏点云来完成的。对于参考视图i,MVSNet通过计算与其邻近视图j的得分来选择视图,该得分根据两个视图观察到的3D点P之间的基线角度计算而来。几乎所有后续的离线MVS方法都使用了相同的策略。
基于平面扫描的多视图深度估计
为了形成更适合卷积操作的结构化数据格式,大多数基于学习的MVS方法依赖于平面扫描算法来计算匹配代价。平面扫描算法通过沿深度方向离散化深度空间为一组前平行平面,并评估这些平面上的几何表面分布。它的操作通过在目标空间中扫描概念平面、计算图像之间的单应性,并根据不同视图的一致性选择深度值,从而最终实现精确的3D重建。
深度融合
对于基于深度图的MVS方法,在估计所有深度图后,需要将它们融合成稠密的3D表示,如点云或网格。在线MVS方法通常采用TSDF(截断的有符号距离函数)融合,将深度图融合成一个TSDF体积,然后使用Marching Cubes算法提取网格。然而,深度图中通常存在异常值,这可能会降低重建精度。为了克服这个问题并提高准确性,离线MVS方法通常在融合为点云之前进行深度图过滤,主要采用光度一致性过滤和几何一致性过滤。
数据集和基准
常用的公共MVS数据集和基准通常用于训练和评估。数据集如ScanNet、7-Scenes、DTU、Tanks and Temples和ETH3D等提供了相应的真值数据,包括相机姿态、深度图、点云和网格。不同数据集的目标不同,涵盖了室内外各种场景的3D重建任务。
评估指标
根据真值数据,评估指标可以分为2D指标和3D指标。2D指标通常用于在线MVS方法来评估深度图的精度,而3D指标则被广泛用于离线MVS方法来评估重建的点云质量。常见的3D评估指标包括精度/准确性、召回率/完整性和F-Score,F-Score是精度和召回率的调和平均值,用于衡量重建方法的整体性能。
基于深度估计的监督方法
这些方法通过深度估计来进行3D重建。典型的基于深度图的MVS流程主要包括特征提取、代价体积构建、代价体积正则化和深度估计。以MVDepthNet和MVSNet为代表,分别展示了在线和离线MVS方法的流程。
特征提取
考虑到效率,大多数方法使用简单的卷积神经网络(CNN)结构从图像中提取深度特征,例如ResNet、U-Net和FPN。对于在线MVS方法,特征提取网络通常与实时操作目标相结合。DeepVideoMVS结合了MNasNet(轻量级且低延迟)与FPN,而SimpleRecon则利用ResNet18的前两个块和EfficientNet-v2编码器,在保持效率的同时显著提高了深度图的精度。对于离线MVS方法,MVSNet使用了堆叠的八层2D CNN来为所有图像提取深度特征。多尺度方法进一步使用多尺度RGB图像或FPN来进行多尺度特征提取,以便在多个尺度上进行估计。最近,许多后续工作更加注重特征提取,以提高深度特征的表示能力。
代价体积构建
对于在线和离线MVS方法,代价体积通过平面扫描算法构建。
在线MVS: 为了减少计算量并提高在线应用的效率,在线MVS方法通常构建3D代价体积,存储每个像素及深度采样的单一匹配代价。MVDepthNet和GP-MVS计算参考视图与每个源视图之间的逐像素强度差异作为匹配代价。如果有多个源视图,代价体积将被平均。DeepVideoMVS和MaGNet则计算参考特征与变换后的源特征之间的逐像素相关性作为代价。
离线MVS: 离线MVS方法主要关注通过高分辨率图像重建高质量的稠密几何体。为了编码更多的匹配信息并提高质量,离线方法通常构建4D代价体积,每个像素及深度采样对应一个匹配代价。MVSNet提出了一种基于方差的代价度量,将N个源视图的特征体积求平均,然后通过方差计算匹配代价。为了减少维度,CIDER引入了分组相关性来计算参考视图和每个变换后的源视图之间的轻量级代价体积。
代价体积正则化
通常,原始代价体积可能存在噪声,因此需要通过正则化引入平滑性约束,以进行深度估计。代价体积正则化是一个关键步骤,通过从大的感受野中聚合匹配信息来对代价体积进行细化。
在线MVS: 2D编码器-解码器架构通常用于信息聚合。MVDepthNet将参考图像与代价体积连接起来,然后输入到一个带有跳跃连接的编码器-解码器架构中。DeepVideoMVS在代价体积上应用了2D U-Net,并在所有分辨率上添加了图像编码器和代价体积编码器之间的跳跃连接。
离线MVS: 大多数使用4D代价体积的离线MVS方法有三种主要的正则化策略:直接3D CNN、粗到细和RNN。MVSNet采用3D U-Net对代价体积进行正则化,从较大的感受野中聚合上下文信息。
迭代更新
与传统方法不同,一些方法采用迭代更新来逐步细化深度图。迭代方法引入了一种动态的深度图估计方法,通过多次迭代逐步改进重建过程。这种迭代细化特别适用于初始估计可能较为粗糙或不准确的场景。
一些方法结合了迭代PatchMatch与深度学习。PatchMatch算法主要包括随机初始化、向邻居传播假设和评估以选择最佳解。PatchMatchNet提出了自适应传播和代价聚合模块,使得PatchMatch能够更快收敛并生成更精确的深度图。
深度估计
对于一个4D代价体积,通常在代价体积正则化后生成一个概率体积,然后用于深度估计。目前,几乎所有基于学习的MVS方法都使用回归(软argmax)或分类(argmax)来预测深度。
MVSNet使用软argmax通过计算概率体积沿深度方向的期望值来回归深度图。对于粗到细方法,软argmax在每个阶段应用,用于回归深度图。而RNN正则化方法则主要采用argmax操作,将概率最高的深度样本作为最终预测。
深度细化
由于MVS生成的初始深度估计可能存在噪声,因此通常使用细化来提高精度。许多方法采用不同的策略来进一步优化深度图,从而获得更高质量的重建结果。
置信度估计
光度一致性置信度在离线MVS方法的深度融合过程中非常重要。大多数离线MVS方法从概率体积中提取置信度来过滤掉不可靠的估计值。此外,一些方法还通过深度学习来估计置信度,用于进一步细化结果。
损失函数
在线MVS: 许多方法通过对预测的反深度图进行回归损失计算来进行训练。
离线MVS: 基于深度估计策略,损失函数主要分为回归和分类。使用软argmax的回归方法通常采用L1损失,而采用argmax的分类方法则使用交叉熵损失。
基于深度估计的无监督与半监督方法
前面介绍的监督式MVS方法高度依赖于通过深度传感设备获得的准确的深度图真值数据。这不仅使数据收集过程变得复杂、耗时且昂贵,还将这些方法的应用限制在少数数据集和主要室内场景中。为了使MVS在更广泛的现实世界场景中得到实际应用,必须考虑替代的无监督学习方法,这些方法在不依赖真值深度数据的情况下,能够提供与监督方法相媲美的精度。目前的无监督方法基于光度一致性假设,即同一3D点的不同视图中对应像素应具有相似的特征。这些方法分为端到端方法和多阶段方法。SGT-MVSNet是目前唯一的半监督方法。
光度一致性假设
在无监督深度图预测领域,现有方法通常通过增强参考视图与源视图之间的相似性来实现光度一致性。这个关键概念围绕着通过将源视图对齐到参考视图的方式来提升图像间的相似度。
具体来说,给定参考图像的深度估计,使用公式将参考像素投影到后续图像中。
然后,通过在由于投影过程导致的像素偏移位置上进行双线性采样,生成源图像的扭曲版本。此外,通常生成一个二进制掩码,用于排除投影到图像边界之外的无效像素。
光度一致性损失可以表示为:
其中, 表示像素级的梯度,而 表示元素级的Hadamard乘积。在大多数情况下,结构相似性损失和深度平滑损失也会被引入计算中,以提高训练的稳定性和加快收敛速度。
结构相似性损失通过结构相似性指数(SSIM)来评估合成图像与参考图像之间的上下文一致性,SSIM的定义如下:
其中, 和 分别表示图像的均值和方差, 和 是用于避免数值问题的常数。
平滑损失项的引入是为了在图像和深度图对齐时促进深度信息的连续性。平滑损失的计算如下:
其中, 和 分别表示沿x和y轴的梯度, 是均值归一化的反深度。
端到端无监督方法
端到端方法是指从头开始训练的无监督MVS方法,这些方法与监督方法使用相同的输入信息(如第II节中介绍的),但不使用真值深度进行监督。相反,它们通常将光度一致性、结构相似性和光滑性约束作为损失函数的一部分。
然而,无监督MVS的瓶颈在于找到准确的光度对应关系。实际场景中,非朗伯表面、相机曝光变化和遮挡会使光度一致性假设失效,从而导致“模糊监督”的问题。
为了解决这个问题,JDACS除了光度一致性外,还引入了语义一致性。它通过预训练网络提取语义特征,并通过非负矩阵分解生成语义分类图。然后计算跨视图语义一致性,监督信号通过交叉熵损失来指导分类。RC-MVSNet引入了神经渲染,通过结合神经辐射场(NeRF)的强大表示能力和代价体积的强大泛化能力,提出了一个新的无监督方法。ElasticMVS通过引入分块感知PatchMatch算法,来处理基于光度损失的几何信息中缺失数据和伪影的问题。
CL-MVSNet提出了一种框架,通过在常规分支与两个对比分支之间确保对比一致性来增强正样本对之间的接近性。
需要注意的是,这些端到端方法均不需要预处理,减少了训练时间并降低了在实际场景中应用的复杂性。
多阶段无监督方法
多阶段方法需要对特定模块进行预训练或对训练数据进行预处理。这些方法基于伪标签生成的思想。
Self-supervised CVP-MVSNet通过在CVP-MVSNet框架上进行自监督训练生成伪深度标签,并通过交叉视图深度一致性检查和点云融合来进行多次迭代,逐步提高性能。U-MVSNet通过预训练光流估计网络,利用密集2D光流一致性来生成伪标签,并提出了一个不确定性自训练一致性模块,以减少背景中的无效监督。
最近,KD-MVS通过知识蒸馏策略实现了卓越的性能。它在自监督方式下训练了一个教师模型,然后通过交叉视图一致性检查和概率编码生成伪标签,并通过这些伪标签将教师模型的知识传递给学生模型。
半监督方法
SGT-MVSNet提出仅使用少量稀疏真值3D点来估计参考视图的深度图。3D点一致性损失通过最小化从对应像素反投影的3D点与真值之间的差异来进行监督。为了处理边缘和边界上的不准确估计,SGT-MVSNet引入了一个从粗到细的可靠深度传播模块,来修正错误的预测。
不依赖深度估计的基于学习的MVS方法
尽管通过平面扫描预测单个深度图的基于学习的MVS方法是主流,但近年来还有许多其他类型的方法在3D重建方面取得了显著的效果。这里讨论了四种主要的类别:基于体素的方法、基于NeRF(神经辐射场)的方法、基于3D高斯投影的方法,以及大规模前馈方法。
基于体素的方法
这些方法通过隐函数(如有符号距离函数,SDF)利用体素表示估计场景几何。具体来说,Atlas和NeuralRecon试图通过将2D图像特征提升到3D特征体积来预测TSDF(截断的有符号距离函数)体积。Atlas使用3D卷积神经网络基于从所有场景图像中累积的特征体积来回归TSDF体积,从而展示出较高的重建完整性。NeuralRecon则通过分块式和粗到细的方式逐步重建场景,提高了效率。TransformerFusion通过两个Transformer将粗细图像特征融合到体素网格中,然后预测场景几何的占据场。VoRTX使用了与TransformerFusion相似的设计,通过3D卷积神经网络处理由不同级别Transformer输出的特征,从而获得场景几何。
基于NeRF的方法
在新视图合成领域,神经辐射场(NeRF)开启了一种新兴的3D表示方式,利用可微分的体积渲染方案,通过2D图像级损失对基于辐射的3D表示进行监督。NeRF使用多层感知机(MLP)将一个位置(x, y, z)和归一化视角方向(θ, ϕ)映射到相应的颜色和体积密度。对于新视角的特定射线,NeRF使用近似的数值体积渲染来计算累积颜色。许多后续研究进一步改进了NeRF的质量、训练速度、内存效率以及实时渲染能力。
尽管NeRF最初的目的是实现新视图合成,VolSDF和NeuS将NeRF与SDF结合,用于表面重建。SDF被转化为用于体积渲染的密度。
基于3D高斯投影的方法
基于3D高斯投影的方法最近在3D重建和新视图合成中表现出色。DreamGaussian和SuGaR是代表性的基于3D高斯投影的方法,它们通过在稀疏点云上进行3D高斯投影,将场景的稠密表面和颜色信息编码为3D高斯体积,并使用体积渲染进行监督。这些方法具有较高的渲染速度和出色的重建质量,特别是在大规模和复杂场景中表现尤为突出。
大规模前馈方法
大规模前馈方法主要使用大型Transformer模型直接从给定的图像中学习3D表示。这些方法通常需要大量的计算资源,因为它们依赖于巨大的网络结构,但在某些对象级别的场景中表现得非常出色。这些方法通过直接学习整个场景的3D表示,跳过了传统方法中的逐帧深度估计步骤,因此在某些场景中可以显著提升重建速度和质量。
总结一下
该综述涵盖了截至2023年最新的基于学习的MVS方法文献,包括四个主要类别:基于深度图、基于体素、基于NeRF、基于3D高斯投影以及大规模前馈方法。
提供了对不同方面的全面回顾和见解,包括各类算法的工作流程和复杂性。
总结了所回顾方法在不同基准上的表现,并讨论了深度学习MVS方法未来的潜在研究方向。
参考
[1] Learning-based Multi-View Stereo: A Survey
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
网页端官网:www.zdjszx.com② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵