【文献分享】比目前最先进的模型轻30%!高效多机器人SLAM蒸馏描述符!

论文题目:Descriptor Distillation for Efficient Multi-Robot SLAM

中文题目:高效多机器人SLAM蒸馏描述符

作者:Xiyue Guo, Junjie Hu, Hujun Bao and Guofeng Zhang

作者机构:浙江大学CAD&CG国家重点实验室 香港中文大学(深圳)

论文链接:https://arxiv.org/pdf/2303.08420.pdf

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

1 前言

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

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

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

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

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

本文主要贡献如下:

  • 设计了一个师生模型来生成紧凑的二进制描述符。
  • 提出了一种新的基于距离的蒸馏损失,它允许具有不同输出维度的模型之间的知识转移。
  • 开发了一个基于新描述符模型的MR-SLAM系统作为评估平台。

2 算法框架

2.1 基于学习的描述符生成

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

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

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

L T = ∑ i N m a x ( 0 , t + d i s ( R i , R p ) − d i s ( R i , R n ∗ ) ) L_{T}=\sum_i^N max(0,t+dis(R_{i},R_{p})-dis(R_{i},R_{n}^{*})) LT=iNmax(0,t+dis(Ri,Rp)dis(Ri,Rn))

R i R_i Ri为当前实值描述子, R p R_p Rp为对应的正描述子, R n ∗ R_{n}^{*} Rn为最接近的负描述子,n为批大小。dis计算两个描述符之间的L2距离。

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

L B = ∑ i N ∑ k D 1 D ( R i ( k ) − B i ( k ) ) 2 L_{B}=\sum_i^N \sum_k^D \frac{1}{D}\sqrt{(R_{i}(k)-B_{i}(k))^2} LB=iNkDD1(Ri(k)Bi(k))2

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

2.2 老师-学生蒸馏框架

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

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

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

