CVPR 2022 | 牛津与清华提出BNV-Fusion:实时稠密三维重建创新工作

摘要:
最近的神经网络隐式表达(neural implicit representation)因为其在三维重建和新视角图片生成的显著效果受到广泛关注,可是直接把神经网络隐式表达运用到实时三维重建上主要有两个难点:

  1. 实时性,neural implicit representation通常需要非常长的训练时间;

  2. 可更新性,因为重建是一个在线的过程,算法需要根据新的深度图更新对场景的重建。

针对以上问题,我们创新性地提出BNV-Fusion。本作的亮点在于我们所提出的双层融合机制能够高效并且精确地把新的深度图融合进对三维场景的隐式表达中。在运行速度上,BNV-Fusion显著优于之前基于神经网络隐式表达的工作。在重建效果上,本作也能精确地重建之前工作容易忽略掉的细节。
0.png

:::

论文名称:
BNV-Fusion: Dense 3D Reconstruction using Bi-level Neural Volume Fusion
论文链接:
https://arxiv.org/pdf/2204.01139.pdf
代码链接:
https://github.com/likojack/bnv_fusion
视频解读-Youtube:
https://www.youtube.com/watch?v=ptx5vtQ9SvM
视频解读-Bilibili:
https://www.bilibili.com/video/BV12Y4y1x7c9/

一、研究动机

图一.jpg

图一 三维重建示意图

:::


实时三维重建要求在移动的深度相机获得的一系列深度图上重建稠密的三维表面(如上图所示)。这项任务具有广泛的用途,例如展示三维模型,AR/VR的相关应用。传统的TSDF-Fusion,例如著名的Kinect-Fusion[1],虽然在普通场景下能绘制三维场景,但是他们的局限性在于体素(Voxel)大小的选择上。过大的体素虽然能有效过滤深度图的噪声,但是会失去重建的细节。过小的体素则会导致相反的问题。

最近受到广泛关注的神经网络隐式表达(Neural implicit representation),例如DeepSDF[2],NeRF[3] 在三维模型重建和新视角生成方面都取得了非常好的效果。他们能够绕过上述传统重建方法遇到的问题。可是,把神经网络隐式表达运用到实时三维重建上仍然面临一些困难:

  • 神经网络隐式表达需要训练长达数小时甚至数天来重建一个场景。因此达不到实时的要求。

  • 因为深度相机在持续提供新的深度图,神经网络隐式表达还需要能根据新的深度图来更新已重建的地图。现有的大部分方法通常不会去考虑更新地图的这个要求。

尽管近来有一些工作尝试将神经隐式表达应用在实时三维重建上,他们在运行时间和重建精度上离传统的Kinect-Fusion还有较大距离。我们认为主要的限制因素在于如何高效地融合新的深度图到隐式表达。针对这个问题,我们创新地提出双层融合方法(Bi-level Fusion)

二、方法

图二.jpg

图二 BNV-Fusion结构图

:::


2.1 概述

如上图所示,BNV-FUsion主要有三个步骤。第一步是Encoding:给定一张新的深度图,我们首先将其映射到一个描述这个深度图三维表面的neural implicit volume。第二步是局部融合(local-level fusion):我们在隐式空间中局部地融合新的neural implicit volume到global representation中,最后一步是全局融合(global-level fusion):在局部融合的基础上,我们通过多角度下的深度图观测优化描述整个三维场景的neural implicit volume。

2.2 三维场景的表达方式

我们对三维空间的表达基于稀疏的neural implicit volume。Volume里的每一个voxel v = ( p , l ) \mathbf{v} = (\mathbf{p}, \mathbf{l}) v=(p,l) 包含了这个voxel在空间中的位置 p \mathbf{p} p 和一个 N N N 维的隐式码(latent code) l ∈ R n \mathbf{l}\in\mathcal{R}^n lRn 。隐式码在隐式空间中表达了局部的三维表面。所有的voxel结合起来所形成的feature volume就在隐式空间中表达了整个场景的三维表面。给定三维空间中的任意点 x \mathbf{x} x,我们首先将其坐标转换成基于临近voxels的局部的坐标: x ˉ i = x − p i \bar{\mathbf{x}}_i = \mathbf{x} - \mathbf{p}_i xˉi=xpi ,它的截断符号距离函数(TSDF)便可用以下公式获得:

s = ∑ i = 0 N = 7 w ( x ˉ i , p i ) D ( l i , x ˉ i ) , s = \sum_{i=0}^{N=7} w(\bar{\mathbf{x}}_i, \mathbf{p}_i)\mathcal{D}(\mathbf{l}_i, \bar{\mathbf{x}}_i), s=i=0N=7w(xˉi,pi)D(li,xˉi),

D ( ⋅ ) \mathcal{D}(\cdot) D() 是接下来要介绍的Decoder。

2.3 学习表示局部三维表面的隐式空间

