基于隐式表达的大规模三维建图的方法

描述

‍导读   本文是VCC马雪奇同学对论文 SHINE-Mapping: Large-Scale 3D Mapping Using Sparse Hierarchical Implicit Neural Representations[1] 的解读,该工作来自德国波恩大学摄影测量与机器人实验室,已被机器人领域的顶级会议ICRA 2023收录。   项目主页:  https://github.com/PRBonn/SHINE_mapping    该工作提出了一种基于隐式表达的大规模三维建图的方法,它利用分层八叉树的结构来存储可学习的局部特征,并通过共享的浅层MLP将局部特征转换为有符号距离场。相比于以往的工作,该方法能够以更小的资源消耗,重建出更准确、更完整的大规模场景。     注:本文图片与视频均来自原论文与其项目主页。    

 

I      引言  对移动机器人而言,在大规模的室外场景中进行定位和导航是一项常见的任务。因此,一个精确的三维环境地图变得尤为重要。重建的三维场景地图除了要足够精确,还应该尽可能地减少内存消耗。而目前的建图方法往往采用空间网格来表示三维地图[2][3][4],这种方法很难同时满足精确建图和减少内存的要求。   最近,基于隐式神经网络的表示方法在精确重建网格的同时,还能保持低内存消耗的要求。不过,这类方法通常应用于RGB-D数据构建的三维场景[5][6][7],在LiDAR数据方面应用的不多。此外,这类方法只适用于小型场景,很难应用于大规模的室外场景中。   本次导读论文从Takikawa等人[8] 的工作中得到启发,通过构建稀疏的分层隐式神经网络表示,完成了对大规模场景的增量式重建。该方法利用八叉树的稀疏数据结构来增量式地存储学习到的局部特征,并基于一个浅层的MLP将学习到的局部特征转换为有符号距离场。除此之外,该工作还设计了一个二值交叉熵损失函数,能够高效地实现局部特征优化。并且,该论文采用正则化的方法对特征更新进行约束,有效地缓解了在大规模场景建图过程中遇到的灾难性遗忘问题。实验结果表明: (1) 在密集点云采样区域,该方法的重建精度优于基于TSDF的方法[4][9] 以及基于体积渲染的隐式神经映射方法[7]; (2) 在稀疏点云采样区域,该方法的重建完整度优于非学习的方法[12]; (3) 相比于基于TSDF的方法,该方法重建的场景内存消耗更小。

II      技术贡献 

本工作主要贡献如下:

提出了一种新的基于稀疏分层八叉树的大规模场景表示方法。该方法增量式地将学习到的局部特征向量存储在八叉树中,并通过一个浅层的神经网络将学习到的局部特征转换为有符号距离值;

设计了一种二值交叉损失函数,能够实现快速且鲁棒的局部特征值优化;

通过对特征进行正则化,有效避免了灾难性遗忘问题对大规模场景建图的影响。

III      方法介绍  SHINE-Mapping以激光雷达点云作为输入,利用稀疏分层八叉树以及全局共享的MLP解码器来隐式地表示连续空间中的有符号距离场。该方法以直接测量的点云作为监督,通过在线优化MLP解码器输出的有符号距离值来捕捉局部场景中的几何信息。最后,该方法利用Marching Cubes[10]将有符号距离场转换为显式的网格信息。   隐式神经地图表示 首先,SHINE-Mapping将三维空间中的局部特征存储在稀疏分层八叉树中,实现了隐式地图表示,有效地减少了建图过程中的内存开销。其次,该方法将八叉树中存储的多层局部特征进行求和,并送入到MLP中进行解码,从而得到三维空间中的有符号距离场。   此外,为了能够快速查找局部空间中的特征信息,SHINE-Mapping将八叉树中每一层特征信息存储在一个哈希表中,并通过独特的莫顿码,将多维数据映射到一维。这样的设计使得该方法能够轻松地扩展地图,而无需事先分配内存,从而有效地提升了建图速度。

机器人

  图1 SHINE-Mapping整体重建过程   图1为SHINE-Mapping重建隐式表示地图的整体过程。为了便于理解,上图中仅描述了两个层级的特征,绿色和蓝色。该方法的流程为:对于任意的查询点  首先从最底层(第0层)开始,对  的空间位置进行三线性插值,从而得到第0层的特征。然后以此类推,获得第1层的特征信息。接着,该方法通过对多层的特征信息进行求和,得到合并后的特征,并将合并后的特征送入到MLP中,从而获得  位置点的有符号距离值。由于整个过程是可微的,因此可以通过反向传播的方式对特征向量和MLP参数进行联合优化。   训练与损失函数 因为LiDAR能够提供准确的三维空间测距结果,因此该方法直接以LiDAR作为真值,以二值交叉熵  作为损失函数来对特征向量和MLP参数进行监督训练。除此之外,由于该方法的网络输出是有符号距离值,为了能够得到准确的输出结果,该方法在损失函数中添加了一个Eikonal项[11]:   其中  为网络模型的输出,  为网络模型的参数,  为网络模型的输入。   得到的损失函数如下: 其中,  为超参数,其表示  的权重。   增量式重建 在增量式重建工程中,由于每次重建只聚焦于当前的局部区域,忽略了之前重建区域的信息,往往会导致最终的全局重建性能下降。为了避免这种问题对重建结果的影响SHINE-Mapping在损失函数中添加了正则化项  用于约束参数更新: 其中,  为权重,表示先前训练数据的Loss对于参数变化的敏感性。  为当前的参数值,  为之前数据训练收敛之后的参数值。增量式重建的损失函数如下:  其中,  为超参数,表示  的权重。     IV      部分结果展示 

