MVSFormer

基本信息

项目 内容
论文标题 MVSFormer: Multi-View Stereo by Learning Robust Image Features and Temperature-based Depth
作者 Chenjie Cao, Xinlin Ren, Yanwei Fu
作者单位 复旦大学数据科学学院
时间 2023
发表会议/期刊 CVPR

方法概览

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

摘要

本文提出 MVSFormer,一种基于预训练 Vision Transformer(ViT)增强的多视图立体(MVS)方法。核心创新包括:利用 ViT 的长距离依赖建模能力提升反射和无纹理区域的特征表示;提出高效多尺度训练策略,适配不同输入分辨率;通过温度调节策略统一分类式(鲁棒但精度有限)和回归式(精度高但置信度不可靠)深度预测的优势。MVSFormer 包含两种变体:微调分层 ViT(Twins)的完整版,以及冻结自监督 ViT(DINO)权重的轻量版(MVSFormer-P)。该方法在 DTU 数据集上实现 SOTA 性能,在 Tanks and Temples 的 Intermediate 和 Advanced 集均排名第一,泛化性优异。


引言动机

现有 MVS 方法面临三大核心痛点,推动作者开展研究:

  1. 特征表示不足:传统 FPN(含预训练 CNN)难以建模反射、无纹理区域,缺乏全局语义理解,限制泛化能力;

  2. ViT 潜力未发掘:ViT 在 2D 视觉任务中表现突出,具备长距离依赖建模和 patch 级特征匹配优势,但尚未被系统应用于 MVS 的特征学习;

  3. 深度预测权衡:分类式方法(argmax)能生成可靠置信度图但深度精度有限,回归式方法(soft-argmin)精度高但置信度不可靠,难以兼顾两者优势。

    作者旨在通过 ViT 增强特征提取、多尺度训练适配高分辨率、温度策略统一两类预测方法,解决上述问题,实现高精度、高泛化性的 MVS 重建。


创新点

1. 预训练ViT增强的特征提取

  • 首次系统探索预训练ViT在MVS中的应用
  • 使用层次化ViT (Twins)和普通ViT (DINO)两种变体
  • ViT特征与FPN特征互补,结合全局理解和局部细节

2. 高效多尺度训练策略

  • 针对 ViT 缺乏平移不变性、易过拟合特定分辨率的问题,设计动态分辨率训练:输入分辨率在 512-1280 间随机采样,长宽比 0.67-0.8,结合梯度累积平衡批次大小与内存消耗;
  • 使用梯度积累平衡不同分辨率的批次大小
  • 该策略使模型能泛化到训练时未见过的高分辨率(如 2K),无需额外微调,解决 MVS 对不同输入尺度的适配难题。

3. 基于温度的深度预测

  • 训练时采用分类损失(交叉熵)优化,保证置信度可靠性;测试时通过温度参数t调节概率分布
  • 早期阶段使用高温度(类似CLA)(如 5),模拟分类式全局区分能力;
  • 后期阶段使用低温度(类似REG)(如 1),模拟回归式局部平滑精度,实现 “先分类后回归” 的优势融合。
  • 温度设置:{t1,t2,t3,t4}={5,2.5,1.5,1}\{t^1,t^2,t^3,t^4\} = \{5,2.5,1.5,1\}

4. ViT 增强的双轨特征提取架构

  • 提出两种 ViT 融合方案,互补 FPN 的局部特征与 ViT 的全局特征:
    1. MVSFormer(完整版):采用分层 ViT(Twins)作为骨干,微调预训练权重,其高效注意力机制(分离式局部分组注意力 + 全局子采样注意力)适配多尺度特征学习,输出与 FPN 最高层特征元素相加融合;可训练的Twins ViT,性能最优
    2. MVSFormer-P(轻量版):冻结自监督 ViT(DINO)权重,利用 [CLS] token 的注意力图(含语义分割先验),通过 GLU 模块保护关键特征并降维,避免重训练的高计算成本。冻结的DINO ViT,计算效率高

网络架构

其实就是一个加了VIT特征的VISMVSNet,然后transformer特征太小,需要加进去的话需要操作一下,用GLU

image-20251127133359314