在上一小节中,我们介绍了我们是如何在隐式空间中描述三维场景的,我们将在这一小节介绍如何学习一个局部三维表面的隐式空间。为此,我们设计了一个基于MLP的encoder-decoder network。连接encoder和decoder的bottleneck层,就是我们需要学习的隐式空间。具体来说,Encoder E \mathcal{E} E 将局部的三维点云映射到一个 N N N 维隐式码,Decoder把隐式码和一个三维点作为输入,输出在这个隐式码所代表的的三维表面里,这个三维点的TSDF。

训练阶段

我们采用监督学习来同时训练encoder和decoder。训练数据用的是ShapeNet的CAD models。损失函数如下:

L ( θ E , θ D ) = ∥ D θ D ( E θ E ( p ) , x ) − s x g t ∥ 1 , L(\theta_{\mathcal{E}}, \theta_{\mathcal{D}}) = \|\mathcal{D}_{\theta_{\mathcal{D}}}(\mathcal{E}_{\theta_{\mathcal{E}}}(\mathbf{p}), \mathbf{x}) - s^{gt}_x \|_1, L(θE,θD)=DθD(EθE(p),x)sxgt1,

s x g t s^{gt}_x sxgt x \mathbf{x} x 这个点所对应的SDF。

使用阶段

图三.jpg

图三 把深度图映射到implitic neural volume的示意图

:::


如图二所示,对于第 t t h t^{th} tth 帧的深度图,我们首先将其投射到三维空间中成为三维点云。我们把这个三维点云分割成一个个小胡交叠的局部点云。已经训练好的Encoder E \mathcal{E} E 便可以将每一个局部点云映射到一个隐式码。所有隐式码集合起来描述这张深度图所代表的的三维表面的neural implicit volume, V c t s \mathbf{V}^s_{c_t} Vcts

2.4 双层融合机制 (Bi-level Fusion)

本作的关键就是接下来要介绍的双层融合机制。我们已在上节中介绍了如何将深度图转化成一个描述单张深度图的neural implicit volume, V c t s \mathbf{V}^s_{c_t} Vcts。Bi-level Fusion的工作就是将 V c t s \mathbf{V}^s_{c_t} Vcts融合到描述整个场景的global neural implicit volume, V w t \mathbf{V}^{t}_w Vwt中。

局部融合(local-level fusion)

局部融合的机制类似于传统的Kinect-Fusion,都是采用带权重的平均(weighted averaging)。区别在于我们所平均的是每一个voxel的latnet code,而Kinect-Fusion的操作对象是TSDF。计算过程如下:

V w t = W t − 1 V w t − 1 + W c t s V w s W t − 1 + W c t s , \mathbf{V}^{t}_w = \frac{\mathbf{W}^{t-1} \mathbf{V}^{t-1}_w + \mathbf{W}^s_{c_t} \mathbf{V}^{s}_w}{\mathbf{W}^{t-1} + \mathbf{W}^{s}_{c_t}}, Vwt=Wt1+WctsWt1Vwt1+WctsVws,

W t = W t − 1 + W c t s , \mathbf{W}^{t} = \mathbf{W}^{t-1} + \mathbf{W}^{s}_{c_t}, Wt=Wt1+Wcts,

V w \mathbf{V}_w Vw W \mathbf{W} W 分别表示全局的neural implicit volume和它对应的权重。

t − 1 t-1 t1 t t t 上标分别对应更新前与更新后的状态。

我们之所以把这一层融合命名为局部融合的原因就在于每一个voxel的更新都是独立的。尽管局部融合非常高效,只依靠局部融合所生成的三维重建并不理想。最重要的原因在于隐式空间中的线性运算,例如我们采用的weighted averaging,有时并不精确地对应三维表面的变化。其次,局部融合也会受到噪声的影响。

全局融合(global-level fusion)

针对上述问题,我们提出双层融合的第二层,全局融合。它本质是对neural implicit volume的一个迭代优化过程,使得volume所描述的三维表面是统一,去噪声,平整的。优化要达到的目标就是从volume 解码出来的TSDF需要与不同角度的深度图的观测值一致。

在每次迭代中,我们随机选取已经获得的深度图,并从中随机选取若干像素。对于每一个被选取的像素,我们可以从它投射到三维的射线上随机采样 N N N 个三维查询点 { x 0 , x 1 , . . . , x n } \{\mathbf{x}_0, \mathbf{x}_1, ..., \mathbf{x}_n\} {x0,x1,...,xn} ,采样机制类似于NeRF的“粗-细”分层采样机制,目的就是希望在三维表面采样更多的点。给定已知的深度观测, p \mathbf{p} p ,我们可以算出每一个查询点所对应的TSDF:

s ˉ i = min ⁡ ( max ⁡ ( ∥ p − x i ∥ 2 , − δ ) , δ ) \bar{s}_i = \min(\max(\|\mathbf{p} - \mathbf{x}_i\|_2, -\delta), \delta) sˉi=min(max(pxi2,δ),δ) , δ \delta δ 是截断距离。

把查询点的坐标从相机坐标系转换到世界坐标系后,我们可以用2.2中介绍的公式解码查询点在neural implicit volume所对应的TSDF。至此,优化的目标函数如下:

argmin V w Σ i = 0 n ∥ s i − s ˉ i ∥ 1 , \text{argmin}_{\mathbf{V}_w} \Sigma^{n}_{i=0} \|s_i - \bar{s}_i\|_1, argminVwΣi=0nsisˉi1,

s i s_i si 是从neural implicit volume V w \mathbf{V}_w Vw 中解码的TSDF。

三、实验结果

我们在三个广泛使用的数据集上测试了BNV-Fusion并对比了最近的基于neural implicit representation的工作和传统的TSDF-Fusion。结果如下:

表一.png

表一 3D Scene dataset 上的对比

表二.png

表二 ICL-NUIM dataset上的对比

表三.png

表三 ScanNet dataset上的对比

:::


可以看到BNV-Fusion在多个数据集上都有优于其他方法的结果。我们可视化了不同方法的重建效果,以供更直接的对比参考:

::: hljs-center

图四.jpg

图四 3D Scene Dataset 的对比图

:::


强烈建议读者观看我们所提供的视频(youtube, bilibili),从中可以提供更直观的对比,和实时重建的过程。

剥离试验

为了验证bi-level fusion的必要性,我们对local-level fusion 和global-level fusion进行了剥离试验,结果如下:

表四.PNG

表四 Bi-level Fusion的剥离试验

:::


完整的bi-level fusion能提供最优的重建效果。

我们也可视化了剥离试验对重建效果和速度的影响。从图四可以看到,如果只用local-level fusion,voxel size的大小会对重建效果有很大的影响。虽然小的voxel能捕捉到更多重建的细节,但是受到噪声影响大,当我们逐渐增大voxel大小(从左到右),噪声逐渐消失,但是也失去了需要重建的细节。

图五.jpg

图五 只用local-level fusion的情况下,Voxel size大小对重建的影响

:::


下图展示了local-level fusion的重要性。它给global-level fusion提供了一个较好的初始值,所以global-level fusion能经过 5 5 5 个迭代就能收敛(图中橙线),若是不使用local-level fusion(图中蓝线),我们可以看到优化过程需要更多的迭代,并且经过 20 20 20 个迭代后仍然不如使用了local-level fusion的方法。

图六.png

图六 local-level fusion对速度的影响

:::


运行时间

在单张GTX 3080Ti显卡上,local-level fusion可以轻易做到大于 20 20 20 frames per second (fps),global-level fusion可以达到 5 5 5 fps,平均来说,完整的系统可以达到 2 − 4 2-4 24 fps。

四、结语

我们提出了BNV-Fusion,一个基于神经网络隐式表达的实时三维重建的框架。本作的重点就是双层融合机制:局部融合(local-level fusion)能高效地将新的深度图融合到全局的Volume里面;全局融合(global-level fusion)能基于局部融合的结果优化重建效果。在多个数据集上的实验验证了BNV-Fusion的显著效果,超过了以往先进方法。

参考

[1] Newcombe, Richard A., et al. “Kinectfusion: Real-time dense surface mapping and tracking.” 2011 10th IEEE international symposium on mixed and augmented reality. IEEE, 2011.

[2] Park, Jeong Joon, et al. “Deepsdf: Learning continuous signed distance functions for shape representation.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.

[3] Mildenhall, Ben, et al. “Nerf: Representing scenes as neural radiance fields for view synthesis.” European conference on computer vision. Springer, Cham, 2020.

-The End-
关于我“门”

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门-TechBeat技术社区(https://datayi.cn/w/GR4vQ82o)以及将门创投基金。

将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。

如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:

bp@thejiangmen.com

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CVPR 2018是计算机视觉和模式识别领域的顶级会议,遥感影像三维重建是其讨论议题之一。遥感影像三维重建是通过利用遥感影像数据,结合计算机视觉和图像处理技术,实现对地球表面物体的三维模型重建。 在CVPR 2018中,有许多关于遥感影像三维重建的研究论文被发表。这些研究着眼于提高重建精度、加速计算过程和提升稳定性等方面。主要的研究方法包括立体视觉、结构光和深度学习等。 首先,立体视觉是一种常用的遥感影像三维重建方法。它基于从不同角度获取的遥感影像,通过三角测量等技术,推断出物体的三维结构。该方法的优点是准确性高,但需要多张角度的遥感影像。 其次,结构光技术在遥感影像三维重建中也有应用。它通过投射结构光模式,结合摄影测量原理,测量地物表面的深度信息。结构光技术的优点是非接触性和高精度性能,但受限于光线和结构光的传播距离。 最后,深度学习是近年来兴起的遥感影像三维重建方法。深度学习通过构建卷积神经网络等模型,实现对遥感影像中物体的语义分割和深度估计。这种方法的优势是可以从大量遥感影像数据中学习,并具有较强的泛化能力。 综上所述,CVPR 2018中关于遥感影像三维重建的研究主要集中在立体视觉、结构光和深度学习等方面。这些研究方法将为地球表面三维模型的重建提供更高的精度和效率,对于应用于地质勘探、城市规划和环境监测等领域具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值