SnowMVSNet: Visibility-Aware Multi-View Stereo by Surface Normal Weighting for Occlusion Robustness

基本信息

项目 内容
论文标题 Visibility-Aware Multi-View Stereo by Surface Normal Weighting for Occlusion Robustness
作者 Hyucksang Lee, Seongmin Lee, Sanghoon Lee
第一单位 延世大学 (Yonsei University) 电子与电气工程系
时间 2025
发表会议/期刊 IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), Vol. 47, No. 9, September 2025

摘要精炼

现有基于学习的多视角立体匹配(MVS)方法在大遮挡场景(如相机间距大、目标形状复杂)中深度估计精度不足,核心原因是遮挡区域提取的错误图像特征会成为代价体构建的显著噪声。为此,本文提出基于显式 3D 几何的表面法向量加权可见性感知 MVS 网络(SnowMVSNet):通过计算视图间可见性选择性抑制代价体中的匹配错误特征;提出几何引导的代价体正则化,利用表面法向量先验增强深度假设中的真实深度;定义视图内可见性区分参考视图中几何上更易见的像素,并基于此设计可见性加权的训练和深度估计方法,让网络聚焦可见区域实现高精度三维点云重建。基于简单的视图间 / 视图内可见性计算,SnowMVSNet 以较低的计算复杂度实现了性能的大幅提升,尤其在遮挡鲁棒性上表现突出。

为评估遮挡鲁棒性,本文构建了包含易自遮挡人体形状的多视角人体(MVHuman)数据集。大量实验表明,SnowMVSNet 在低 / 高遮挡场景中均显著优于当前 SOTA 方法。

引言与动机

尽管基于学习的 MVS 方法取得了显著进展,但在处理大尺度遮挡时仍然表现不佳。遮挡源于相机间距离较大或物体自遮挡(如复杂形状的人体),会导致在代价体构建过程中,来自被遮挡区域的错误图像特征成为显著噪声,从而引起深度估计误差。

传统的 COLMAP 方法通过计算重建点法线与相机视线之间的入射角来剔除不可见点,但这是一种二值化的后处理操作,无法提升 MVS 本身的性能。现有的学习方法,如 Vis-MVSNet、PVSNet 等,试图通过深度概率的隐式信息(如熵、最大概率)来计算可见性,但这些方法仍然不够准确,因为它们忽略了物体与相机之间的显式3D几何关系。其他基于注意力机制的方法(如 TransMVSNet、MVSTER)虽然能选择有效特征,但同样未利用显式的几何先验。

因此,本文的出发点是:利用显式的几何先验(表面法向量)来精确计算可见性,并将其直接应用于 MVS 的核心阶段(代价体构建、正则化、训练和后处理),从而从根本上提升模型对遮挡的鲁棒性。

创新点

本文的核心创新在于系统性地提出了基于显式几何的可见性建模与应用,具体包括:

  1. 基于表面法向量的视图间可见性 (Inter-View Visibility):通过计算参考视图表面法线与源视图相机视线方向的夹角余弦,显式地衡量源视图中每个像素对于参考视图的可见程度。在代价体构建时,将此可见性作为权重,抑制来自不可见区域的特征贡献。

  2. 基于表面法向量的视图内可见性 (Intra-View Visibility):通过计算参考视图表面法线与参考相机视线方向的夹角余弦,衡量参考视图内每个像素自身的深度估计置信度。基于此可见性,提出了:

    • 可见性加权训练:在训练时,为置信度高的区域赋予更高的损失权重。
    • 可见性加权深度估计:在深度估计的后处理阶段,根据可见性自适应地调整“鞍形深度”的间隔,在低置信度区域引入更大的不确定性(即更宽的搜索间隔)。
  3. 几何引导的代价体正则化 (Geometry-Guided Cost Volume Regularization):利用前一阶段估计的深度概率体和法向量图作为几何先验,通过通道维度的交叉注意力机制与当前阶段的代价体进行交互,从而增强正确深度假设的响应。

  4. MVHuman 数据集:为了有效评估遮挡鲁棒性,构建了一个包含 30 个视角、高自遮挡率的人体多视图数据集,包含图像、相机参数以及重建的点云和网格。

