Recurrent MVSNet(R-MVSNet)

基本信息

项目 内容
论文标题 Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching
作者 Xiaodong Gu, Zhiwen Fan, Zuozhuo Dai, Siyu Zhu, Feitong Tan, Ping Tan
作者单位 阿里巴巴人工智能实验室
时间 2020
发表会议/期刊 CVPR

方法概览

这篇论文包含了Stereo部分和MVS部分,是结合起来的

特点 文章性质
输入 多视角
输出 参考视角深度图
所属领域 MVS

1. 摘要精简

提出一种内存和时间高效的级联代价体(Cascade Cost Volume)框架,用于高分辨率多视图立体匹配(MVS)和立体匹配任务。该框架将传统单一 3D 代价体分解为多阶段级联结构,基于特征金字塔以 “粗到精” 方式重建:前一阶段预测结果指导后一阶段缩小深度 / 视差范围、提升代价体空间分辨率并细化间隔,使计算资源聚焦于有效区域。该框架可无缝集成到现有 3D 代价体基方法(如 MVSNet、PSMNet、GwcNet),在 DTU 数据集上使 MVSNet 精度提升 35.6%(排名第一),GPU 内存和运行时间分别减少 50.6% 和 59.3%;在 Tanks and Temples 数据集上取得所有深度学习模型第一,立体匹配任务中也显著降低端点误差(EPE)和内存消耗,源代码已开源(https://github.com/alibaba/cascade-stereo)。


2. 研究动机与出发点

现有基于 3D 代价体的 MVS 和立体匹配方法存在核心瓶颈:内存和时间消耗随代价体分辨率(空间 + 深度)立方增长,导致难以处理高分辨率输入,只能通过下采样代价体 + 后续上采样 / 细化的方式输出结果,效率低且精度受限。此前的优化方案(如 Point-MVSNet 的点云细化、R-MVSNet 的循环正则化)虽有改进,但仍存在适配性局限或精度权衡问题。受粗到精学习型立体匹配方法启发,作者提出级联代价体框架,通过多阶段逐步缩小深度 / 视差搜索范围、提升空间分辨率,避免一次性处理全尺度代价体,在保证精度的同时大幅降低资源消耗,突破高分辨率重建的限制。


3. 创新点

  1. 级联代价体设计:将单一 3D 代价体分解为多阶段结构,前一阶段预测结果自适应缩小后一阶段的深度 / 视差范围(Rk=wk⋅Rk−1,wk<1),减少无效假设平面数量;
  2. 多尺度特征与分辨率协同:结合特征金字塔(FPN),各阶段代价体采用逐步提升的空间分辨率(MVS 任务从 1/16→1/4→1,立体匹配从 1/16→1/4),适配 “粗到精” 的细节恢复需求;
  3. 动态间隔调整:深度 / 视差间隔随阶段细化(Ik=pk⋅Ik−1,pk<1),粗阶段用大间隔快速定位大致范围,细阶段用小间隔捕捉精细结构;
  4. 可插拔兼容特性:无需重构基线网络,仅替换代价体模块即可集成到 MVSNet、PSMNet 等主流方法,适配 MVS 和立体匹配两类任务;
  5. 多阶段监督与独立参数学习:所有阶段均施加监督,且各阶段 3D CNN 正则化参数独立学习,避免参数共享导致的适配性不足,进一步提升精度。

4. 网络架构

image-20251126174114617

框架为 “多阶段级联 + 后处理” 结构,核心是 N 个串联的代价体处理单元(MVS 任务 N=3,立体匹配任务 N=2),整体流程如下:

  1. 输入层:多视图图像(MVS)或双目图像(立体匹配)、相机参数、初始深度 / 视差范围;
  2. 特征金字塔提取:生成多尺度图像特征,为各阶段代价体提供对应分辨率的特征输入;
  3. 级联代价体单元(每个阶段):基于前一阶段输出,确定当前阶段深度 / 视差范围、间隔和空间分辨率,构建代价体→3D CNN 正则化→输出中间深度 / 视差图;
  4. 后处理层:MVS 任务采用光度滤波、几何一致性滤波、深度融合(fusibile 工具);立体匹配任务采用视差细化,最终生成高分辨率 3D 点云(MVS)或视差图(立体匹配)。

网络采用三阶段级联架构:

  1. 第一阶段:低空间分辨率(1/16),大深度间隔,48个深度假设
  2. 第二阶段:中等空间分辨率(1/4),中等深度间隔,32个深度假设
  3. 第三阶段:高空间分辨率(1/1),小深度间隔,8个深度假设

每个阶段包含特征提取、代价体积构建、3D CNN正则化和深度回归。


5. 特征提取

采用特征金字塔网络(FPN)提取多尺度图像特征,所有输入视图共享同一特征提取网络:

  1. MVS 任务(3 阶段级联):特征金字塔包含 3 个尺度特征图,空间分辨率分别为输入图像的 1/16、1/4、1,对应 3 个阶段的代价体空间分辨率;
  2. 立体匹配任务(2 阶段级联):特征金字塔包含 2 个尺度特征图,空间分辨率为输入图像的 1/16、1/4,对应 2 个阶段的代价体空间分辨率;
  3. 特征提取网络:由多层 2D CNN 构成,包含卷积(Conv)、批归一化(BN)和 ReLU 激活,逐步下采样并提升通道数,为代价体构建提供富含语义和细节的特征表示。

6. 代价体构建

单应性变换公式

Hi(dkm+Δk+1m)=KiRi(I(t1ti)n1Tdkm+Δk+1m)R1TK11H_i(d_k^m + \Delta_{k+1}^m) = K_i \cdot R_i \cdot (I - \frac{(t_1 - t_i) \cdot n_1^T}{d_k^m + \Delta_{k+1}^m}) \cdot R_1^T \cdot K_1^{-1}

关键参数设计

  • 深度假设范围:Rk+1=RkwkR_{k+1} = R_k \cdot w_kwk<1w_k < 1
  • 深度间隔:Ik+1=IkpkI_{k+1} = I_k \cdot p_kpk<1p_k < 1
  • 深度假设数量:Dk=Rk/IkD_k = R_k / I_k
  • Δk+1mΔ_{k+1}^m为待学习的深度残差;
  • 第一阶段:覆盖整个场景的深度 / 视差范围R1,采用较大间隔I1;

7. 代价体正则化

  • 每个阶段使用独立的3D CNN进行代价体积正则化
  • 各阶段 3D CNN 参数独立学习(不共享),避免单一参数适配不同尺度 / 范围代价体的局限性, ablation 实验证明独立参数比共享参数性能更优。

8. 深度图生成

残差学习机制

  • 第一阶段回归绝对深度值
  • 后续阶段回归深度残差:dk+1m=dkm+Δk+1md_{k+1}^m = d_k^m + \Delta_{k+1}^m

深度回归

  • 使用soft argmin操作从概率体积回归深度值
  • 每个阶段输出逐渐精细的深度图
  • 最终输出由第三阶段生成

9. 损失函数

多阶段监督损失:

Loss=k=1NλkLkLoss = \sum_{k=1}^N \lambda^k \cdot L^k

其中:

  • LkL^k:第k阶段的损失函数(MVS 任务用L1损失,立体匹配任务用端点误差(EPE)损失);
  • λk\lambda^k:各阶段损失权重
  • 实验中通过平衡各阶段贡献设置合适值,确保粗阶段快速收敛,细阶段聚焦细节优化。

10. 测试数据集

MVS 任务

  • DTU 数据集:含 124 个场景、7 种光照条件,用于核心性能评估;
  • Tanks and Temples 数据集:含 intermediate 集(8 个中等规模场景)和 advanced 集(大型复杂场景),验证泛化性和可扩展性。

立体匹配任务

  • Scene Flow 数据集:大型合成数据集,含 35454 个训练对和 4370 个测试对,用于定量评估 EPE;
  • KITTI 2015 数据集:真实道路场景数据集,含 200 个训练对和 200 个测试对,评估视差异常值比例;
  • Middlebury 数据集:高分辨率立体匹配数据集,含 60 个图像对,验证高分辨率场景适配性。

11. 消融实验

(1)网络核心组件

级联阶段数

  • 2阶段:整体误差0.4314
  • 3阶段:整体误差0.4310(最佳)
  • 4阶段:整体误差0.4364

特征金字塔影响

对比 “无特征金字塔(仅上采样特征)” 与 “有特征金字塔”,验证多尺度特征对精度和效率的提升;

  • 无特征金字塔:整体误差0.453
  • 有特征金字塔:整体误差0.355

参数共享

对比 “各阶段 3D CNN 参数共享” 与 “独立学习”,证明独立参数更适配不同阶段代价体特性。

  • 共享参数:整体误差0.4512
  • 独立参数:整体误差0.4310

空间分辨率

  • 固定分辨率:性能较差
  • 递增分辨率:显著提升精度

(2)代价体参数设置

  • 深度 / 视差间隔:测试不同间隔缩放因子pk的影响,验证细阶段小间隔对细节恢复的作用;
  • 深度 / 视差范围:分析范围缩小比例wk对覆盖真实深度的影响,确定合理范围以平衡效率和召回率。

(3)后处理组件

  • MVS 任务:测试光度滤波、几何一致性滤波、深度融合的单独作用,验证各步骤对去除异常值、提升点云完整性的有效性;
  • 立体匹配任务:测试视差细化步骤对减少阶梯效应、提升亚像素精度的影响。

12. 性能优势

内存效率

  • MVSNet+Ours:5345 MB
  • 原始MVSNet:10823 MB
  • 减少50.6%内存消耗

时间效率

  • MVSNet+Ours:0.492秒
  • 原始MVSNet:1.210秒
  • 减少59.3%运行时间

精度提升

  • DTU整体误差:从0.551mm提升至0.355mm
  • Tanks and Temples:在深度学习方法中排名第一