0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何学习MR-SLAM的紧凑描述符的问题

3D视觉工坊 来源:3D视觉工坊 2023-07-07 10:54 次阅读

作者:K.Fire | 来源:3D视觉工坊 在公众号「3D视觉工坊」后台,回复「原论」即可获取论文pdf。 添加微信:cv3d007,备注:SLAM,拉你入群。文末附行业细分群。

本文通过生成具有最小推理时间的紧凑且具有判别性的特征描述符来解决多机器人探索过程中保持低水平通信带宽的同时进行精确定位的问题;文中将描述符生成转化为老师-学生框架下的学习问题。首先设计一个紧凑的学生网络,通过从预训练的大型教师模型中转移知识来学习它。为了减少从教师到学生的描述符维度,文中提出了一种新的损失函数,使知识在两个不同维度的描述符之间转移。

1 前言

机器人SLAM系统(MR-SLAM系统)相比单机器人系统最主要的限制是:通信带宽的限制。在MR-SLAM系统中,为了整合整个团队的所有轨迹,团队中的每个机器人都需要共享其关键帧数据(包括关键帧姿态和观察到的特征点),以处理机器人间的闭环和全局定位。这种类型的数据交换占用了很高的通信容量,很可能降低实时性能。

一些工程上的解决方案比如降低频率、减少关键点数量可以降低通信带宽,但会导致定位精度降低;提高精度则会导致带宽升高;如果降低描述符维度会导致匹配性能变差。

卷积神经网络(CNN)方法已经显示出对手工描述符的优越性能,但基于CNN的方法多适用于单机器人系统(SR-SLAM),高模型复杂性和描述符维度是阻碍基于学习的方法在MR-SLAM中应用的两个主要障碍。

本文提出了一个基于知识蒸馏(KD)的描述符学习框架。该框架是一个经典的师生组合,其中学生是我们要学习的紧凑模型,而教师是一个预训练的更大的网络,其预测用于监督学生的学习。为了解决老师和学生之间输出维度的不同,本文还设计了一种新的损失函数。

本文模型与传统模型的比较如下图所示:

本文主要贡献如下:

设计了一个师生模型来生成紧凑的二进制描述符。

提出了一种新的基于距离的蒸馏损失,它允许具有不同输出维度的模型之间的知识转移。

开发了一个基于新描述符模型的MR-SLAM系统作为评估平台。

2 算法框架

2.1 基于学习的描述符生成

本文类似于主流的CNN方法,通过Siamese框架结构学习描述符。它是一个双胞胎模型,在训练过程中共享相同的权重。在Siamese框架下,每个训练阶段都准备两批。批次中的每个图像块对另一个都是负的,同一时代的两个批是一一对应的。

它有两个主要的损耗用于训练:

Triplet loss:它强制匹配的对尽可能接近,而不匹配的对尽可能远。最近的方法大多遵循HardNet策略,只提取包含最小距离的负对进行训练:

为当前实值描述子,为对应的正描述子,为最接近的负描述子,n为批大小。dis计算两个描述符之间的L2距离。

Binarization loss:它旨在最小化实值描述符与对应的二进制描述符之间的差异:

B(k)为二进制描述子B的第k个值,R(k)为实值描述子R的第k个值,D为描述子的维数。

2.2 老师-学生蒸馏框架

5180a5f2-1c52-11ee-962d-dac502259ad0.png

如上图所示,所有的老师卷积层之后是滤波响应归一化(FRN)和阈值线性单元(TLU)。批处理归一化(BN)和l2归一化放在最后的卷积层之后。

学生卷积层第一部分是深度卷积,它对每个输入通道应用一个卷积滤波器。第二部分是1×1卷积,称为逐点卷积。

基于该体系结构,每个模型都能够将图像补丁嵌入到实值描述符中。为了得到二进制描述符,使用以下方程对实值描述符进行二值化:

2.3 蒸馏损失函数

它由一个实值项和一个二元值项组成,它们分别强制学生模型的描述符批在实值和二元空间上具有与教师模型相似的分布。

实值项负描述符损失项:

其中是相对于当前描述符的负描述符的总数。和分别是教师和学生产生的当前重估描述符,和是相应的负描述符。此外,由于教师和学生之间的维度不同,我们增加了一个系数λr,设置为0.95来调整教师侧距离的尺度