相关工作对比

本文在相关工作部分主要与以下方法进行了对比,并指出了其不足:

  • 与传统可见性感知 MVS 方法对比:COLMAP 等传统方法仅通过入射角实现二值化可见性判断,且作为后处理无法优化代价体构建;SnowMVSNet 将可见性作为连续权重融入代价体构建,从源头抑制遮挡区域的噪声特征,且实现了端到端的可见性感知 MVS。

  • 与基于隐式可见性的学习型 MVS 方法对比:Vis-MVSNet、PVSNet、PatchmatchNet 从深度概率 / 不确定性中隐式计算可见性,受图像纹理影响大,无法准确区分几何遮挡区域;SnowMVSNet 基于显式 3D 几何计算可见性,仅依赖相机与目标的几何关系,在大遮挡场景中能精准识别低可见区域。

  • 与基于注意力的 MVS 特征匹配方法对比:TransMVSNet、MVSTER、LANet 利用注意力机制选择特征候选,但忽略了相机与目标表面的 3D 几何关系,在大遮挡场景中特征匹配仍易出错;SnowMVSNet 基于几何可见性直接加权特征贡献,更精准地筛选有效特征。

  • 与基于法向量先验的 MVS 方法对比:HPM-MVS、SP-Net、NAPV-MVS 仅利用法向量增强局部表面一致性,未将法向量与可见性结合;SnowMVSNet 以法向量为核心计算视图间 / 视图内可见性,让法向量先验贯穿代价体构建、训练、深度估计全流程,充分挖掘几何先验的价值。

  • 与现有鞍形深度估计方法对比:现有方法为所有像素分配统一的鞍形区间,未考虑深度估计的置信度差异;SnowMVSNet 基于视图内可见性实现自适应鞍形区间分配,让深度估计的不确定性与几何置信度匹配,提升点云重建精度。

网络架构

SnowMVSNet 基于一个四阶段的由粗到细 (coarse-to-fine) 架构(类似于 CasMVSNet)构建。

  1. 特征提取:使用共享权重的特征金字塔网络 (FPN) 从所有视图中提取多尺度图像特征。
  2. 可见性加权代价体构建
    • 在阶段1,使用相机视线方向的相似度作为初始视图间可见性。
    • 从阶段2开始,使用前一阶段估计的法向量图,通过公式(3)计算精确的视图间可见性。
    • 利用归一化后的可见性权重,通过分组相关 (group-wise correlation) 的方式融合多视图特征,构建加权代价体。
  3. 几何引导的代价体正则化:构建好的代价体输入到一个 3D CNN 编码器中。在特定的层(如第3和第5层),引入通道维度的交叉注意力机制,将前一阶段估计的深度概率体和法向量图作为几何先验与当前代价体进行交互,以增强正则化效果。
  4. 深度与法向量估计:正则化后的代价体分别输入到深度估计网络和法向量估计网络中,输出当前阶段的深度概率体和法向量图。深度图通过 argmax 操作获得,法向量图通过回归获得。
  5. 迭代与输出:上述过程在四个阶段中迭代进行,每一阶段都利用上一阶段估计的深度来缩小当前阶段的深度假设范围。最终输出全分辨率的深度图和法向量图。

特征提取

特征提取使用特征金字塔网络 (FPN) 作为图像编码器。该网络在所有视图之间共享权重,能够提取不同尺度的通用图像特征表示,为后续的代价体构建提供基础。特征提取部分本身是常规设计,其核心创新在于后续如何利用几何信息对这些特征进行加权和正则化。

代价体构建