接下来我们首先以虚拟场景数据集MaiCity dataset为例,展示SHINE-Mapping与之前方法 Voxblox、VDBFusion、Puma[12] 以及添加可微渲染 (Differentiable Rendering: DR) 的SHINE-Mapping的重建结果对比。第一行展示的是重建后的网格结果,其中,黑色线框部分为街道两旁的“树”;第二行展示的是重建结果的误差图,从蓝色到红色的颜色图表示从-5cm到5cm的有符号重建误差。

机器人

图2 在MaiCity数据集上,不同方法的重建结果对比

表1为不同方法在MaiCity数据集上的重建质量评价结果。可以看出,SHINE-Mapping与先前的大规模室外场景建图方法相比,在完整性误差,准确性误差、Chamfer-L1误差、完整度、F-score上均表现 SOTA。

机器人

表1 不同方法在MaiCity数据集上的重建质量对比

机器人

图3 在MaiCity数据集上,SHINE-Mapping增量式重建过程

接下来是SHINE-Mapping在真实场景数据集Newer College dataset上的重建结果。第一行展示的是不同方法重建的Newer College网格结果,黑色线框部分为“树”;第二行展示的是重建结果的误差图,从蓝色到红色的颜色图表示从-50cm到50cm的有符号重建误差。

机器人

图4 在Newer College数据集上,不同方法的重建结果对比

机器人

‍图5 在Newer College数据集上,SHINE-Mapping的重建结果

表2为不同方法在Newer College dataset上的重建质量评价结果。可以看到,在真实场景数据集上,相比于其他方法,SHINE-Mapping的重建质量也是最好的。

机器人

表2 不同方法在Newer College数据集上的重建质量对比

下图描述了在MaiCity dataset与Newer College dataset两个数据集实验中,内存消耗与建图质量之间的关系,地图的分辨率从100cm到10cm。从对比结果可以看出,SHINE-Mapping方法可以使用更小的内存资源来重建出质量更高的室外地图。

机器人

图6 不同方法在内存效率与重建误差上的表现

  下图为SHINE-Mapping在KITTI dataset上的重建过程。可以看到,即使是大规模的实际复杂街道场景,该方法依然可以精确地重建出道路的真实样貌。    

机器人

图7 SHINE-Mapping在KITTI数据集上的重建过程

V      总结与展望  本次导读的论文提出了一种基于LiDAR的大规模三维场景建图方法。与基于TSDF的方法不同,SHINE-Mapping方法使用基于八叉树的隐式表示法,将学习到的隐式特征存储在哈希表中,大大缩短了处理时间。其次,该方法将学习到的特征通过一个MLP转换为有符号距离值,并通过Marching Cubes进行显式化网格重建。除此之外,该方法通过对损失函数进行调整,并添加相应的正则化,避免了增量式重建过程中遇到的灾难性遗忘问题。实验结果表明,该方法能够以较小的内存重建出更为准确和完整的三维地图。       VI      思考与讨论  Q: SHINE-Mapping方法将局部特征信息存放入八叉树中时,使用了其中的几层呢?又是如何实现快速查找对应的特征信息的呢?  A: 如下图所示,假设八叉树为11层,SHINE-Mapping方法将最低的三层作为局部特征存放层,即第0,1,2层(分别对应图中的红色、绿色、蓝色方格)。为了能够加速建图速度,SHINE-Mapping将八叉树中第 0,1,2层的局部特征信息存储在哈希表中,并且每一层对应一个哈希表。当需要查询指定点的局部特征时,使用哈希表可以很快得到相应的特征信息。  

机器人

  图8 SHINE-Mapping对空间进行网格划分,并得到局部特征信息   Q: 在增量式重建过程中,是否可以使用预训练的MLP作为解码器来得到相应的有符号距离值?  A: 是的,虽然本文提出的方法可以在训练过程中联合优化八叉树中的局部特征信息以及MLP中的参数,但是在实际增量式重建过程中,作者采用的是预训练的MLP来得到对应位置的有符号距离值,一方面这样可以加快重建的速度,另外一方面,在实验过程中,使用预训练的MLP可以得到更好的重建效果。    以下是开放性问题,欢迎读者朋友留言讨论:  Q: SHINE-Mapping在增量式重建的过程中,实际上是增量式地更新空间中的局部特征信息,并在更新完整个地图之后,使用MLP将局部特征信息转换为有符号距离值,然后使用Marching Cubes来显式的构建网格。因此,如果想在建图的过程中,实时地查看重建的网格信息,则需要不断地调用MLP和Marching Cubes,这将会导致实时的计算效率非常低。那么应该如何改进这一方法,或者是否可以使用其他的网格构建方法,使得在快速建图过程中,能够实时地查看重建效果呢? 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分