本文主要是介绍【论文简述】IterMVS: Iterative Probability Estimation for Efficient Multi-View Stereo(CVPR 2022),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、论文简述
1. 第一作者:Fangjinhua Wang
2. 发表年份:2022
3. 发表期刊:CVPR
4. 关键词:MVS、深度学习、GRU、分类+回归
5. 探索动机:较低的运行时间和功耗是大多数工业应用的关键,因此资源友好性的方法变得更加重要。MVSNet由于3D CNN的原因,很难处理高分辨率的图像。循环的方法(GRU,LSTM)减少了内存消耗,但是运行时间变长了。级联方法可以提高内存和运行时长的效率,但是从粗到细的方法很难恢复粗分辨率引入的误差。PatchmatchNet效率和精度都实现了很好的效果,但是泛化能力一般。
6. 工作目标:近期RAFT非常火,是否可以结合这个思路,进一步实现高效且在高分辨率上运行的结构?
7. 核心思想:这项工作中提出了IterMVS,一种新的基于GRU的迭代方法,旨在进一步提高高分辨率MVS的效率和性能。具体为:提出一种新颖而轻巧的基于GRU的概率估计器,估计器在其隐藏状态下编码每像素的深度概率分布。这种压缩表示不需要将概率体一直保存在内存中。在每次迭代中,将会输入多尺度匹配信息来更新像素级深度分布。与从粗到细的方法相比,基于GRU的概率估计器总是在相同的分辨率下工作,利用了大的搜索范围,并在整个深度范围内跟踪分布;还提出了一种结合了分类和回归的简单而有效的深度估计策略,该策略对多模态分布具有鲁棒性,同时还能达到亚像素精度。
8. 实验结果:与大多数最先进的方法相比,该模型在内存和运行时长上都是最有效的方法,并在DTU数据集上获得了具有竞争力的性能,在Tanks&Temples和ETH3D上获得了更好的泛化能力。
9.论文&代码下载:
https://openaccess.thecvf.com/content/CVPR2022/papers/Wang_IterMVS_Iterative_Probability_Estimation_for_Efficient_Multi-View_Stereo_CVPR_2022_paper.pdf
GitHub - FangjinhuaWang/IterMVS: Official code of IterMVS (CVPR 2022)
二、实现方法
1. IterMVS概述
IterMVS由一个多尺度特征提取器、一个基于迭代GRU的概率估计器(模拟每个像素的深度概率分布)和一个空间上采样模块组成。利用从特征提取器中提取的多尺度特征,基于GRU的概率估计器计算深度假设在不同尺度水平上的匹配相似性。GRU以匹配信息为输入迭代更新隐藏状态,对深度的逐像素概率分布进行编码。从隐藏状态估计深度图和置信度。空间上采样模块将GRU输出的四分之一分辨率深度和置信度提高到全分辨率。
2. 多尺度特征提取器
给定N个大小为W×H的输入图像,分别用I0和Ii表示参考图像和源图像。利用特征金字塔网络(FPN)从图像中提取多尺度特征。共有三个层级,分辨率分别是原始图像的1/2、1/4、1/8,通道数为16、32、64。
虽然没有使用显式的从粗到细的结构,但可以通过在GRU的每次迭代中使用我们的多尺度特征来匹配相似性计算来包括多尺度上下文信息。
3. 基于迭代GRU的概率估计器
基于GRU的概率估计器用32维的隐藏状态对深度的逐像素概率分布建模。GRU以1/4分辨率运行,输出深度图D∈W/4×H/4,并进行K次迭代。
3.1. 可微单应性变化
与MVS方法相同,计算得到源视图中对应的像素pi,j= pi(dj)为:
de-homogenization(没理解)后,通过双线性插值,得到形变后的特征Fi(pi,j)。
3.2. 2视图匹配相似度计算
给定参考和形变的第i个源特征,F0(p),Fi(pi,j) ,我们首先使用组相关来降维。将特征维度平均划分为G = 8组,g组相似度si((pi,j) g计算为:
< · , ·>表示点积。相似度si的大小为W×H×D×G,D是每个像素深度假设的数量。
3.3. 初始化
利用level 3上的特征作为初始化GRU的隐藏状态,并对结果进行上采样,以进一步减少计算量,h∈W/4×H/4×32。每个像素在1/8分辨率和预定义的深度范围[dmin;dmax]时,在逆深度范围内设置等距深度假设D1。经过可微变化,我们可以计算(N−1)个2视图匹配相似度si。
Sampling hypotheses uniformly in image space is more suitable for large-scale scenes [43, 49].在图像空间中均匀采样假设更适合于大规模场景[43,49]。
对于每个源视图,进一步估计像素级的视图权重,在集合来自所有源视图的信息时,权重提供了可见性信息和更高的鲁棒性。在si的图像空间上应用一个轻量级的2D CNN,聚合局部信息,将特征通道从G减少到1。沿着深度维度应用softmax得到Pi∈W/8×H/8×D1。对于像素p,源视图i的视图权值可以计算为:
最后,像素p取深度假设Dj得整合的匹配相似度Sinitial(p,j)为:
为了考虑深度图的空间相关性,我们通过在Sinitial∈W/8×H/8×D1×G上应用2D U-Net来聚合邻近像素的相似信息,这使得匹配更加鲁棒。最后一个卷积层输出一个1通道的相似度S¯∈W/8×H/8×D1。然后在S¯上依次应用2D CNN、2倍双线性上采样和tanh非线性来生成初始隐藏状态h0。
3.4. 迭代更新
对于迭代k和层级l的每个像素p,在归一化逆深度的范围内生成Nl个新的深度假设:
以之前深度估计Dk−1∈W/4×H/4为中心。Rl−1 < Rl,以利用更高分辨率特征的更高频率的信息。
然后,我们计算3个层级所有的特征的匹配相似度S¯k,包括了多尺度信息,接着使用2倍上采样的像素级视图权重来集成来自源视图的匹配相似度,然后将它们输入分层的2D U-Net来聚合邻域信息,并将通道数量减少到1。最后将3个层级的匹配相似度连接为S¯k∈W/4×H/4×(N1+N2+N3)。将Dk−1和S¯k连接表示为xk,使用卷积GRU更新隐藏状态,进一步让网络从空间邻居传播信息:
σ(·)表示sigmoid非线性,表示阿达玛积。通过在每次迭代中加入多尺度匹配信息,隐藏状态可以更准确地编码像素级深度分布。
3.5. 深度预测
迭代k处的深度图由隐藏状态h预测。回想一下,我们让隐藏状态编码深度的像素级概率分布。对于在逆深度范围内D2位置周围均匀采样的深度,通过在隐藏状态上应用2D CNN,然后沿着深度维度进行softmax,提取概率P∈W/4×H/4×D2。
这种采样分布中预测深度值的通常策略是使用argmax或soft argmax。前者对应于测量真实值的one-hot编码和P之间的Kullback-Leibler散度,但不能提供超出离散化级别的解决方案(例如“亚像素”解决方案)。后者对应于测量P的期望到真实深度的距离。而期望可以取任意连续值,测度不能处理P中的多模态,严格偏好单模态分布。因此,本文提出了一个新的混合策略,结合分类和回归。从概率P中找到概率最高的像素p的索引X(p):
取半径为r的局部逆范围内的期望来计算深度估计D(p):
其中Dj是第j个深度值。
3.6. 置信度
由于GRU的隐藏状态模拟了像素级深度概率分布,因此可以估计不确定性。在隐藏状态h上应用一个2D CNN和一个sigmoid来预测置信度C∈W/4×H/4。置信度定义为真实深度位于估计附近的一个小范围内的可能性,因此用于在具有阈值τ的重建期间过滤异常值。
4. 空间上采样模块
在迭代的最后,对GRU概率估计器输出的深度图DK进行上采样,分辨率从1/4到全分辨率。该过程以图像特征为指导:给定参考特征F0,2,二维CNN预测的掩码为M∈W/4×H/4×4×(4×4×9),其中最后一个维表示底分辨率下最近的9个近邻的权重。然后,全分辨率的深度计算为这些邻域的归一化(使用softmax)加权组合,与RAFT方法相同。置信图通过双线性上采样实现全分辨率。
5. 损失函数
损失函数考虑了从GRU估计的深度和置信度,以及最终的上采样深度。为了促进收敛,我们进一步利用粗深度初始化阶段通过相似度S¯预测的初始化D∈W/8×H/8。其表达式为:
其中概率Pinitial由S¯initial沿深度维应用softmax生成。然后使用双线性上采样原始到1/4分辨率。损失是基于从深度图D转换而来的D':
我们可以将损失函数总结如下:
并且只考虑具有有效地真值深度的Nvalid像素。损失函数由五个损失组成:分类损失Lclass,回归损失Llintial,Lregress,k, Lupsample,和置信度损失Lconf,k:
其中||·||1为l1损失,D'gt,l由第l级的真实深度计算,其中{.}为指标函数,α = 0.8和β = D2为权重。对于置信度损失Lconf,k,设C*k为:
其中y设置为0.002。为了训练分类,我们定义Q为在最近的离散位置达到峰值的真实深度Dgt2生成的one-hot编码,对Lclass使用交叉熵损失。随后的回归只能在r的任何方向上改变分类的初始估计。因此,损失Lregress只考虑真实分类索引Xgt,2(p)落在估计索引Xk(p)半径r内的像素。在训练的第一阶段,我们将Lregress和Lconf从损失中剔除,对分类进行warm up。
6. 实验
6.1. 数据集
DTU Dataset、Tanks and Temples、BlendedMVS、ETH3D
BlendedMVS is a large-scale dataset, which provides over 17k high-quality training samples of various scenes.
6.2. 实现
通过PyTorch实现,使用DTU数据集(Ours)和Large-Scale BlendedMVS(OursLS)训练。
- 对于DTU,图像分辨率为640 × 512,输入图像的数量N = 5。观察到固定的深度范围(例如MVSNet)过滤掉了DTU上的一些真实信息,我们提出从稀疏的真实点云中估计每个视图的深度范围,用于训练和评估。这与MVS中对真实场景的处理类似,在MVS中每个视图的深度范围通常由稀疏SfM重建估计。
- 对于BlendedMVS,图像分辨率为768×576和输入图像的数量N = 5,深度范围由数据集提供。为了提高训练过程中的鲁棒性,我们按照[40]随机选择源视图,并以[0.8,1:25]的范围缩放图像。
在初始化时D1=32,更新迭代次数K = 4。设置R1 = 2−7,R2 = 2−5,R3 =2−3,N1 = 4,N2 = 4,N3 = 2。在预测深度时,D2 = 256, r = 4。用Adam(β1 = 0:9;β2 = 0:999)。学习率最初设置为0.001,在4、8和12epoch之后减半。在DTU和BlendedMVS上将训练模型的批大小设置为4和2
,在单个Nvidia RTX 2080Ti GPU上进行训练。深度估计之后,执行置信度滤波(阈值τ设置为0.3)和几何一致性滤波来去除异常值,然后重建点云。
6.3. 基准结果
DTU数据集基准:输入原始大小的图像(1600×1200),设置视图数N为5,迭代次数为4。
内存和运行时长比较。随着输入大小的增加,该方法的内存消耗和运行时长增长最慢。
Tanks & Temples:输入图像大小为1920 × 1024,视图数N为7,迭代次数为4。通过OpenMVG得到相机参数和稀疏点云。在计算过程中,深度图的GPU内存和运行时间分别为2426MB和0.405s。对于更复杂的高级数据集,该方法在所有方法中表现最好。与仅在DTU上训练的模型相比,在BlendedMVS数据集上训练提高了该方法在两个数据集上的泛化能力。
ETH3D。输入图像大小为1920×1280。视图数N为7,迭代次数为4。相机参数和稀疏点云通过COLMAP得到。在计算过程中,估算每个深度图的GPU内存消耗和运行时间分别为2898 MB和0.410 s。
6.4. 消融实验
Depth Prediction.hybrid strategy performs better,we conjecture that soft argmax (regression) only training could be more prone to overfitting, implied by the tendency to force single peaked distributions.
Confidence.We compare our idea of explicitly learning the confidence from the hidden state to a commonly used strategy that defines the confidence as the sum of 4 probability samples near the estimate from the probability volume P.When taking confidence as a sum of probabilities, the un-matchable uniformly colored background pixel near the boundary receives a confidence as high as foreground pixels, due to an over-smoothing effect induced by averaging probabilities.
Scale of Feature.Our analysis shows that our model benefits from using multi-scale context information.
Depth Upsampling.We compare learned upsampling to simple bilinear upsampling.
Inverse Depth Loss.We also try computing the losses without converting to the inverse depth range.
Pixel-wise View Weight.The large performance difference on ETH3D [33] can be explained by strong viewpoint variations within the dataset,such that our robust integration of the matching information across the views becomes very impactful.
Number of Iterations.
Number of Views. Multi-view information can help to alleviate problems such as occlusions and the reconstruction quality improves at a higher value, saturating at around 6 views.
7. 限制
虽然我们的网络结构允许通过调整推理过程中的迭代次数来权衡速度和准确性,但我们需要固定概率分布所包含的样本数量。这个数字D2是由网络结构决定的,不能根据不同场景进行调整。同样预先确定的是放置在当前解决方案周围的数据项样本的范围,这些数据项样本输入CNN中。在我们的模型中,这些样本覆盖了总逆深度范围的2R3 =1/4。
这篇关于【论文简述】IterMVS: Iterative Probability Estimation for Efficient Multi-View Stereo(CVPR 2022)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!