B ( k ) = { − 1 ,      i f   R ( k ) ≤ 0 1 ,         i f   R ( k ) ≥ 0 B\left(k \right) =\left\{ \begin{array}{l} -1,\ \ \ \ if\ R(k)≤0\\ 1, \ \ \ \ \ \ \ if\ R(k)≥0\\ \end{array} \right. B(k)={1,    if R(k)01,       if R(k)0

2.3 蒸馏损失函数

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

实值项负描述符损失项:
L r e a l = ∑ i N ∑ n N n ( λ r d i s ( R i t , R n t ) − d i s ( R i s , R n s ) ) 2 L_{real}=\sum_i^N \sum_n^{N_{n}} \sqrt{(\lambda _{r}dis(R_{i}^{t},R_{n}^{t})-dis(R_{i}^{s},R_{n}^{s}))^2} Lreal=iNnNn(λrdis(Rit,Rnt)dis(Ris,Rns))2

其中 N n N_n Nn是相对于当前描述符的负描述符的总数。 R t i R_t^i Rti R s i R_s^i Rsi分别是教师和学生产生的当前重估描述符, R t n R_t^n Rtn R s n R_s^n Rsn是相应的负描述符。此外,由于教师和学生之间的维度不同,我们增加了一个系数λr,设置为0.95来调整教师侧距离的尺度

二值项负描述符损失项:
L b i n = ∑ i N ∑ n N n 1 N n ( λ b d i s ( B i t , B n t ) − d i s ( B i s , B n s ) ) 2 L_{bin}=\sum_i^N \sum_n^{N_{n}} \frac{1}{N_n} \sqrt{(\lambda _{b}dis(B_{i}^{t},B_{n}^{t})-dis(B_{i}^{s},B_{n}^{s}))^2} Lbin=iNnNnNn1(λbdis(Bit,Bnt)dis(Bis,Bns))2

其中λb是缩放系数,通常设置为两个模型的输出维度之间的比率:Ds/Dt。在训练阶段的到二进制描述符计算公式:
B i = R i a b s ( R i ) + ϵ B_{i}=\frac{R_i}{abs(R_i)+\epsilon} Bi=abs(Ri)+ϵRi
这里 ϵ \epsilon ϵ是防止被0整除的系数,设为1e-5。

最后,将这两个损失项合并为蒸馏损失函数:
L d i s t i l l a t i o n = L r e a l + γ L b i n L_{distillation}=L_{real}+\gamma L_{bin} Ldistillation=Lreal+γLbin

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

2.4 学生训练

第一阶段,使用学习率为0.01的ADAM优化器训练教师模型。这个过程使模型能够生成高质量的128维描述符。基本损耗函数为:
L b a s i c = L T + α B L B L_{basic}=L_{T}+\alpha _BL_{B} Lbasic=LT+αBLB

其中 α B \alpha _B αB是控制二值化损失 L B L_B LB的加权系数。

在第二阶段,在老师的监督下训练学生模型,学习率设为0.01。因此,目标函数既包括基本损失Lbasic,也包括蒸馏损失Ldistillation,可表示为:
L t r a i n = L b a s i c + β L d i s t i l l a t i o n L_{train}=L_{basic}+\beta L_{distillation} Ltrain=Lbasic+βLdistillation
其中 β \beta β为蒸馏损失加权系数,在训练时设置为2。

3 实验与结果

3.1 特征匹配实验

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

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

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

实验结果如下表所示:

  1. 由表1可以看出,基于cnn的方法明显优于传统方法。另一方面,匹配结果表明,即使没有蒸馏,所提出的方法也可以与大多数基于cnn的方法相媲美。此外,在KD方法的帮助下,文中的网络能够优于所有基线方法。
  2. 由表2可以看出,文中的模型比基线CNN模型轻30%左右,运行速度也比基线方法快。
  3. 由表3可以看出,因为尽管在不同的数据集上训练,但它的性能与CNN方法相当。

3.2 MR-SLAM实验

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

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

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

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

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

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

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

4 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/50900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS正则表达式:常用正则手册/RegExp/正则积累

一、正则基础语法 JavaScript 正则表达式 | 菜鸟教程 JS正则表达式语法大全(非常详细) 二、使用场景 2.1、校验中国大陆手机号的正则表达式 正则 /^1[3456789]\d{9}$/解释 序号正则解释1^1以数字 1 开头2[3456789]第二位可以是 3、4、5、6、7、8、…

【性能优化】MySQL百万数据深度分页优化思路分析

业务场景 一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查看,最常见的一种就是根据日期进行筛选。这种统计数据随着时间的推移数据量会慢慢的变大,达到百万、千万条数据只是时间问…

3.Java面试题—JVM基础、内存管理、垃圾回收、JVM 调优

本文目录如下: 七、JVM一、JVM 基础什么是Java虚拟机?Java对象 创建过程?对象有哪几种引用? 二、内存管理说⼀下 JVM 的内存区域 (堆 和 栈)?内存溢出 和 内存泄漏 是什么意思?内存泄漏可能由哪些原因导致呢?Java 堆…

rocketmq rsqldb 简单记录

GitHub 地址 https://github.com/alibaba/rsqldb/tree/main,是和目前stream sql化看齐的Rocketmq的sql,类似还有kafka的sqlDB 和flink sql。 目前版本0.2 ,主要提供rest模式调用,controller类为public class RsqlController支持的…

F5 LTM 知识点和实验 5-健康检测

第五章:健康检测 监控的分类: 地址监控(3层)服务监控(4层)内容监控(7层)应用监控(7层)性能监控(7层)路径监控(3、4、7层)三层监控: 三层监控可以帮助bipip系统通过检查网络是否可达监视资源。比如使用icmp echo,向监控节点发送icmp_echo报文,如果接收到响应…

Redis(三)—— Redis基本的事务操作、Redis实现乐观锁

一、Redis基本的事务操作 首先声明: redis的单条命令是保证原子性的(回想一下setnx k1 v1 k5 v5命令如果k1已经存在,那么k5也会设置失败)但是redis的事务不保证原子性!见下面“1.2 某条命令有错怎么办?”…

C++之科学技术法e使用(一百七十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【读点论文】PP-YOLOE: An evolved version of YOLO,面向友好部署的模型设计,为项目后续产业落地提供了更加有效的参考

PP-YOLOE: An evolved version of YOLO Abstract 在本报告中,我们介绍了PP-YOLOE,一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化,采用无锚模式,更强大的骨干和颈部配备CSPRepResSt…

安全学习DAY08_算法加密

算法加密 漏洞分析、漏洞勘测、漏洞探针、挖漏洞时要用到的技术知识 存储密码加密-应用对象传输加密编码-发送回显数据传输格式-统一格式代码特性混淆-开发语言 传输数据 – 加密型&编码型 安全测试时,通常会进行数据的修改增加提交测试 数据在传输的时候进行…

0725 区块链1.0 2.0 3.0 智能合约 比特币 以太坊 DAG 有向无环图

文献阅读:[1]华亚洲. 基于改进Block-DAG区块链的时空数据存储及查询方法研究[D].辽宁大学,2022.DOI:10.27209/d.cnki.glniu.2022.001364.[1]华亚洲,丁琳琳,陈泽等.面向时空数据的区块链构建及查询方法[J].计算机应用,2022,42(11):3429-3437. 文献总结: …

【 Spring AOP学习二】统一功能处理:拦截器异常返回数据格式

目录 一、用户登录权限效验 🍑1、Spring拦截器实现用户统一登录验证(重要) (1)定义一个拦截器 (2)将自定义拦截器加入到系统配置中 🍑2、拦截器实现原理 🍑3、统一…

【计算机视觉中的 GAN 】 - 条件图像合成和 3D 对象生成(2)

一、说明 上文 【计算机视觉中的 GAN 】或多或少是GANs,生成学习和计算机视觉的介绍。我们达到了在 128x128 图像中生成可区分图像特征的程度。但是,如果你真的想了解GAN在计算机视觉方面的进展,你肯定必须深入研究图像到图像的翻译。…

mybatis-config.xml-配置文件详解

文章目录 mybatis-config.xml-配置文件详解说明文档地址:配置文件属性解析properties 属性应用实例 settings 全局参数定义应用实例 typeAliases 别名处理器举例说明 typeHandlers 类型处理器environments 环境environment 属性应用实例 mappers配置 mybatis-config.xml-配置文…

什么是 HTTP 长轮询?

什么是 HTTP 长轮询? Web 应用程序最初是围绕客户端/服务器模型开发的,其中 Web 客户端始终是事务的发起者,向服务器请求数据。因此,没有任何机制可以让服务器在没有客户端先发出请求的情况下独立地向客户端发送或推送数据。 为…

在linux中进行arm交叉编译体验tiny6410裸机程序开发流程

在某鱼上找了一个友善之臂的Tiny6410开发板用来体验一下嵌入式开发。这次先体验一下裸机程序的开发流程,由于这个开发板比较老旧了,官方文档有很多过期的内容,所以记录一下整个过程。 1. 交叉编译器安装 按照光盘A中的文档《04- Tiny6410 L…

fasta序列转为数字0和1-python

原始文件: 目标文件: linux版本 #name:lin_convert_fasta_to_01.py #! /usr/bin/env python #usage: python hash-always.py -l 1.list -f 2.txt > out.txt import argparse parser argparse.ArgumentParser(description"Advanced screeni…

perf 分析MySQL底层函数调用

文章目录 一、安装软件包二、数据采集2.1 perf top2.2 perf record 三、数据加工和解读 一、安装软件包 sudo yum install -y perf git clone https://github.com/brendangregg/FlameGraph二、数据采集 2.1 perf top perf top -g -p pidof mysqld 第一列:符号引…

常见面试题之设计模式--工厂方法模式

1. 概述 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore&…

QT:当登录成功时,关闭登录界面,跳转到新的界面中

1> 继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中 widget.h #include "widget.h" //#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent)//, ui(new Ui::Widget) {//ui->setu…

LeetCode使用最小花费爬楼梯(动态规划)

使用最小花费爬楼梯(动态规划) 题目描述算法流程(方法一)编程代码优化代码算法流程(方法二)编程代码代码优化 链接: 使用最小花费爬楼梯 题目描述 算法流程(方法一) 编程代码 class Solution { public:int minCostClimbingStair…