代价体的构建过程包含以下步骤:

  1. 可微单应性变换:对于参考视图上的一个像素 p0p_0 及其深度假设 djd_j,通过单应性变换计算其在第 i 个源视图上的投影坐标:

    p0i,dj=Ki(R0,iK01p0dj+t0,i)p_{0 \to i, d_j} = K_i (R_{0,i} K_0^{-1} p_0 \cdot d_j + t_{0,i})

    其中 KK 为内参,RRtt 为相对位姿。

  2. 视图间可见性计算

    • 在初始阶段(法向量未知),可见性 wi=max(0,r0,0r0,i)w_i = \max(0, \langle r_{0,0} \cdot r_{0,i} \rangle),即参考相机与源相机的视线方向夹角。
    • 在后续阶段,利用法向量 NN 计算精确可见性:wi=max(0,Nr0,i)w_i = \max(0, -\langle N \cdot r_{0,i} \rangle)。通过归一化和掩码处理得到最终的可见性权重 wite\mathbf{w}_i^{te}
  3. 加权代价体融合:采用分组相关的方法,并使用可见性权重 wite\mathbf{w}_i^{te} 对各源视图的贡献进行加权融合:

    Cg=GCi=1N1witeV0gVig\mathbf{C}^g = \frac{G}{C}\sum_{i=1}^{N-1} \mathbf{w}_i^{te} \langle \mathbf{V}_0^g \cdot \mathbf{V}_i^g \rangle

    其中 gg 是组索引,V\mathbf{V} 是特征体。最终的代价体 C\mathbf{C} 由所有组的 Cg\mathbf{C}^g 堆叠而成。

代价体正则化

本文提出的几何引导的代价体正则化是其核心创新之一。它利用前一阶段估计的几何先验(深度概率体 P\mathbf{P} 和法向量图 N\mathbf{N})来优化当前阶段的代价体。

  1. 几何先验编码:将 P\mathbf{P}N\mathbf{N} 沿通道维度拼接,输入几何先验编码器 EgE_g

  2. 通道维交叉注意力:在代价体编码器 EcE_c 的特定层(如第3、5层),计算几何先验输出与代价体特征之间的通道维交叉注意力:

    Cguidedl=softmax(Eg1:l(PN)Ec1:l(C)Glte)Ec1:l(C)\mathbf{C}_{guided}^{l} = \text{softmax}\left( \frac{E_g^{1:l}(\mathbf{P} \oplus \mathbf{N}) \cdot E_c^{1:l}(\mathbf{C})^\top}{\sqrt{G_l \cdot t_e}} \right) \cdot E_c^{1:l}(\mathbf{C})

    其中 Eg1:lE_g^{1:l}Ec1:lE_c^{1:l} 是第 l 层的输出,E1DE_{1D} 用于对齐特征维度。通过这种注意力机制,几何先验能够沿深度轴激活代价体中正确的深度假设。

  3. 正则化网络:经过注意力增强的代价体继续通过 3D CNN(包含下采样、上采样和残差连接)进行正则化,最终输出一个更纯净的代价体用于深度和法向量估计。

深度图生成

