【论文精读】OmniFusion全景相机的深度估计

这是CVPR2022被选为oral的一篇文章,作者是来自密苏里大学段晔老师组的Yuyan Li。该文章主要研究了全景相机的360度深度估计问题。
项目地址:https://github.com/yuyanli0831/omnifusion

Abstract

基于深度学习的深度估计,在应用于全景图像时,存在一个难点,那就是球面失真的问题。在需要结构细节的深度估计这种密集的回归任务中,在扭曲的360度图像上使用 CNN 层会导致信息丢失。在本文中,作者提出了一种 360 度单目深度估计pipeline,叫做 OmniFusion,这个方法可以解决球面失真的问题。我们将 360 度图像先转换为失真较小的透视图块(即tangent images),以通过 CNN 获得patch-wise 的预测,然后将结果合并为最终输出。为了处理patch预测之间的差异(这是影响合并质量的主要问题),我们提出了一个具有以下关键组件的新框架。首先,我们提出了一种几何感知特征融合机制,该机制将 3D 几何特征与 2D 图像特征相结合,以补偿patch方面的差异。其次,我们采用基于自注意力的 Transformer 架构对patch信息进行全局聚合,进一步提高了一致性。最后,我们引入了一种迭代深度细化机制,以根据更准确的几何特征进一步细化估计的深度。实验表明,我们的方法极大地缓解了失真问题,并在几个 360 度单目深度估计的benchmark上实现了SOTA。

1. Introduction

全景图片凭借其宽广的视场 (FoV) 提供场景的全面视图,这有利于从整体上理解场景。但这种形式比如equirectangular projection(ERP)image会引入几何扭曲。失真因子在垂直方向上变化,并且可能会降低为非失真透视图像设计的常规卷积层的性能。前人已经提出了一些研究来解决失真问题,比如提出了失真感知卷积或球形定制内核。 然而,目前尚不清楚这种球形卷积的效果如何,尤其是在网络的更深层。一些球形 CNN在谱域中定义了卷积,这使得计算开销可能更大。 还有人尝试通过其他失真较小的格式来解决 ERP 失真。 BiFuse 和 UniFuse从 ERP 和立方体贴图中获得了互补的属性。一些研究将常规 CNN 反复应用于 360 图像的多个透视投影。Eder 等人提出使用一组细分的二十面体切线图像,并证明使用切线图像表示可以促进透视图像和 360 图像之间的network transfer。

使用切线图像是有利的,因为它具有较少的失真,并且可以很好地利用为透视成像开发的大量预训练 CNN。 此外,与整体方法相比,切线图像表示继承了处理高分辨率输入的卓越可扩展性。 然而,vanilla pipeline有一些局限性。首先,透视图之间会出现严重的差异,因为同一个对象可能在多个视图中看起来不同。 这个问题对于深度回归任务来说尤其成问题,因为从单个切线图像估计的不一致的深度尺度在合并过程中会产生artifacts。 其次,从全景度图像估计深度的优势丧失了,因为这等于又将全局场景分解为局部tangent images。 切线图像的预测相互独立,导致切线图像之间没有信息交换。

在这个文章中我们提出了拥有几何感知融合的全景图像深度估计框架,如图1。我们提出了以下3个关键组件来解决上述差异问题并无缝合并tangent images的深度结果。第一,我们使用了geometric embedding module来提供额外的特征来弥补patch之间2D特征的差异。对每个patch,我们计算每个patch像素上对应的球面上的3D点,通过共享的MLP对它们和patch中心坐标进行编码,并将几何特征添加到相应的2D特征中。第二,为了重新获得理解整个场景的整体能力,我们在管道中加入了一个基于自注意力的transformer。有了它,patch信息被增强,这增强了对全局深度尺度的估计,并提高patch结果之间的一致性。第三,我们引入了一种迭代细化机制,将来自预测深度图的更准确的 3D 信息反馈给几何嵌入模块,以迭代方式进一步提高深度质量。
在这里插入图片描述

2. Related work

2.1 Monocular depth estimation

单目深度估计,将单个 RGB 图像作为输入来预测像素级深度值。 早期的工作主要集中在网络架构和监督。 最近,研究人员一直在研究在stereo pairs或单目视频流上使用无监督学习,来将训练数据扩展到未标记的图像序列,以实现更广泛的应用。 然而,这种方法仍然对许多因素(例如相机内在变化)敏感,并且很难推广到新场景。 为了提高鲁棒性和可扩展性,一些方法利用额外的传感器输入,例如 LiDAR 和 RGBD 相机。 然而,在许多实际场景中,额外的计算或功耗并不受欢迎。