二值项负描述符损失项:

其中λb是缩放系数,通常设置为两个模型的输出维度之间的比率:Ds/Dt。在训练阶段的到二进制描述符计算公式:

这里是防止被0整除的系数,设为1e-5。

最后,将这两个损失项合并为蒸馏损失函数:

其中是二值项的加权系数。

2.4 学生训练

第一阶段,使用学习率为0.01的ADAM优化器训练教师模型。这个过程使模型能够生成高质量的128维描述符。基本损耗函数为:

其中是控制二值化损失的加权系数。

在第二阶段,在老师的监督下训练学生模型,学习率设为0.01。因此,目标函数既包括基本损失Lbasic,也包括蒸馏损失Ldistillation,可表示为:

其中为蒸馏损失加权系数,在训练时设置为2。

4 实验与结果

4.1 特征匹配实验

使用UBC数据集:整个数据集包含大约400k个64×64个带标签的补丁,在一个子集上训练模型,并在另外两个子集上测试它。通过报告95%召回率(FPR95)的假阳性率来展示匹配性能。

采用几种方法作为基准方法。第一类是基于cnn的方法,包括HardNet、SOSNet、HyNet等。第二类方法是一些传统的方法,包括SIFT、BRIEF、LDAHash、BinBoost。还报告了每种CNN方法的参数数量和时间消耗(生成500个描述符),以可视化描述符生成效率。

此外,为了测试泛化能力,文章评估了在HPatches数据集上训练并在UBC数据集上测试的CNN方法的性能。

实验结果如下表所示:

51aee192-1c52-11ee-962d-dac502259ad0.png

由表1可以看出,基于cnn的方法明显优于传统方法。另一方面,匹配结果表明,即使没有蒸馏,所提出的方法也可以与大多数基于cnn的方法相媲美。此外,在KD方法的帮助下,文中的网络能够优于所有基线方法。

由表2可以看出,文中的模型比基线CNN模型轻30%左右,运行速度也比基线方法快。

由表3可以看出,因为尽管在不同的数据集上训练,但它的性能与CNN方法相当。

4.2 MR-SLAM实验

MR-VINS的详细框架如下图所示:

51ff911e-1c52-11ee-962d-dac502259ad0.png

整个系统采用集中式架构,即MR-SLAM系统由多个机器人和一个中央服务器组成。将视觉惯性里程计模块放在机器人上,而将后端模块放在服务器上。在此框架的基础上,在机器人一侧添加了CNN描述符模型,主要将描述符用于循环闭合和全局定位。作者将描述符模型放在机器人通信模块之前,以便描述符可以集成到发送到服务器的关键帧消息中。

使用公共EuRoC数据集,采用定位精度和通信带宽两项指标进行评价。

SLAM精度的定量结果如下表所示。

523a8a08-1c52-11ee-962d-dac502259ad0.png

与原始MR-VINS相比,可以看出,基于cnn的方法能够提高定位性能,尤其是MR-SLAM。此外,在单机器人和多机器人任务上,文中的方法总体上达到了与CNN方法相当的精度。然而,由于SLAM的性能不仅仅取决于图像匹配,定位精度优势并不像特征匹配结果那么明显。

下表显示了不同SLAM系统的带宽。

524fa6f4-1c52-11ee-962d-dac502259ad0.png

结果表明,文中的方法比原来的MR-VINS和CCM-SLAM具有更低的带宽。由于文中模型的消息频率是CCM-SLAM的3倍,所以文中模型的关键帧信息的大小比CCM-SLAM小10倍左右。窄带宽归因于文中的描述符极其紧凑的尺寸(普通BRIEF描述符的1/4)。此外,由于关键帧尺寸紧凑,就不需要在MR-SLAM任务期间专门降低关键帧频率。

5 总结

在本文中,探讨了如何学习MR-SLAM的紧凑描述符的问题。本文提出了一个师生框架,该框架利用紧凑的学生模型来估计低维描述符。由于教师和学生之间的输出维度不同,作者提出了一个基于距离的蒸馏损失函数,使知识在不同的维度描述符之间蒸馏传递。通过特征匹配实验和MR-SLAM系统的实验,验证了本文所提出算法的有效性。

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

    关注

    208

    文章

    27405

    浏览量

    202407
  • 函数
    +关注

    关注

    3

    文章

    4119

    浏览量

    61550
  • 模型
    +关注

    关注

    1

    文章

    2826

    浏览量

    48057