MVSFormer 遵循 “特征提取→代价体构建→正则化→深度生成” 的经典 MVS 流程,核心分为三大模块:

  1. 特征提取模块:FPN 与 ViT(Twins/DINO)双轨融合,输出 4 个尺度(1/8~1×)的增强特征;

  2. 代价体处理模块:含多阶段代价体构建(warping、相关性计算、可见性融合)与 3D U-Net 正则化;

  3. 深度生成模块:基于温度调节的概率期望计算,输出最终深度图。

    输入为 1 张参考图 + N 张源图(含内参 / 外参),流程为:多尺度特征提取→逐阶段代价体构建与正则→温度调节深度预测→置信度过滤与点云融合。


特征提取

  • FPN主干:提取多尺度特征 {F(l)}l=1L=4\{\mathbf{F}^{(l)}\}_{l=1}^{L=4},分辨率从1/8到原始尺寸 4 个尺度特征

  • ViT增强

    • MVSFormer:层次化VIT Twins-small 处理 1/2 分辨率输入,输出多尺度特征经额外 FPN 上采样至 1/8 分辨率与 FPN 最高层特征元素相加;

    • MVSFormer-P:DINO 处理 1/2 分辨率输入,提取 [CLS] 注意力图,与 DINO 特征拼接后经 GLU 降维,双转置卷积上采样至 1/8 分辨率,与 FPN 最高层特征相加;使用GLU融合注意力图公式:

      F~(p)=Swish(ConvBNt([Fdino;A])Swish(ConvBNr([FdinoA^]))\tilde{\mathbf{F}}^{(p)} = \textrm{Swish}(\textrm{ConvBN}_t([\mathbf{F}_{dino};\mathbf{A}])\odot\textrm{Swish}(\textrm{ConvBN}_r([\mathbf{F}_{dino}\odot\hat{\mathbf{A}}]))


代价体构建

采用经典的多视图立体代价体构建方法:

  1. 可微扭曲

    pj=Ki(R0iK01pdj+t0i)\mathbf{p}^{\prime}_{j} = \mathbf{K}_{i}\cdot(\mathbf{R}_{0\to i}\cdot\mathbf{K}_{0}^{-1}\cdot\mathbf{p}\cdot d_{j}+\mathbf{t}_{0\to i})

  2. 分组相关性

    将参考特征与 warped 源特征按通道分为 G 组,计算每组内积得到相关性特征Ci,平均后降维至 G 通道;

    Ci(dj,p,g)=F0g(p),Fig(pj)RC\mathbf{C}_{i}(d_{j},\mathbf{p},g) = \left\langle\mathbf{F}_{0}^{g}(\mathbf{p}),\mathbf{F}_{i}^{g}(\mathbf{p}^{\prime}_{j})\right\rangle\in\mathbb{R}^{C}

  3. 视图权重融合

    可见性加权融合:训练 2D CNN 预测像素级视图权重Wi(基于相关性熵),加权融合多源相关性特征,公式为:

    C(dj)=i=1N1WiCi(dj)i=1N1Wi\mathbf{C}(d_{j}) = \frac{\sum_{i=1}^{N-1}\mathbf{W}_{i}\mathbf{C}_{i}(d_{j})}{\sum_{i=1}^{N-1}\mathbf{W}_{i}}


代价体正则化

使用3D U-Net对代价体进行正则化输出正则化后的代价体 C^RD×Hl×Wl\hat{\mathbf{C}}\in\mathbb{R}^{D\times H_{l}\times W_{l}}

每个阶段使用不同的深度假设数:32-16-8-4


深度图生成

训练阶段:基于分类策略,使用CLA(交叉熵损失)和掩码处理,通过 argmax 选取概率最大的深度假设DclaD_{cla},用交叉熵损失优化;

测试阶段:采用温度调节策略,按阶段动态设置t(如t1=5,t2=2.5,t3=1.5,t4=1),计算概率期望得到Dtmp:

Dtmp=j=1DdjP^(dj),P^=softmax(C^t)\mathbf{D}_{tmp} = \sum_{j=1}^{D}d_{j}\cdot\hat{\mathbf{P}}(d_{j}),\quad \hat{\mathbf{P}} = \text{softmax}(\hat{\mathbf{C}}\cdot t)


损失函数

训练采用交叉熵损失(CLA 损失),仅优化分类式深度预测,公式为:

L=−∑p,jQ(p,j)logP(p,j)

  • Q(p,j)为真值深度的 one-hot 编码,仅在真值对应的深度假设位置为 1;

多任务损失,包含所有阶段的深度图:

Ltotal=Linit+k=02i=1Tk+1λikLikL_{total} = L_{init} + \sum_{k=0}^{2}\sum_{i=1}^{T_{k}+1}\lambda_{i}^{k}L_{i}^{k}

  • LinitL_{init}:初始深度预测损失
  • LikL_{i}^{k}:第k阶段第i次迭代的深度损失
  • 使用L1损失函数

测试数据集

  • DTU:室内数据集,测试分辨率1152×1536
  • Tanks & Temples:室外数据集,包含Intermediate和Advanced集合
  • ETH3D:高分辨率场景数据集
  • 在DTU上训练,在BlendedMVS上微调,其他数据集直接测试

消融实验

1. 不同预训练模型

  • ResNet50:改进有限,无法处理反射区域
  • DINO-small:冻结权重,性能竞争
  • Twins-small:可训练,性能最优
  • MAE-base:性能中等

2. 多尺度训练

  • 显著提升ViT模型的泛化能力
  • 对CNN模型改进有限
  • 比固定高分辨率微调更有效

3. DINO注意力图和GLU

  • 使用[CLS] token的注意力图提升性能
  • GLU融合优于简单拼接
  • 保护重要特征信息

4. REG vs CLA分析

  • CLA提供更可靠的置信度图
  • REG在深度指标上略优
  • 基于温度的方案平衡两者优势

5. 温度设置

  • {5,2.5,1.5,1}\{5,2.5,1.5,1\} 设置达到最佳平衡
  • 早期阶段高温度(类似CLA)
  • 后期阶段低温度(类似REG)

6. 视图数量

  • 增加源视图数量提升性能
  • Tanks & Temples上使用20个视图达到最佳

7. ViT 预训练的重要性:

  • 对比 Twins 从头训练与预训练微调,证明预训练权重能提供有效先验;

其他

ViT 特征的 “非逐像素” 根源:无论是 MVSFormer 用的 Twins,还是 MVSFormer-P 用的 DINO,输入 ViT 前都会先将图像下采样到 1/2 分辨率(如原始 H×W→H/2×W/2),再经 patch embedding(如 16×16 步长)得到更低分辨率的特征(如 DINO 输出 H/32×W/32,Twins 输出 H/8×W/8),这使得 ViT 特征天然是 “非逐像素” 的低维特征,必须通过上采样匹配 FPN 的逐像素特征尺度(FPN 输出 1/8~1× 分辨率的特征图)。

两种融合方案的适配设计

  • 对于 MVSFormer(完整版,用 Twins 分层 ViT):Twins 本身输出多尺度特征(H/8、H/16 等),文档中提到 “用额外 FPN 将 Twins 的多尺度特征上采样至 H/8×W/8”(公式 1:F(h)=FPN(F(h,1),F(h,2),F(h,3),F(h,4))),最终与 FPN 最高层(1/8 分辨率)特征元素 - wise 相加,利用 Twins 的全局注意力特征增强 FPN 的局部细节特征(、);
  • 对于 MVSFormer-P(轻量版,冻结 DINO):DINO 输出 H/32×W/32 的特征,文档中设计了 GLU 模块(公式 2:F§=Swish(ConvBNl([Fdino;A])⊙Swish(ConvBNr([Fdino⊙A^]))),先结合 [CLS] token 的注意力图(含语义分割先验)保护关键特征,再通过双转置卷积上采样至 H/8×W/8,与 FPN 最高层特征相加,避免冻结 ViT 时的特征信息丢失。

FPN(即使带预训练 CNN)只能捕捉局部纹理,难以处理反射、无纹理区域;而 ViT 的 patch 级特征和长距离注意力能提供全局语义(如 “无纹理墙面的全局连续性”“反射区域与背景的语义区分”),通过上采样融合后,让 CNN 特征同时具备局部细节和全局上下文,这也是文档中提到 “ViT 特征与 FPN 特征互补” 的关键