2.2 360 depth estimation

单目全景图片深度估计被研究者从多个角度探究过。Zioulis等人通过视图合成探索了单眼 ERP 输入的球面立体几何和估计深度。 PanoDepth利用 360 立体约束来提高单目深度性能。Eder等人和Zeng等人探索了来自不同模式(例如布局、正常、语义等)的联合学习。 HoHoNet提出利用潜在水平特征表示来编码 ERP 图像特征。为了处理 ERP 图像的不规则失真,已经提出了几种失真感知卷积。例如,Fernandez等人介绍了 EquiConv,它应用可变形卷积来适应球面几何形状。Tateno等人提出在训练期间将常规 CNN 应用于透视图像,并在测试期间应用失真感知卷积。一些方法不是直接解决 ERP 的失真,而是建议使用其他失真较小的表示,例如立方体贴图、ERP 和立方体贴图之间的融合以及 360 图像的多透视投影。 Eder 等人最近的一项工作建议使用切线图像,一组定向的、低失真的图像,与二十面体的面相切,来表示 360 度图像。使用切线图像是有利的,因为它具有较少的失真,并且可以有效地利用为透视成像而开发的预训练 CNN 模型。但是,切线图像之间的差异没有得到解决,这导致最终合并结果的降级。 在这项工作中,我们遵循Tangent images for mitigating spherical distortion论文中提出的使用切线图像的范式,但对其进行了简化和调整以进行深度估计。 此外,我们通过结合几何感知融合和transformer成功地解决了差异问题。

2.3 Transformer

最初在NLP中提出,Transformer 架构已广泛用于计算机视觉任务,例如图像分类、深度估计、对象检测和语义分割。视觉transformer与单目深度估计具有天然的匹配性,因为远程的上下文可以被自我注意模块显式地利用。 然而,当把它应用于全景图像时,失真会降低其在利用块之间的成对相关性方面的能力。 在这项工作中,我们为transformer提供没有失真和几何感知的输入,以便其可以专注于patch信息的全局聚合。

3. Method

在这里插入图片描述
图2展示了pipeline。首先,一个ERP图片作为输入,被通过gnomonic projection转换为一系列tangent images。然后将投影的无失真图像通过编码器解码器网络以产生逐块深度估计,然后将其融合到 ERP 深度输出中。为了缓解补丁方面的差异,我们引入了一种新颖的几何嵌入模块,该模块对与每个切线图像像素相关的球坐标进行编码,提供额外的几何特征以促进patch图像特征的集成。为了进一步提高patch-wise预测之间的一致性并更好地估计全局深度尺度,来自编码器最深层次的特征通过基于自注意力的transformer进行全局聚合。最后,采用迭代细化机制进一步提高深度质量。 我们基于从先前迭代中获得的更准确的估计迭代更新球坐标。 我们以端到端的方式训练我们的网络,唯一的监督是与ground truth做比较的最终合并深度。

3.1 Depth estimation from tangent images

我们的方法依赖于失真较小的切线图像来解决 360 度图像中的不规则失真。 通过将球面投影到平坦的矩形平面上来生成切线图像。gnomonic projection是一个是通过将球体表面上的点 P s ( λ , φ ) P_{s}(λ, φ) Ps(λ,φ) 从球心 O O O 投影到与点 P c ( λ c , φ c ) P_{c}(λ_{c}, φ_{c}) Pc(λc,φc) 相切的平面中的点 P t ( x t , y t ) P_{t}(x_{t}, y_{t}) Pt(xt,yt) 获得的映射。 我们使用 ( λ , φ ) (λ, φ) (λ,φ) 来表示经度和纬度,用 ( x t , y t ) (x_{t}, y_{t}) (xt,yt) 表示切线图像上的 2D 点位置。

在实验中,我们设置 N = 18 N=18 N=18个tangent images来保证速度和性能之间的平衡。图像的采样是 − 67.5 -67.5 67.5度、 − 22.5 -22.5 22.5度、 22.5 22.5 22.5度和 67.5 67.5 67.5度。我们在每个维度分别取 3 3 3 6 6 6 6 6 6 3 3 3个patch。所有图像的分辨率和FoV是相同的。我们选择这种非均匀采样的原因是基于一个事实:相同分辨率的切线图像以不同纬度为中心时可以覆盖不同经度范围。 为了确保极点附近的采样斑块不会过度重叠,我们采用较少的样本来覆盖 ERP 空间中的近极点区域。 由于生成的切线图像是没有失真的,我们可以轻松地应用常规的编码器-解码器 CNN 架构来预测每个切线图像的深度图。 为了更好的收敛性和准确性,我们在初始化编码器时利用了高性能的预训练网络(例如,ResNet)。 我们将所有 N N N 个切线图像同时通过编码器,并获得 N N N 个特征图,这些特征图将在稍后的变换器中用作tokens。 对于解码器,我们使用一堆上采样层,然后是 3 × 3 3 × 3 3×3 卷积,以及来自编码器的skip connections。

