IterMVS

基本信息

项目 内容
论文标题 IterMVS: Iterative Probability Estimation for Efficient Multi-View Stereo
作者 Fangjinhua Wang(又是你), Silvano Galliani, Christoph Vogel, Marc Pollefeys
作者单位 ETH Zurich
时间 2021
发表会议/期刊 CVPR

方法概览

特点 文章性质
输入 标定之后的多视角图像
输出 场景的点云图,每个视角的法线和深度图
所属领域 MVS

摘要精简

本文提出 IterMVS,一种高效的高分辨率多视图立体(MVS)数据驱动方法。核心是基于 GRU 的概率估计器,其隐藏态编码像素级深度概率分布,通过多轮迭代注入多尺度匹配信息,逐步优化分布并推断深度与置信度。该方法创新结合分类与回归策略,兼顾多模态分布鲁棒性与亚像素精度。在 DTU、Tanks&Temples 和 ETH3D 数据集上验证表明,IterMVS 是内存和运行时效率最高的学习型 MVS 方法,同时在 DTU 上取得竞争性性能,在 Tanks&Temples 和 ETH3D 上展现更优泛化能力。

效果不怎么样,只是快,显存低

引言与出发点

  • 问题背景:传统MVS方法受限于手工建模和匹配度量,在遮挡、光照变化、低纹理区域等挑战条件下表现不佳。
  • 现有方法局限
    • MVSNet等基于3D CNN的方法内存和运行时间消耗大,难以扩展到高分辨率
    • 循环方法(如R-MVSNet)可降低内存但增加运行时间
    • 多阶段方法(如PatchmatchNet)效率高但由粗到细结构限制错误恢复能力
  • 核心目标:开发同时具备高效率和高性能的MVS方法

创新点

1. GRU-based概率估计器

  • 提出轻量 GRU 概率估计器,将像素级深度概率分布编码在 32 维隐藏态中,无需全程存储高维概率体,大幅降低内存占用。
  • 隐藏态通过多轮迭代持续更新,每轮注入多尺度匹配信息,始终保持对全深度范围的分布追踪,避免粗到精方法的搜索范围限制。

2. 分类+回归混合深度估计策略

  • 先通过 argmax 从概率分布中找到最高概率索引(分类),再在该索引的局部范围内计算期望(回归),公式为:$$\mathbf{D}(\mathbf{p})=\left(\frac{1}{\sum_{j=X(\mathbf{p})-r}^{X(\mathbf{p})+r} \mathbf{P}(\mathbf{p}, j)} \sum_{j=X(\mathbf{p})-r}^{X(\mathbf{p})+r} \frac{1}{d_j}\cdot\mathbf{P}(\mathbf{p}, j)\right)^{-1}$$

3. 像素级视图权重与学习型上采样

  • 引入像素级视图权重,通过轻量 2D CNN 估计,自适应融合多源视图信息,提升遮挡和视角变化场景的鲁棒性。
  • 深度上采样采用学习型策略,基于参考图像特征预测邻域权重,通过加权组合实现从 1/4 到全分辨率的精准提升,优于传统双线性上采样。

网络架构

image-20251127122158526

IterMVS 由三大核心模块组成,流程为 “特征提取→概率迭代优化→深度上采样”:

多尺度特征提取器:输出 3 个尺度的图像特征,为匹配计算提供基础;

GRU-based 概率估计器:含初始化和迭代更新子模块,编码深度概率分布并输出 1/4 分辨率深度与置信度;

空间上采样模块:将低分辨率深度图提升至全分辨率,保留细节信息。

特征提取

  • 使用**特征金字塔网络(FPN)**提取多尺度特征
  • 3个尺度级别:l=1,2,3l=1,2,3
  • 分辨率:1/2l1/2^l 原始分辨率
  • 通道数:C=16,32,64C=16,32,64
  • 特征图用于后续多尺度匹配相似度计算,初始化阶段仅使用 level3 特征降低计算量,迭代阶段融合所有尺度特征。
  • 特征存储为 Fi,l\mathbf{F}_{i,l},其中ii为图像索引,ll为尺度级别

代价体构建

可微分扭曲

使用相机参数将源视图特征扭曲到参考视图:

pi,j=Ki(R0,i(K01pdj)+t0,i)\mathbf{p}_{i,j}=\mathbf{K}_{i}\cdot(\mathbf{R}_{0,i}\cdot(\mathbf{K}_{0}^{-1}\cdot\mathbf{p}\cdot d_{j})+\mathbf{t}_{0,i})

相似性计算

两视图匹配相似度:采用组 - wise 相关性,将特征通道分为 8 组,计算每组内积作为相似度;

si(p,j)g=1C/GF0(p)g,Fi(pi,j)g\mathbf{s}_{i}(\mathbf{p},j)^{g}=\frac{1}{C/G}\left\langle\mathbf{F}_{0}(\mathbf{p})^{g},\mathbf{F}_{i}(\mathbf{p}_{i,j})^{g}\right\rangle

视图权重集成

多源信息融合:通过像素级视图权重加权求和多源相似度,得到初始和迭代阶段的匹配相似度;