深度图的生成是一个由粗到细的多阶段过程,最终阶段的深度估计还应用了可见性加权的鞍形深度策略。

  1. 概率体获取:在每个阶段,正则化后的代价体 RD×G×H×W\mathbb{R}^{D\times G\times H\times W} 通过一个 3D CNN(深度估计网络)将 G 个通道压缩为单通道的概率体 PRD×H×W\mathbf{P} \in \mathbb{R}^{D\times H\times W}

  2. 初步深度选择:通过 argmax 操作获得锚点深度图 Da\mathbf{D}_a 和候选深度图 Dc\mathbf{D}_c,它们分别是概率最高和第二高的深度假设。

    Da(x,y)=argmaxd{dj}P(dj,x,y)\mathbf{D}_a(x,y) = \underset{d\in\{d_j\}}{\operatorname{argmax}} \mathbf{P}(d_j,x,y)

    Dc(x,y)=argmaxd{dj}{Da(x,y)}P(dj,x,y)\mathbf{D}_c(x,y) = \underset{d\in\{d_j\} - \{\mathbf{D}_a(x,y)\}}{\operatorname{argmax}} \mathbf{P}(d_j,x,y)

  3. 可见性加权鞍形深度估计:最终深度 D\mathbf{D} 通过在锚点和候选点之间进行棋盘格模式的交替选择来生成,并利用视图内可见性 wta\mathbf{w}^{ta} 自适应地调整两者之间的插值权重。低可见性(高不确定性)区域赋予候选点更高的权重,从而扩大可能的深度搜索范围。

    D={Da,x%2=y%2,wta(12Da+12Dc)+(1wta)(14Da+34Dc),o.w.\mathbf{D} = \begin{cases} \mathbf{D}_a, & x\%2 = y\%2, \\ \mathbf{w}^{ta}(\frac{1}{2}\mathbf{D}_a + \frac{1}{2}\mathbf{D}_c) + (1-\mathbf{w}^{ta})(\frac{1}{4}\mathbf{D}_a + \frac{3}{4}\mathbf{D}_c), & \text{o.w.} \end{cases}

Loss 函数

网络的损失函数由深度损失和法向量损失两部分组成,并且深度损失应用了视图内可见性加权。

  1. 可见性加权深度损失:在每阶段 k,使用交叉熵损失,并用视图内可见性 wta\mathbf{w}^{ta} 对不同像素的损失进行加权,使网络更关注高置信度区域。

    Ldk=x,ywtaPˉk(x,y)logPk(x,y)\mathcal{L}_d^k = -\sum_{x,y} \mathbf{w}^{ta} \bar{\mathbf{P}}^k(x,y) \log \mathbf{P}^k(x,y)

  2. 法向量损失:在每阶段 k,使用 L1 损失监督法向量估计。由于 MVS 数据集通常不提供真值法向量,本文通过深度图梯度计算伪真值法向量 Nˉk\bar{\mathbf{N}}^k

    Lnk=x,yNk(x,y)Nˉk(x,y)1\mathcal{L}_n^k = \sum_{x,y} \| \mathbf{N}^k(x,y) - \bar{\mathbf{N}}^k(x,y) \|_1

  3. 总损失:将深度损失和法向量损失相加,λk\lambda^k 设为 1。

    L=k=1KLdk+λkLnk\mathcal{L} = \sum_{k=1}^{K} \mathcal{L}_d^k + \lambda^k \mathcal{L}_n^k

数据集

本文在以下数据集上进行了实验和评估:

  • 训练DTU 数据集用于主要训练。BlendedMVS 数据集用于在 Tanks and Temples 上测试前的微调。
  • 评估
    • DTU:用于主要定量和定性评估,以及遮挡鲁棒性的量化分析(通过控制视图稀疏度)。
    • Tanks and Temples (T&T):用于评估模型在大型、真实场景上的泛化能力。
    • MVHuman (自建):一个包含 30 个视角、高自遮挡率的人体多视图数据集,专门用于评估模型在大遮挡场景下的性能。该数据集包含图像、相机参数和重建结果。

消融实验

为了验证各个模块的有效性,本文进行了一系列消融实验,主要测试了以下组件:

  1. 可见性模块

    • 视图间可见性 (Inter-vis.):验证其在代价体构建中的作用,证明其能有效区分遮挡区域。
    • 视图内可见性 (Intra-vis.):验证其在加权训练中的作用,证明其能提升高置信度区域的准确性。
    • 组合实验:验证两个可见性模块联合使用的效果最佳。
  2. 几何引导的代价体正则化

    • 几何先验选择:比较了使用前一阶段的深度概率体、法向量图以及两者组合的效果。
    • 注意力层位置:探索了在代价体编码器的不同层(如第3、5层)应用交叉注意力对性能和显存消耗的 trade-off。
  3. 可见性加权深度估计

    • 鞍形策略比较:比较了无鞍形、固定间隔鞍形、基于概率置信度的加权鞍形和本文提出的基于视图内可见性的加权鞍形。证明基于几何的加权策略最优。
  4. 法向量估计策略

    • 比较了使用可学习的深度网络估计法向量与直接从估计的深度图计算梯度法向量两种方式。证明可学习的网络能获得更精确的法向量,从而提升整体重建性能。
  5. 深度估计方法

    • 比较了分类、回归和统一表示 (Unification) 三种深度回归方式,证明分类方法在本框架下效果最好。