今天读一篇WACV 2024上MVS的文章,作者来自格拉茨技术大学。
文章链接:点击前往
Abstract
为了减少在深度图融合点云参数调整上的实验负担,可以学习基于entropy的filtering mask进而根据两个视角的几何验证来重建三维模型。并且,提出的网络计算开销不大,训练只需要6GB,测试时,3.6GB即可处理1920*1024的图片,性能也和sota很接近。
1 Introduction
MVS问题当中,尽管输出首先是深度图,但当今最常见的基准测试是评估点云,即3D模型而不是深度图。 虽然深度图的创建是由神经网络处理的,但点云仍然通过检查几何和光度一致性以经典方式生成。 photometric mask通常是通过评估网络输出的概率权重来获得的,而网络输出的概率权重不是明确学习的。 对于geometric filtering,存在不同的融合框架,它们将像素投影到 3D 空间中,并具有几个可以调整的类似参数:1)interval scale。 影响每个视图中深度范围的参数。 2) Consistent number of views。 必须确认深度估计以保证几何一致性的源图像的数量。 3) Back-projection error in pixels。 将一个像素投影到另一个视图并返回时的距离误差。 4)Relative depth error。 深度方向Back-projection的相对误差。 几乎每个 MVS 方法都需要手动调整这些参数,通常针对每个单独的场景,这可能是一项乏味的任务。 此外,融合是一个单独的非学习步骤,因此很难评估网络的真实性能。 与前面提到的方法相比,我们能够应用一组仅依赖于几何双视图一致性检查的融合参数。
主要以下几个贡献:
- 训练阶段多产生一个filter mask,以避免手动调整融合参数
- 训练阶段引入随机匹配patch,这使得使用全分辨率图片而不需要resize
- 扩展了GBiNet以适配任意分辨率图片
- 做了融合参数的对比实验
2 Related Work
介绍了相关工作,比如重建步骤和融合方式。
3 Method
3.1 Pre-processing: Randomized Matched Patches
当前可用数据的一个问题是,虽然可以使用相对高分辨率的图像,但在训练阶段使用全分辨率通常会占用大量内存。 GBiNet建议裁剪随机补丁进行训练以学习更好的特征,而不增加训练开销,同时控制内存消耗。 虽然这对于像 DTU 这样定义良好的数据集来说已经足够好了,但它无法在像BlendedMVS这样观测点差距很大的数据集中获得重叠的patch。 因此,我们引入了随机匹配补丁:从任何给定的ref图像中,我们在训练过程中随机裁剪图像的一部分到适合网络的任意大小(在我们的例子中为 512 × 512)。 由于GT深度图和相机参数已知,我们可以将ref块的像素投影到src图像中。 为了找到相应的patch,我们首先在中心像素周围投影 p 个像素,并检查是否至少有 25% 是有效的,即不在src图像之外或包含无效的深度值。 然后我们计算有效点的质心以获得源patch的中心像素(见图3)。 这个过程可以在线完成,并对所有源图像重复,并保证补丁之间的显着重叠(见图 3)。 如果找不到有效匹配,则在ref图像中选择一个新的随机补丁。 在极少数情况下,此过程失败20次,我们会跳过该图像。
3.2 Feature Extraction
特征金字塔,和其他的MVS网络类似,没什么特别的。
3.3 Cost Volume Assembly
代价体聚合。
为了控制cost volume的大小,我们采用GBiNet的策略,该策略使用两个级联cost volume,每个特征阶段只有4个深度假设。 然而,他们的方法在每次通过正则化网络后将深度间隔减半,从而形成具有固定深度分辨率的刚性网络架构。 我们引入了一个区间参数ψ,它允许我们自由选择深度分辨率,而不改变网络的内存需求。 通过将整个深度范围除以4找到第一个深度区间(来自我们对每个成本量的4深度假设),我们可以简单地将此参数与前一个深度区间相乘以获得新的深度区间。
3.4 Network Outputs
简单介绍用于去除噪声的正则化网络之后,讲到网络设计是输出2张深度图,一个是回归,一个是针对每个阶段做softargmin。
这些深度图用于初始化每个后续阶段的深度假设并计算损失。 在最后阶段,我们还通过2个独立的残差块计算entropy map。 这个想法是,较高的熵值表明网络对所有深度假设应用相同的概率,这表明网络不确定哪个深度假设是对的。 在训练阶段,我们通过应用额外的损失来强制执行这种行为。
3.5 Loss Function
讲了一下损失函数的设计。
首先,我们计算每个深度图的损失。 由于每个特征图尺度有两个不同的深度范围,我们5个阶段获得10个深度图。 由于更精细的cost volume的初始化必须使用深度图的放大版本来完成,因此我们还将损失应用于放大版本。 然后损失在我们的 5 个特征阶段累积为:
其中
λ
k
\lambda_{k}
λk是权重参数,我们每个阶段给它乘2,
D
k
D_{k}
Dk是当前阶段深度图,
D
k
,
u
p
2
D_{k,up_{2}}
Dk,up2是放大版本的深度图,
D
k
,
g
t
D_{k,gt}
Dk,gt是GT。
如前所述,对于最终输出,我们还计算熵图。 然而,由于我们的网络是通过回归而不是分类进行训练的,因此不能保证熵较低以实现良好的深度估计。 这是因为良好的深度估计也可以通过概率的均等分布来实现,这只是在回归中被视为不同的权重。 然而,我们希望鼓励网络将单个强概率应用于正确的深度估计,使这种方法更接近于分类任务。
为了在正确的深度估计上强制执行低熵,我们在熵和深度误差图
M
E
=
∣
D
k
−
D
k
,
g
t
∣
ME = |Dk − Dk,gt|
ME=∣Dk−Dk,gt∣之间应用额外的损失。 我们可以通过计算得到:
其中在每个像素上的
ϵ
(
x
,
y
)
\epsilon(x,y)
ϵ(x,y)定义为:
其中h是深度假设层数,
p
j
(
x
,
y
)
p_{j}(x,y)
pj(x,y)是在每个假设层j上的概率。我们可以通过把所有假设层概率都强制设定为一样的来设定max,整个图像的熵损失是所有位置的平均值。
最终loss为:
3.6 Post-Processing
与大多数网络一样,我们网络的最终输出是深度图。 然而,基准测试通常只评估点云,即融合的 3D 模型。 我们可以通过将深度图的像素投影到 3D 空间并将它们融合在一起来获得点云。 基准测试结果在很大程度上取决于融合参数的正确选择。 大多数方法通过尝试不同的设置来凭经验找到这些参数,这通常会花费大量时间,并且如果必须评估许多不同的场景,则这是不可行的。 我们提出仅使用entropy masks和具有固定参数的简单两个视图一致性检查来进行公平比较,直接评估深度图的质量。 与大多数最先进的 MVS 网络相比,我们能够通过对每个数据集和场景使用相同的设置来获得高质量的点云。
4 Implementation
介绍了一下实现细节和参数,在1080ti上即可训练!
5 Results
简单贴一下结果,分数还是非常不错的,感兴趣的可以去看原文。
文章来源:https://www.toymoban.com/news/detail-811398.html
6 Conclusion
我们提出了HAMMER,它能够生成精确的过滤掩模以及精确的深度图。 我们新颖的熵损失改进了网络的深度图输出,同时还提供了所需的熵图以在融合阶段之前过滤掉点。HAMMER可以在独立于 GPU 内存的几乎任意深度分辨率上进行训练。 此外,通过在训练阶段使用随机匹配的补丁,我们能够在512x512补丁上训练我们的网络,这导致训练的内存需求非常低。 除此之外,我们方法的主要优点是它不需要调整融合参数即可根据深度图创建 3D 模型。 我们通过在 DTU、Tanks and Temples的不同基准场景上使用固定融合参数进行评估来确认其强大的性能。文章来源地址https://www.toymoban.com/news/detail-811398.html
到了这里,关于【论文精读】HAMMER: Learning Entropy Maps to Create Accurate 3D Models in Multi-View Stereo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!