前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​OA-SLAM:在视觉SLAM中利用物体进行相机重定位

​OA-SLAM:在视觉SLAM中利用物体进行相机重定位

作者头像
点云PCL博主
发布2023-08-25 13:56:59
4670
发布2023-08-25 13:56:59
举报
文章被收录于专栏:点云PCL

文章:OA-SLAM: Leveraging Objects for Camera Relocalization in Visual SLAM

作者:Matthieu Zins,Gilles Simon, Marie-Odile Berger

编辑:点云PCL

代码:https://gitlab.inria.fr/tangram/oa-slam.git

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。文章未申请原创转载需联系知乎作者。

摘要

这项工作探索了在未知环境中使用物体的同时定位与地图构建(SLAM)中,并提出了一个基于物体的辅助系统(OA-SLAM)。更具体地说明了与低级别特征点相比,场景中物体的主要优势在于它们更高级的语义和辨识能力。相反特征点在空间定位精度方面优于用于表示物体的通用粗糙模型(长方体或椭球体),本文展示了将特征点和物体结合起来在解决相机位姿恢复问题方面具有很大的价值。我们的主要贡献包括:

(1)利用高级物体地标改进了SLAM系统的重新定位能力;

(2)构建了一个自动系统,能够识别、跟踪和重建具有3D椭球体的物体;

(3)展示了基于物体的定位可以用于重新初始化或继续相机跟踪。

我们的完全自动系统可以实现实时的物体建图和增强的位姿跟踪恢复,作者认为这对增强现实社区具有重要意义。我们的实验表明,相机可以从传统方法失败的视角重新定位。我们证明这种定位可以使SLAM系统在跟踪丢失的情况下继续工作,这在未经培训的用户中经常发生。我们的代码和测试数据已在gitlab.inria.fr/tangram/oa-slam上发布。

主要贡献

目前的先进SLAM方法如ORB-SLAM2,依赖于词袋描述子来寻找相似图像,以及基于外观的局部特征,如ORB或SIFT,用于在查询图像中的关键点和地图中的地标之间寻找匹配点。然而使用这些低级特征在视角发生显著变化时不太适合重新定位,因为它们对视角变化的不变性有限,且用于构建地图的一些表面可能不再可见。相反,近年来在物体检测领域取得了令人瞩目的进展,基于深度学习的技术现在能够以极强的稳健性从大量不同视角和环境条件中检测出物体。这自然使它们成为帮助基于视觉的相机定位的良好锚点。在这项工作中提出了一个适用于未知环境的完全自动化物体辅助(OA)SLAM系统,该系统能够构建由3D点和物体组成的语义地图,并利用这些高级地标来提高其重新定位能力。我们的主要贡献包括:

  • 改进的重新定位方法,结合了物体和点的优势,能够从大量不同视角估计相机姿态。
  • 一个完全自动的SLAM系统,能够实时识别、跟踪和重建物体。
  • 我们演示了我们的系统如何用于在先前构建的、潜在的增强地图上重新初始化相机跟踪,或在丢失跟踪后恢复相机跟踪。

图1:OA-SLAM能够实现实时的物体建图,并利用这些物体在大量不同视角下改善相机跟踪重新初始化的鲁棒性,右侧显示了增强现实可视化效果。

内容概述

我们的系统在图2中有详细说明。它基于ORB-SLAM2(跟踪、局部地图构建、闭环检测),并附加了额外的专用于物体的模块。这些模块使用了椭圆/椭球建模框架,并遵循与特征点相同的策略,即物体在帧之间进行跟踪,进行3D估计,插入地图,然后不断进行优化。特别是物体跟踪和物体初始重建被添加到主要的跟踪线程中,与局部特征点建图类似,局部物体建图也以类似的方式处理,并不断优化物体模型,它在一个独立的线程中运行。最后,重定位模块通过集成物体进行增强,从而极大地提高了其稳健性。

图2:系统结构:蓝色区域对应于在ORB-SLAM2主干中新增的元素。请注意,每个模块(跟踪、局部地图构建、闭环检测和局部物体建图)都在单独的线程中运行。

椭球物体表示

