最新发布!室内SLAM回环新思路!

作者:泡椒味的口香糖 | 来源:3DCV

参考:最新发布!室内SLAM回环新思路!

仅供编者学习使用,如有侵权请联系删除!!

0. 写在前面

        SLAM回环依赖可靠的位置识别进行全局定位,目前像ORB-SLAM3这类主流方法主要是依赖BoW词袋匹配。但是深度学习也可以做位置识别,通常将其视为一个检索问题,首先从局部特征创建全局描述符,并将其与已知地点描述符的数据库进行匹配。

        室外位置识别已经被广泛研究,但是室内位置识别的相关研究还较少,主要是因为室内位置有很多相似结构和外观。今天笔者为大家分享一篇室内位置识别的最新开源方案AEGIS-Net,相较于其他学习方案可以实现很好的位置识别。

        下面一起来阅读一下这项工作~

0.1.BOW是什么?

        BoW,Bag of Words,词袋。一帧图像,若干个特征点,可以映射得到若干个word,word集合就是BoW

        那么,如何将特征点映射得到word呢。word是局部范围内特征点的聚类中心,那么需要进行聚类操作。比如有N个特征点,希望聚类成M个word,M < N。通过K-means聚类,对N个特征点进行聚类,这些特征点来自大量图像提取的fast特征,数量庞大,一次聚类成M个中心,会很慢。那我们少次多量,一次聚类k个,k < M。得到k个簇之后,再对每个簇继续划分k个。执行d次,就得到了最终需要的word数量。

M=k^{d}

        上面的过程是在创建词典,实际是一个kd树的过程。kd树一共d层,每层k个节点。叶子节点就是word,非叶子节点就是少量多次聚类操作的聚类中心,就是最具代表性的那个特征点。

        词典创建完了,怎么用呢。新帧的特征点通过kd树查找得到对应的word,所有word构成BoW。除了计算BoW,还需要维护和更新两个信息,正向索引(Direct Index)、逆向索引(Inverse Index)。

        假设要在关键帧数据库中,找到与当前帧最相似的一帧,只需要找与当前帧共享单词的这些帧(逆向索引表记录下来了),统计他们与当前帧共享单词的总数,取总数最大的那一帧即可。

        正向索引则是针对每一帧而言,每帧图像有一个正向索引表,记录在kd树某一层,命中的节点集合,以及节点中的特征点。

1. 摘要

        本文提出了一种新的室内位置识别模型AEGIS - Net,该模型采用RGB点云通过聚合底层的颜色、几何特征和高层的隐式语义特征来生成全局位置描述符。然而,与简单的特征级联不同,自注意力模块被用来选择最重要的、最能描述室内位置的局部特征。我们的AEGIS-Net由语义编码器、语义解码器和注意力引导的特征嵌入组成。该模型分两阶段进行训练,第一阶段侧重于辅助语义分割任务,第二阶段侧重于地点识别任务。我们在ScanNetPR数据集上评估了我们的AEGIS-Net,并将其性能与一个基于预深度学习特征的方法和5个最新的基于深度学习的方法进行了比较。我们的AEGIS-Net取得了出色的性能,并且优于所有六种方法。

2. 效果展示

        这篇文章面向的是大规模室内场所的位置识别,AEGIS-Net本身是CGiS-Net的扩展,声称是第一个利用自注意力来指导局部特征选择,从而产生更具判别力的全局位置描述符的工作。

        AEGIS-Net将颜色、几何和隐式语义特征与自注意力相结合,利用一个辅助的语义分割任务来训练提取语义丰富的局部特征的网络,然后通过自注意力(SA)层选择局部特征并嵌入到全局描述符中。

图片

3. 具体原理是什么?

        AEGIS-Ne完整模型架构。包括三个主要部分:语义编码器、语义解码器和注意力引导的特征嵌入。考虑到室内场景中点云密度的变化,作者在SOTA 3D点云分割网络KP - FCNN上构建了语义编码器和语义解码器。对于注意力引导的特征嵌入,其核心部件是SA层和Net VLAD层。

图片

4. 和其他SOTA方法对比如何?

        作者在ScanNetPR数据集上评估了所提出的AEGIS-Net,对比方案包括手工方案和学习方案。先看一个平均召回率的定量结果。

图片

        Top-1检索实例。红色√代表检索成功,红色❌代表检索失败。

图片

5. 总结

        这篇文章提出了用于室内场景识别的AEGIS - Net,能够在注意力引导下选择最能描述室内场景中特定地点的颜色、几何和语义特征。该网络在ScanNetPR数据集上进行训练和评估,与最先进的基于学习的方法相比具有优越的性能。

        对更多实验结果和文章细节感兴趣的读者,可以阅读一下论文原文~

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SLAM回环检测是指在建立地图和定位的过程中,通过检测到之前经过的地方,来修正定位误差,从而提高定位精度。下面是一种Python实现SLAM回环检测的方法: 1. 首先,需要获取机器人在运动过程中的位置和姿态信息,可以通过激光雷达或者视觉传感器获取。在这里,我们假设已经获取到了机器人的位置和姿态信息。 2. 然后,需要将机器人的位置和姿态信息存储在一个地图中,可以使用Python中的列表或者字典来存储。对于每个位置和姿态信息,可以使用一个唯一的ID来标识。 3. 当机器人移动时,需要检查它是否经过了之前已经经过的位置。为了实现这一点,可以使用一个距离矩阵来存储每个位置之间的距离。距离矩阵的大小为N x N,其中N为位置的数量。距离矩阵的第i行第j列表示位置i和位置j之间的距离。 4. 当机器人移动到一个新的位置时,可以计算它与之前已经经过的位置之间的距离,并将距离与一定的阈值进行比较。如果距离小于阈值,则说明机器人已经经过了这个位置,可以认为发生了回环。 5. 当发生回环时,可以使用SLAM算法来更新地图和机器人的姿态信息,从而提高定位精度。 6. 最后,需要持续地更新地图和姿态信息,并不断检查是否发生回环。在实际应用中,需要考虑到机器人的运动速度和精度以及传感器的误差等因素,以便更好地实现SLAM回环检测。 总的来说,Python实现SLAM回环检测需要对机器人位置和姿态信息进行存储和更新,并使用距离矩阵来检查是否发生回环。同时,需要熟练掌握SLAM算法和相关工具,以便实现更精确的定位和地图建立。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值