原文标题:比目前最先进的模型轻30%!高效多机器人SLAM蒸馏描述符!

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问SPI DMA描述符列表如何单次触发?

    要求如下: 定义两个个描述符类型的数组,如 SpiTxDesptr[3]= {{ SpiTxDesptr[1], X, X,X,X},{ SpiTxDesptr[2], X, X,X,X
    发表于 01-12 08:07

    二维PDMA可以使用描述符链吗?

    我正在尝试使用二维描述符连锁。 编写了一些二维描述符链的代码。 但我有一些疑问,比如 1.二维 PDMA 可以使用描述符链吗? 2.如果 1 是,请附上一些代码 我们是否可以使用 2 个结构或只使用 1 个结构即可。
    发表于 05-31 08:16

    USB描述符详解

    对于实现USB功能的项目,不管是实现CDC,大容量存储、HID等都必须使用实现USB标准描述符,从而实现USB枚举过程。这里共享一个USB描述符的详解。
    发表于 06-12 14:46

    类型描述符

    引用句柄的类型描述符的每个数值元素都表示什么信息,找了好多资料都没有介绍这个问题的,请高手们帮忙分析一下,谢谢!
    发表于 04-30 13:04

    UBL UBOOT 描述符

       在DM368的开发包目录下/psp/flash-utils/DM36x/GNU:执行make 可以省成UBL:ubl_DM36x_nand.bin ;我想问的是如何添加UBL 的描述符?烧写到
    发表于 06-21 08:48

    请问host buff 描述符为什么没有回到return qum,而host pkt 描述符能够正常归还?

    host buff 和 host pkt 描述符设置的return qmgr 和return qnum 是一样的,pkt dma 搬移后 host pkt描述符能够回到return qnum,host buff 描述符却不能呢?
    发表于 08-06 06:22

    zigbee描述符匹配请求方式,请问协调器可以通过什么得到其组网的终端的终端描述符

    请问一下,协调器可以通过什么得到其组网的终端的终端描述符?从一个终端查找终端描述符afFindEndPointDesc(byte endpoint),这个方法是指终端本身查找,还是说协调器可以通过这个函数,根据终端号得到其组网的终端的终端
    发表于 08-09 07:35

    请问SPIDMA描述符列表如何单次触发?

    要求如下:定义两个个描述符类型的数组,如SpiTxDesptr[3]= {{&SpiTxDesptr[1], X, X,X,X},{&SpiTxDesptr[2], X, X,X,X
    发表于 10-12 09:16

    USB设备检测过程的USB设备的描述符

    `标准的 USB 描述符包括设备(Device)描述符、配置(Configuration)描述符、接口(Interface)描述符、端点(Endpoint)
    发表于 11-12 09:23

    FX2的多个配置描述符

    我想使用多个配置描述符。其中一个会有DirectSound接口(和界面不会从柏树驱动器接收数据),其他的就没有接口,而Cypress司机会提供DirectSound会使用定义的接口供应商数据。我已经
    发表于 04-19 09:19

    51学习板主机没有请求描述符

    我用的圈圈的51学习板,不知道为啥主机没有请求描述符,跪求大神解答,小弟万分感激!!!
    发表于 06-19 03:54

    HID报告描述符生成工具

    HID报告描述符生成工具
    发表于 07-25 15:58

    传递文件描述符是什么?

    我买了一本书《Linux网络编程》。 看到第11章高级套接字。有个例子,传递文件描述符。 其中,进程A根据用户输入的文件名打开一个文件,将文件描述符打包到消息结构中,然后发送给进程B. 进程A的代码
    发表于 05-07 02:18

    ARM中,Linux 文件描述符到底是什么?

    一个 Linux 进程启动后,会在内核空间中创建一个 PCB 控制块,PCB 内部有一个文件描述符表(File descriptor table),记录着当前进程所有可用的文件描述符,也即当前
    发表于 10-23 16:11

    以太网数据帧的发送描述符队列是什么意思?

    这个描述符是什么呀,类似linux系统的文件描述符
    发表于 05-26 06:15