Sinitial(p,j)=i=1N1wi(p)si(p,j)i=1N1wi(p)\mathbf{S}_{\text{initial}}(\mathbf{p},j)=\frac{\sum_{i=1}^{N-1}\mathbf{w}_{i}(\mathbf{p})\cdot\mathbf{s}_{i}(\mathbf{p},j)}{\sum_{i=1}^{N-1}\mathbf{w}_{i}(\mathbf{p})}

代价体正则化

  • 不使用传统3D CNN正则化,通过GRU隐藏状态迭代更新实现隐式正则化
  • 初始化正则化:初始相似度经 2D U-Net 聚合邻域信息,转换为初始隐藏态h0,编码初始深度概率分布;
  • 尺度聚合:每个尺度的相似度经独立2D U-Net处理后拼接,确保多尺度信息有效融合。

深度图生成

1. 概率分布提取

概率分布提取:从GRU隐藏态通过2D CNN和Softmax,得到全深度范围的离散概率分布§; PRW/4×H/4×D2\mathbf{P}\in\mathbb{R}^{W/4\times H/4\times D_2}

2. 混合深度估计策略

混合策略深度估计:先通过argmax找到最高概率索引(X§),再在局部半径(r=4)范围内计算期望,得到1/4分辨率深度图;

分类:找到最大概率索引

X(p)=argmaxjP(p,j)X(\mathbf{p}) = \arg\max_j \mathbf{P}(\mathbf{p}, j)

回归:在局部范围内计算期望

D(p)=(1j=X(p)rX(p)+rP(p,j)j=X(p)rX(p)+r1djP(p,j))1\mathbf{D}(\mathbf{p})=\left(\frac{1}{\sum_{j=X(\mathbf{p})-r}^{X(\mathbf{p})+r} \mathbf{P}(\mathbf{p}, j)} \sum_{j=X(\mathbf{p})-r}^{X(\mathbf{p})+r} \frac{1}{d_j}\cdot\mathbf{P}(\mathbf{p}, j)\right)^{-1}

3. 置信度估计:

从隐藏态通过2D CNN和Sigmoid预测置信度©,用于过滤低可信度深度值;

4. 空间上采样

使用学习的上采样方法:基于参考图level2特征,对粗分辨率的9个最近邻进行加权组合,加权组合得到全分辨率深度图(D_{upsample})。

损失函数

总损失函数:

Lfull=αK+1Linitial+Lupsample+k=0KαKk(Lclass,k+Lregress,k+Lconf,k)L_{\text{full}}= \alpha^{K+1}L_{\text{initial}}+L_{\text{upsample}}+\sum_{k=0}^{K}\alpha^{K-k}(L_{\text{class},k}+L_{\text{regress},k}+L_{\text{conf},k})

各分量损失

  • 初始化损失Linitial=βDinitialDgt,21L_{\text{initial}}= \beta\cdot||\mathbf{D}^{\prime}_{\text{initial}}-\mathbf{D}^{\prime}_{\text{gt},2}||_1初始化阶段深度与真值的L1损失
  • 分类损失:概率分布与真值one-hot编码的交叉熵损失;
  • 回归损失:仅考虑分类索引附近的像素,计算深度L1损失;
  • 置信度损失:预测置信度与真值(基于深度误差)的二分类交叉熵损失;
  • 上采样损失Lupsample=βDupsampleDgt,01L_{\text{upsample}}= \beta\cdot||\mathbf{D}^{\prime}_{\text{upsample}}-\mathbf{D}^{\prime}_{\text{gt},0}||_1

测试数据集

  • DTU:室内多视角立体数据集,124个场景
  • Tanks & Temples:大规模室外真实场景
  • ETH3D:高分辨率图像,强视角变化

消融实验

1. 深度预测策略

  • 分类+回归(最佳)
  • 仅分类:精度下降
  • 仅回归:易过拟合,泛化差

2. 置信度估计

  • 学习置信度(最佳)
  • 概率求和:边界处效果差

3. 特征尺度

  • 多尺度特征(最佳)
  • 单尺度特征:性能下降

4. 深度上采样

  • 学习上采样(最佳)
  • 双线性上采样:性能显著下降

5. 逆深度损失

  • 使用逆深度(最佳)
  • 直接深度:大规模场景性能差

6. 逐像素视图权重

  • 使用视图权重(最佳)
  • 简单平均:强视角变化下性能差

7. 迭代次数

  • 更多迭代带来持续改进
  • K=16K=16时在DTU达到SOTA性能

8. 视图数量

  • 多视图信息改善重建质量
  • 约6个视图时性能饱和

其他创新点

逆深度空间处理

  • 在逆深度空间均匀采样假设
  • 更适合大规模场景
  • 损失计算也在逆深度空间进行

灵活的性能-效率权衡

  • 通过调整迭代次数 KK 平衡速度与精度
  • 用户可根据应用需求自定义权衡

置信度学习

  • 从隐藏状态直接学习置信度
  • 用于后续的离群值过滤
  • 比基于概率求和的策略更准确