AA-RMVSNet (Adaptive Aggregation Recurrent Multi-view Stereo Network)

基本信息

项目 内容
论文标题 Adaptive Aggregation Recurrent Multi-view Stereo Network
作者 Zizhuang Wei, Qingtian Zhu, Chen Min, Yisong Chen, Guoping Wang*
作者单位 Peking University(北京大学)
时间 2021
发表会议/期刊

方法概览

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

摘要精简

本文提出一种基于长短期记忆(LSTM)的递归多视图立体网络 AA-RMVSNet,核心引入两种自适应聚合模块:**视图内聚合模块通过上下文感知卷积和多尺度聚合自适应提取图像特征,提升薄物体、大低纹理表面等挑战性区域的性能;视图间代价体聚合模块通过像素级视图自适应聚合,保留所有视图中匹配度高的像素对,解决复杂场景中的遮挡问题。**网络采用 RNN-CNN 混合架构进行代价体正则化,避免传统 3D CNN 的高内存消耗,支持高分辨率重建和精细平面扫描。该网络端到端训练,在 Tanks and Temples 基准测试中排名第一,在 DTU 数据集上取得竞争性结果,展现出强泛化性和鲁棒性。

其实就是提取特征时候使用了可变卷积,然后再在融合代价体的时候先构建成对代价体获得粗糙深度进而计算出遮挡,然后把CNN变成CNN-RNN

研究动机与出发点

多视图立体(MVS)旨在从多张图像获取真实场景的 3D 稠密模型,广泛应用于虚拟现实、自动驾驶等领域。传统 MVS 依赖手工设计的匹配度量,深度学习方法虽通过 CNN 提升了特征提取和代价体正则化能力,但仍存在三大关键问题:

  1. 2D CNN 采用固定感受野的规则像素网格提取特征,难以处理薄结构、低纹理或无纹理区域,限制了重建的鲁棒性和完整性;
  2. 多视图匹配代价聚合过程中,很少考虑像素级可见性问题(如遮挡),导致重建质量下降;
  3. 传统 3D CNN 用于代价体正则化时内存消耗大,不利于大规模场景重建。

传统学习-based MVS方法在处理薄结构、无纹理区域时存在困难,且大多未考虑像素级可见性问题。现有方法如Vis-MVSNet使用成对匹配不确定性作为权重指导,PVA-MVSNet使用基于CNN的体素级视图聚合,但难以完美解决一般情况下的遮挡问题。此外,内存消耗也是实际应用中的重要考量因素。

创新点

  • 提出视图内特征聚合模块(intra-view AA):结合可变形卷积和多尺度聚合,自适应提取不同纹理丰富度区域的上下文感知特征;
  • 提出视图间代价体聚合模块(inter-view AA):通过生成像素级注意力图,对不同视图的代价体进行自适应聚合,抑制遮挡等不可靠匹配区域的影响;
  • 网络在 Tanks and Temples 在线基准测试中排名第一,在 DTU 数据集上取得竞争性结果,且内存效率高,支持高分辨率和大规模场景重建。

网络架构

image-20251126225429993

网络遵循典型的基于学习的MVS流程:

  1. 输入图像分为1张参考图像和N-1张源图像
  2. 通过共享权重编码器和**视图内自适应聚合模块(intra-view AA)**提取所有图像的特征图(维度 H×W×F);
  3. 通过可微单应性将源图像特征 warp 到参考相机视锥体,构建单视图代价体,再经**视图间自适应聚合模块(inter-view AA)**聚合为全局代价体(维度 H×W×D×F’);
  4. 使用RNN-CNN混合网络正则化代价体得到概率体
  5. 回归与损失计算阶段:通过概率体生成深度图,经过滤和融合得到 3D 稠密点云,训练过程采用交叉熵损失反向传播优化。

5. 特征提取过程

image-20251126225449258