至此,baseline可以看作是一个自定义版本的Tangent images for mitigating spherical distortion,我们采用不同的rendering方式对待切线图像,和上面文章中的网络架构,使得baseline更高效。值得注意的是,我们的baseline没有transformer和geometric fusion,也没有confidence map,输出的深度值是所有patch的平均。
在这里插入图片描述

3.2 Geometry-aware feature fusion

然而,从切线图像预测深度图的简单,却是有代价的。 由于深度估计现在是独立进行的,因此不再能保证全局一致的深度尺度了。 此外,如图 4 (d) 所示,一个对象(例如墙上的画)将从不同角度投影到多个切线图像上,因此将在不同的切线图像中进行不同的编码。 patch深度估计之间的差异,特别是在重叠区域中,可能会导致最终合并的 ERP 深度图中出现明显的artifacts。
在这里插入图片描述
为了弥补图片特征之间的差异,我们使用了geometric embedding网络来提供额外的几何信息。对于位于切线图像上的像素 P t ( x t , y t ) P_{t}(x_{t}, y_{t}) Pt(xt,yt),我们使用其位于单位球面上的对应球坐标 P s ( λ , φ , ρ ) P_{s}(λ, φ, ρ) Ps(λ,φ,ρ) 以及切线图像的中心 P c ( λ c , φ c ) P_{c}(λ_{c}, φ_{c}) Pc(λc,φc) ,作为几何嵌入网络的输入属性。 P s P_{s} Ps 使嵌入知道全局位置,例如,判断来自两个补丁的两个图像像素是否与相同的球坐标相关。 然而,仅 P s P_{s} Ps 之外的几何特征无法对齐不同的 2D 特征。 为此,将 P c P_{c} Pc 作为附加属性,使嵌入能够区分不同的补丁,从而学习到的几何特征可以使补丁特征趋于一致。 通过切线图像特征和几何特征的组合以及端到端学习网络,调整后的特征导致更清晰的合并深度。如图 5 (d) 所示,与图 5 © 所示的没有几何嵌入的特征相比,提取的具有几何嵌入的图像特征在合并到 ERP 空间中的特征图中显示出更好的一致性。 因此,与图 5 (e) 中所示的基线深度图相比,图 5 (f) 中显示的 OmniFusion 的最终深度图看起来要干净得多。
在这里插入图片描述

几何嵌入网络由两层 MLP 组成,并将 5 5 5 通道球面属性编码为 64 64 64 通道特征图。 我们通过逐元素求和将这种几何嵌入与编码器中相同像素位置的图像特征融合。 为了保持更多的结构细节,采用早期融合。 几何特征被添加到 ResNet 编码器的 l a y e r 1 layer1 layer1 中,我们通过实验获得了最佳性能。 值得注意的是,与原始编码器-解码器相比,与几何嵌入模块相关的额外计算成本是最小的(表 2)。 第一次迭代的几何特征在学习后是固定的,因为它们独立于图像输入。 只有第二次迭代需要重新计算几何特征。

3.3 Global aggregation with transformer

当将 ERP 分解为一系列切线图像时,我们不再拥有 3D 环境的整体视图。为了弥补这一损失,我们利用 Transformer 架构以全局方式聚合来自补丁的信息。全局聚合有望提高补丁深度估计的一致性,并更好地从更大的 FoV 中回归全局深度范围。
使用从编码器中提取的特征图,我们首先应用一个 1 × 1 1×1 1×1 的卷积层来减少通道维度以提高效率。然后我们将特征图展平为 N N N个 1-D 特征向量 X 0 = [ x 1 , x 2 , . . . , x N ] ∈ R N × d X_{0} = [x_{1}, x_{2} , ..., x_{N} ] ∈ R^{N×d} X0=[x1,x2,...,xN]RN×d 将用作transformer中的标记。可学习的位置嵌入 E p o s ∈ R N × d E_{pos} ∈ R^{N×d} EposRN×d 被添加到特征标记中,以类似于 An image is worth 16x16 words: Transformers for image recognition at scale中提出的方式保留位置信息。通过自注意架构,Transformer 学习全局聚合来自所有补丁的信息以调整每个补丁的特征,其中聚合权重解释了视觉特征和位置特征的成对相关性。多头注意力transformer的架构如Distortion-aware convolutional filters for dense prediction in panoramic images中一样。