在这项工作中,我们将物体建模为一个3D椭球,并将其在图像中的观测建模为一个椭圆,这是一种粗略但轻量级的表示方法,只需要九个参数:三个用于轴的尺寸,三个用于方向,三个用于位置。此外椭球在任何视角下都投影为椭圆,其方程可以使用对偶空间以封闭形式表达。

物体检测和关联

我们使用最先进的物体检测网络YOLO 来获取视频帧中的物体检测结果,每个检测结果包括一个轴对齐的边界框、一个类别和一个检测分数。为了提高稳健性,我们只考虑分数大于0.5的检测结果,并丢弃其他结果。建立物体检测随时间的关联是我们系统的关键部分,给定当前帧中的一组检测结果,目标是将每个检测结果与现有的物体轨迹匹配,或决定创建一个新的物体轨迹。关联首先受到物体类别的限制。我们还考虑了检测框的重叠以及框之间的点匹配。这使我们能够处理不准确或部分的物体检测结果。

初始物体重建

我们的主要想法是在检测后快速生成3D物体假设,以便除了基于边界框的跟踪外,还可以执行基于模型的跟踪。验证并将物体整合到地图中稍后进行,如果在后续帧中的跟踪与初始假设一致,则可以进行模型的跟踪。否则,将剔除物体假设。

局部物体建图

物体优化:类似于ORB-SLAM2中的局部捆绑调整中的特征点,物体模型也会定期进行细优化,每次新的关键帧观察到地图中存在的物体时,通过最小化重投影误差来更新此物体。我们使用椭圆内切于检测框内的椭圆与估计椭球的投影之间的Wasserstein距离作为目标函数,这个距离已经被用作椭圆之间的大家函数,用于训练椭圆预测神经网络。

物体融合:在某些情况下,地图中的一个物体可能会重复出现,当检测到的物体在几帧内不可见,数据关联无法正确重新匹配它与现有轨迹,并在地图中插入新的物体时,这种情况可能会发生。为防止这种情况发生,我们的系统定期检查是否有重复的物体,如果两个相同类别的物体的3D对齐框IoU超过一定阈值,如果一个椭球的中心位于另一个椭球内,或者如果它们共享超过τ个公共的3D特征点,则认为它们是同一个唯一的物体。在这种情况下,关键帧中为两个对象跟踪的检测框被合并,然后初始化一个新的椭球,但只在关键帧上进行。

利用物体进行重新定位

ORB-SLAM2的原始重新定位方法具有良好的可靠性,但在查询图像与过去的相机轨迹之间有较大距离时往往失败。实际上它使用词袋描述符来查找相似的关键帧候选项,并寻找点匹配,但当重建地图上的视角与关键帧差异显著时,这种方法经常失败。如图2所述,我们通过基于物体的方法增强了重新定位,这种方法对视角变化更加稳健,当建立的点对应关系较少时,将触发该方法。事实上,从大型数据库中学习到的物体具有优势,它们可以从多种视角(前、后、顶、侧等)检测到,从而在没有场景中的物体特定知识的情况下开辟了从任何位置进行重新定位的可能性。鉴于从透视n点(PnP)计算得出的姿态比从物体对应关系得出的姿态更精确,我们的主要想法是通过从2D/3D物体对应关系计算得出的姿态来引导点匹配。通常,这个姿态足够使地标点的投影类似于检测到的点,从而可以轻松地进行点对应,并用于定位。

实验

为了评估我们的方法,我们使用了TUM RGB-D数据集中的两个场景:fr2/desk和fr3/long office household。该数据集提供了相机轨迹的真实位姿,然而该数据集每个场景仅有一个扫描,并且相机轨迹主要是轨道式的。因此,我们还使用标准智能手机相机记录了自己的序列。这使得我们能够在更多样化的环境和更多样化的视点评估我们的方法,无论是角度还是尺度。我们使用COLMAP获取了真实相机位姿。这也使我们能够使用非常通用的物体(书、椅子、杯子等),还有更具体的物体(雕像、古董瓶等)。例如,图10中的水槽和办公桌场景展示了我们的系统如何在日常环境中使用通用的物体检测器。更具体的物体,尤其是没有纹理的雕像,也经过了测试。这很好地展示了我们的系统如何在博物馆等场景中用于增强现实应用。对于这些物体,YOLO已经在少数手动标注的图像上进行了微调(约50张图像)。