特征提取的核心是视图内自适应聚合模块(intra-view AA),其实就是使用了可变卷积,具体流程如下:

  1. 编码器(共享权重)输出 3 个不同空间尺度的特征图:$$H \times W \times 16, \frac{H}{2} \times \frac{W}{2} \times 16, \frac{H}{4} \times \frac{W}{4} \times 16;$$

  2. 每个尺度的特征图分别输入独立参数的 3×3 可变形卷积(1-stride),可变形卷积比普通卷积多了 “自适应偏移”—— 卷积核的每个采样点能轻微移动,不是固定死的。比如在薄物体上,采样点会集中在物体边缘;在白墙上,采样点会扩散开,相当于 “扩大视野”可变形卷积公式为:

f(p)=kwkf(p+pk+Δpk)Δmkf'(p) = \sum_{k} w_k \cdot f(p + p_k + \Delta p_k) \cdot \Delta m_k

纹理多→小视野,纹理少→大视野。其中,$$f§$$ 为像素 $$p$$ 的特征值,$$w_k$$ 和 $$p_k$$ 为普通卷积的核参数和固定偏移,$$\Delta p_k$$(偏移)和 $$\Delta m_k$$(调制权重)由可学习子网络自适应生成;

  1. 通过双线性插值将后两个较小尺度的特征图上采样至 $$H \times W$$,得到通道数分别为 16、8、8 的特征图;

  2. 拼接 3 个特征图,最终得到维度为 $$H \times W \times 32$$ 的聚合特征图。

6. 代价构造过程

代价构造分为单视图代价体生成和视图间聚合两步:

  1. 单视图代价体生成:通过可微分单应性建立参考图像与第 i 张源图像在深度假设 d 下的像素映射关系,单应性公式为:

Hi(d)=dKiTiTref1Kref1H_i^{(d)} = dK_i T_i T_{ref}^{-1} K_{ref}^{-1}

其中,$$T$$ 为相机外参,$$K$$ 为相机内参;基于该映射 warp 源图像特征,计算源图像特征与参考图像特征的平方差,得到单视图代价体,也就是每个深度假设下,源图特征和参考图特征的差异;:

ci(d)=(fsrc(d)fref)2c_i^{(d)} = \left( f_{src}^{(d)} - f_{ref} \right)^2

  1. 根据上面的粗深度图warp出来计算出来的差异性c,用一个小 CNN 生成 “像素级注意力图$$\omega(c_i^{(d)})$$
  2. 视图间自适应聚合:通过 inter-view AA 模块生成像素级注意力图 $$\omega(c_i^{(d)})$$,对 N-1 个单视图代价体进行加权聚合,聚合公式为:

C(d)=1N1i=1N1[1+ω(ci(d))]ci(d)C^{(d)} = \frac{1}{N-1} \sum_{i=1}^{N-1} \left[ 1 + \omega \left( c_i^{(d)} \right) \right] \odot c_i^{(d)}

其中,$$\odot$$ 为哈达玛积,$$1 + \omega (\cdot)$$ 用于避免过度平滑,最终得到全局代价体 $$C^{(d)}$$(维度 $$H \times W \times 32$$)。

代价体正则化

采用 RNN-CNN 混合网络进行代价体正则化,核心是沿深度维度(D)递归切片处理,具体流程:

将全局代价体(H×W×D×32)按深度维度 D 切片,得到 D 个 2D 特征切片(每个切片维度H×W×32);

水平方向:每个切片通过编码器 - 解码器结构的 CNN 进行空间上下文信息正则化;

垂直方向:5 个并行的 ConvLSTMCell 构成 RNN,传递前一深度切片的中间输出(隐藏状态)到当前切片,实现跨深度的信息融合;

ConvLSTMCell内部操作:

{i=σ(w)f=σ(x)o=σ(y)g=tanh(z)\begin{cases}\text{i}=\sigma(\mathbf{w})\\ \text{f}=\sigma(\mathbf{x})\\ \mathbf{o}=\sigma(\mathbf{y})\\ \mathbf{g}=\tanh(\mathbf{z})\end{cases}

mj(d)=mj(d1)f+ig\mathbf{m}_{j}^{(d)}=\mathbf{m}_{j}^{(d-1)}\odot\textbf{f}+\text{i}\odot\mathbf{g}

vj(d)=otanh(mj(d))\mathbf{v}_{j}^{(d)}=\mathbf{o}\odot\tanh(\mathbf{m}_{j}^{(d)})

深度图生成

代价体正则化后得到维度为H×W×D的概率体(每个像素对应 D 个深度假设的概率分布);对概率体执行 argmax 操作,得到每个像素的初始深度预测;

损失函数

将深度估计视为像素级分类问题,使用交叉熵损失:

L=p{pv}d=d0dD1G(d)(p)log[P(d)(p)]L=\sum_{\mathbf{p}\in\{\mathbf{p}_{v}\}}\sum_{d=d_{0}}^{d_{D}-1}-G^{(d)}(\mathbf{p})\,\log[P^{(d)}(\mathbf{p})]

其中G(d)(p)G^{(d)}(\mathbf{p})P(d)(p)P^{(d)}(\mathbf{p})分别表示深度假设dd在像素p\mathbf{p}处的真实概率和预测概率。

10. 测试数据集

  • DTU 数据集:室内 MVS 数据集,含 128 个扫描场景,49 个视角,7 种光照条件,分为 79 个训练集、18 个验证集、22 个评估集,用于网络训练和定量评估;
  • BlendedMVS 数据集:大规模合成数据集,含 17k + 高分辨率图像,涵盖室内外场景,用于网络微调与定性评估(无官方评估工具);
  • Tanks and Temples 基准:大规模室外基准,含中间集(8 个场景:Family、Francis 等)和高级集,场景尺度、表面反射、曝光条件各异,用于在线定量评估和泛化性验证。

11. 消融实验内容

消融实验基于 DTU 数据集,采用统一参数设置,主要测试以下内容:

  1. 自适应聚合模块的有效性:对比 4 种架构(Baseline:无聚合模块;+intra-view AA;+inter-view AA;Full:双模块融合),评估深度误差、重建准确性和完整性,以及内存消耗;

  2. 输入视图数(N)的影响:固定深度假设数 D 和图像分辨率,对比 N=3、5、7 时的重建性能;

  3. 深度假设数(D)的影响:固定 N=7 和图像分辨率,对比 D=256 和 D=512 时的重建误差;

  4. 输入图像分辨率的影响:固定 N=7 和 D=512,对比分辨率 480×360、640×480、800×600 时的重建效果。

    实验结果表明,两个自适应聚合模块互补且有效,增加视图数、提高深度假设密度和图像分辨率均能提升重建性能,且 Full 架构内存效率优异(800×600 分辨率下仅消耗 4.25GB 内存)。

  • Baseline:使用普通2D CNN特征提取和相同混合LSTM结构,无额外模块
  • +视图内AA:增加视图内自适应聚合模块,内存增加1.74GB,完整性提升0.28
  • +视图间AA:增加视图间自适应聚合模块,内存仅增加0.11GB,精度提升0.31
  • 完整模型:结合两个模块,总体误差从0.391降至0.357,内存消耗4.25GB

视图间自适应聚合机制详解

视图间聚合模块通过CNN生成像素级注意力图,定义如下:

C(d)=1N1i=1N1[1+ω(ci(d))]ci(d)\mathbf{C}^{(d)}=\frac{1}{N-1}\sum_{i=1}^{N-1}[1+\omega(\mathbf{c}_{i}^{(d)})]\odot\mathbf{c}_{i}^{(d)}

其中\odot表示Hadamard乘积,ω()\omega(\cdot)是根据每视图代价体自适应生成的像素级注意力图。使用1+omega()1+\\omega(\cdot)而非单独的ω()\omega(\cdot)能更好地防止过度平滑。

该机制能够抑制可能造成匹配混淆的像素,同时为具有关键上下文信息的像素分配更大权重。对于参考图像中的某个区域,如果该区域在源图像中被遮挡,则分配较低权重以抑制局部匹配;反之,如果区域未被遮挡且拍摄良好,则分配较高权重以增强可靠的局部匹配。