3.4 Depth merging with learnable confidence map

上述几何嵌入和变换器模块显着减少了不同补丁深度估计之间的差异。 然而,深度融合并没有实现像素级的无缝融合。 为了进一步改进合并(图 4(b)),除了深度回归之外,我们要求网络同时预测每个补丁的置信度图。 然后将合并的深度计算为所有补丁深度预测的加权平均值,并将置信度分数用作权重。 具体来说,解码器附加了两个独立的回归层,一个用于深度回归,另一个用于置信度回归。 深度图(图 4(e))和置信度图(图 4(f))在合并前的inverse gnomonic transformation后映射到 ERP 域。

3.5 Iterative depth refinement

几何嵌入利用与切线图像像素对应的球面坐标 ( λ , φ , ρ ) (λ, φ, ρ) (λ,φ,ρ) 进行几何感知融合。 ρ ρ ρ 最初是固定的,因为没有可用的深度信息。深度信息将在一次迭代后可用,可用于更新 ρ ρ ρ 并为几何嵌入模块提供更准确的几何信息。基于这一观察,我们提出了一种迭代深度细化方案(见图 2)。

在第一次迭代中(第 3.2 节),位于单位球面上的点的球坐标 ( λ , φ , ρ ) (λ, φ, ρ) (λ,φ,ρ) 用于几何嵌入。对于后续迭代,我们使用从前一次迭代估计的新深度值更新 ρ → ρ ′ ρ → ρ′ ρρ (ERP 图像的深度定义为从真实世界点到相机中心的距离)。具有更精确几何的更新属性将在下一次迭代中传递到几何嵌入网络中。第 4 节介绍了消融研究,以证明更准确的几何嵌入的有效性。

4.Experiments

4.1 Datasets

数据集为 Stanford2D3D 、 Matterport3D 和 360D

4.2 Implementation details

介绍了一些实现细节。
我们采用使用的定量评估指标,包括绝对相对误差 (AbsRel)、均方根误差 (RMSE)、对数空间中的均方根误差 (RMSE(log)) 和带阈值的准确度δt,其中 t ∈ 1.25 , 1.2 5 2 , 1.2 5 3 t ∈ 1.25, 1.25^{2} , 1.25^{3} t1.25,1.252,1.253。指标旁边的箭头表示所有表格中性能更好的方向。我们使用 PyTorch 实现我们的网络,并在两个 Nvidia RTX GPU 上对其进行训练。我们使用 Adam 优化器的默认设置和 0.0001 0.0001 0.0001 的初始学习率和 cosine annealing 学习率策略。我们对 Stanford2D3D训练 80 80 80 个 epoch,对 Matterport3D 和 360D 训练 60 60 60 个 epoch。我们使用的默认patch数量是 18 18 18个。我们用于 Stanford2D3D 和 matterport 的默认patch大小是 256 × 256 256 × 256 256×256, FoV 是 80 ° 80° 80°。对于 360D ,我们使用 128 × 128 128 × 128 128×128 作为patch大小。在这些实验中,我们利用预训练的 ResNet 作为图像编码器。网络是端到端训练的,所有迭代都使用相同的模型。对于损失函数,我们采用 BerHu 损失进行深度监督。最终损失是所有迭代的深度损失的总和。

4.3 Overall performance

结果不再赘述,如图6和表1。
在这里插入图片描述
在这里插入图片描述

4.4 Ablation studies

做了一些消融实验,结果如表2、3、4。
在这里插入图片描述
在这里插入图片描述

5.Conclusion

在本文中,我们提出了一种新颖的管道 OmniFusion,用于全景深度估计。 为了解决全景图像中呈现的球面失真,以及提高对高分辨率输入的可扩展性,我们使用基于测光投影的切线图像呈现。 为了减轻patch之间的差异,我们引入了一种几何感知融合机制,它将 3D 几何特征与图像特征融合在一起。 自注意力transformer被集成到pipeline中,以全局聚合来自patch的信息,从而导致更一致的patch预测。 我们通过迭代细化方案进一步扩展了几何感知融合,该方案进一步改进了具有更多结构细节的深度估计。 我们表明 OmniFusion 有效地减轻了失真,并显着提高了深度估计性能。 我们的实验表明,我们的方法在多个数据集上实现了最先进的性能。

猜你喜欢

转载自blog.csdn.net/YuhsiHu/article/details/124787259
今日推荐