基于物体建图

我们首先评估了系统的物体建图部分,该部分使用计算得到的相机姿势和物体检测结果,在实时情况下构建了场景中的物体的椭圆模型。图3显示了在fr2/desk和fr3/long office household序列上重建的地图。我们可以观察到,我们的粗略物体模型整体上很好地定位在地图中的物体上。

图3:在fr2/desk(顶部)和fr3/long office household(底部)上获得的地图,左上方的图像提供了视频序列的概述。1)物体地图;2)物体和特征点地图;3)与物体关联的特征点;4)物体地图显示在场景的稠密重建之上。

图4展示了一个小而具有挑战性的场景,在此场景中,三个重复的物体并排放置。实际上,物体类别不能用于约束数据关联,并且从侧面看时物体被遮挡。尽管如此,我们的系统仍然能够构建出三个准确的椭圆模型。

图4:相邻放置的重复物体的生成地图,左侧的图像提供了序列的概览。

最后,我们将我们重建的地图与EAO-SLAM 构建的地图进行了比较,如图5所示。使用了他们在https://github.com/yanmin-wu/EAO-SLAM发布的代码。

图5:使用我们的方法与EAO-SLAM获取的地图的比较,由于EAO-SLAM只在可视化时使用半稠密地图,所以这里未显示出来。

重定位

我们分析了将对象和点结合起来用于重新定位的优势。实验的情境如下:首先,我们使用我们的SLAM系统从有限的视角对场景进行地图制作,然后在不同视角的查询图像上调用重新定位过程。对于fr2/desk,我们将序列分为两部分:前700帧用于制作地图,而其余部分用于重新定位。我们还录制了自己的序列,以实现更多样化的视角,涵盖角度和尺度。图6和图7将我们估计的相机位置与ORB-SLAM2中可用的经典基于点的方法的结果进行了比较。我们可以清楚地看到,我们的方法能够在整个场景中精确定位相机。这要归功于对象检测器的稳健性,它可以从背后甚至侧面检测到对象。

图6:在fr2/desk上通过重新定位模块(逐帧)估计的相机位置,左上角的图像提供了用于构建地图的帧的概览。1)橙色的相机轨迹用于制作地图;2)使用蓝色的ORB-SLAM2重定位的相机;3)使用绿色的我们的系统重定位的相机,红色是地面真实轨迹。

图7中的游览和远近测试序列明显改变了场景与摄像机的距离。对于远离或靠近场景的查询图像,估计的姿势精度仅略微下降。相反,原始的基于点的重新定位只能为接近地图制作用于定位的视点产生姿势估计。

图7:重定位模块在具有大视角变化的自定义场景上(逐帧)估计的相机位置。上图:用于制构建地图的帧的概览以及估计的相机轨迹的地图(用橙色表示)。下图:在3个测试序列上获得的重新定位结果。图像提供了查询帧的概览,使用ORB-SLAM2估计的相机位置用蓝色表示,我们的方法用绿色表示,真值位置用红色表示。

这也可以在图8中的曲线上看出,这些曲线显示出更大比例的图像可以被定位。我们的方法虽然没有提高基于点的方法的精度,主要是由于粗糙的对象表示,但显著扩大了其操作范围。在fr2/desk上,我们的方法在大约70%的图像上能够进行定位,这一平台效应可以通过一部分帧中没有或只有一个对象可见来解释。我们还在fr2/desk上评估了仅对象方法。图8中的结果显示,它保持了对象的鲁棒性,但丧失了点的精度。

图8:相对于位置误差阈值的估计相机位置的百分比。

集成对象的捆集调整

在之前的实验中,我们展示了对象是如何被我们的SLAM系统重构的,以及为什么思考这些更高级的地标对重新定位是有益的。在本节探讨了在相机跟踪过程中使用对象的问题。在我们的系统中,对象不参与相机跟踪,它们在单独的优化中独立地进行了优化,仅用于重新定位。

图9:在SLAM捆集调整中集成对象的三种配置。

因此,我们创建了两个其他版本,这两个版本在捆集调整中涉及对象(请参见图9)。一个称为Obj dets,其中对象被整合到捆绑调整中,但不更新其椭球模型。另一个称为Full BA,在其中对象模型完全被整合到捆绑调整中,与相机姿势和点地标一起。在结合基于点和基于对象的因素时,难点在于需要平衡它们的成本。因此,我们将对象残差任意缩放,以便使其值与特征点残差的数量级相同。我们在fr2/desk和fr3/long office household序列上测量了不同捆绑调整配置的关键帧估计位置的误差。结果详见表1,在图优化中集成对象并没有明显改善,甚至在完全基于相机-点-对象的捆绑调整中降低了姿态的精度。

应用于增强现实

初始化3D跟踪 :增强的重新定位能力在初始化增强现实应用程序中的相机3D跟踪方面特别有意义,一旦建立了工作区域的地图,并且可能使用虚拟元素进行了增强,相机姿态就会与地图进行配准。我们在图1和图10中展示了如何在相对复杂的场景中使用我们的方法,其中场景主要从一侧看,距离保持恒定用于建图,然后在另一侧以不同的距离执行定位。

图10:在三个场景中进行的相机跟踪重新初始化(水槽、书桌、博物馆)。对于每个场景,用于建图的帧的概览显示在左上角,下面的四个帧对应于由我们的系统定位的查询图像。

SLAM恢复能力:图11中呈现了一个典型的场景,演示了我们的SLAM系统更强的恢复能力:(1-4)系统最初在3D中跟踪相机并建立了点和对象的地图。(5-6)由于相机运动突然变化(在此实验中,相机只看到地板),跟踪丢失。(7-9)当重建的场景再次可见时,重新定位模块从对象中估计相机姿态,建立点匹配并使跟踪和建图继续进行。在这种情况下,我们的基于对象的方法显著扩展了SLAM恢复可能的视点范围,这在传统的基于点的方法中受到限制。

图11:使用OA-SLAM进行相机跟踪恢复,图像中显示在对象检测上方的数字分别是它们关联对象的ID、检测得分和类别。

部分建模

根据场景建模的详细程度进行适应。当相机从相对远处看到场景时,对象在图像中显得很小,但通常数量足够,可以允许重新定位,这至少需要三个对象,在这种情况下,使用全局椭球模型就足够了。然而,当相机靠近时,可能只有一个或两个对象可见,因此通过部分建模尤其有助于增加潜在锚点的数量。还有一个有趣的方面是更好地处理部分遮挡的对象。我们的方法可以以非常灵活的方式处理这一点,因为检测器网络可以进行微调,以检测对象的可区分部分,只需要在少数图像中进行一些手动注释。图12显示了我们的方法的结果,经过微调的YOLO可以检测出雕像的部分(头部、肩膀和底部)。在相机靠近的情况下(顶行),这些部分用于重新定位,而当相机远离场景时(底行),只使用完整的对象检测。

图12:按部分建模示例。左:重建地图。右:使用完整对象(底行)或部分(顶行)进行定位的图像。

总结

本文提出了将物体整合到基于特征点的单目SLAM系统中,并将它们用作更高级别的地标以改善其重定位能力,我们的系统利用现有的物体检测网络,并能够实时构建轻量级的物体地图,通过将我们的方法与最先进的ORB-SLAM2系统进行比较,证明在物体的辅助下,我们的系统能够从更多不同的视角进行重定位。通过实验证明了这种改进的重定位能够用于在增强地图上初始化3D跟踪,或在AR应用中在跟踪丢失后恢复SLAM跟踪,用于物体的粗略椭圆模型使我们能够以最小的代价在未知的环境中部署系统。尽管我们在实验中证明了系统的效率,但它也有一些局限性。首先我们的重定位方法要求至少在地图中存在三个物体在查询图像中被检测到。这个要求可能会限制其效率,特别是在视野非常狭窄的情况下,但可以通过使用物体的按部分建模来减少。其次,场景中的动态物体未被我们的系统处理。为此可以考虑将我们的基于物体的推理与静态/动态识别相结合,作为未来工作的研究方向。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点云PCL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档