LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM
参考
https://arxiv.org/pdf/2004.05155.pdf
文章
我们提出的探索架构包括一个学习的神经 SLAM 模块、一个全局策略和一个局部策略,它们通过地图和分析路径规划器进行连接。
学习的神经 SLAM 模块
从输入的 RGB 图像和运动传感器:
- 估计姿势
- 生成free space maps
全局策略模块
全局策略使用:
姿势+free space maps
并通过学习利用现实世界环境布局中的结构规律来产生长期目标。
这些长期目标用于为局部策略生成短期目标(使用几何路径规划器)。
局部策略
局部策略使用学习将原始 RGB 图像直接映射到代理应执行的运动避障操作。
整体上
- SLAM 模块中使用学习,可以灵活的调整输入模态
- 全局策略可以利用现实世界环境布局中的规律性
- 局部策略可以使用视觉反馈来执行运动操作。
同时,分层和模块化的设计和分析规划的使用,大大减少了训练过程中的搜索空间,从而获得更好的性能和样本效率
任务设置
我们遵循 Chen 等人(2019)提出的探索任务设置,其目标是在固定时间预算内最大化覆盖范围。 覆盖范围定义为地图中已知可穿越的总面积。 我们的目标是训练一个策略,该策略在每个时间步长 t 接收一个观察值 st 并输出一个导航动作 t 以最大化覆盖范围
我们试图使我们在模拟中的实验设置尽可能真实,目的是将训练有素的策略转移到现实世界中。
我们在现实世界中收集运动和传感器数据,并在模拟器中实现更真实的代理运动和传感器噪声模型
3.1 驱动和传感器噪声模型
我们用 (x,y,o) 表示代理姿势,其中 x 和 y 表示代理的 xy 坐标(以米为单位测量),o 表示代理的方向(以弧度为单位)(从 x 轴逆时针测量)。
不失一般性,假设代理从 p0 = (0,0,0) 开始。
现在,假设代理采取行动。 每个动作都作为机器人上的控制命令来实现。设相应的控制命令为 ∆ua = (xa,ya,oa)。
让代理在动作之后摆姿势是 p1 = (x*,y*,o*)。
驱动噪声 (act) 是动作后的实际代理姿势 (p1) 与预期代理姿势 (p0 + ∆u) 之间的差异:
噪声:
让动作后代理姿势的传感器估计为 p’1 = (x’,y’,o’)。 传感器噪声 (sen) 由传感器姿态估计 (p’1) 和实际代理姿态 (p1) 之间的差异给出:
为了实现驱动和传感器噪声模型,我们想在栖息地模拟器中收集导航动作的数据。 我们使用三个默认导航操作:向前:向前移动 25 厘米,向右转:在现场顺时针旋转 10 度,向左:在现场逆时针旋转 10 度。 控制命令实现为
uF orward = (0.25,0,0), uRight : (0,0,−10 ∗π/180) and uLeft : (0,0,10 ∗π/180). I
在实践中,机器人也可以在向前移动时轻微旋转并在原地旋转时稍微平移,在向前动作时产生旋转致动噪声,类似地,在原地旋转动作中产生平移致动噪声
我们使用 LoCoBot1 收集数据以构建驱动和传感器噪声模型。 我们使用pyrobot API (Murali et al., 2019) 和ROS (Quigley et al., 2009) 来执行控制命令并获取传感器读数。
对于每个动作 a,我们为驱动噪声和传感器噪声拟合了一个单独的高斯混合模型,总共有 6 个模型。
这些高斯混合模型中的每个分量都是 3 个变量 x、y 和 o 中的多变量高斯分布。
对于每个模型,我们收集 600 个数据点。 使用交叉验证选择每个高斯混合模型中的组件数量。 我们在 Habitat 模拟器中为我们的实验实现了这些驱动和传感器噪声模型。 我们已经发布了噪声模型,以及它们在开源代码中的栖息地模拟器中的实现
4 METHODS
我们提出了一个模块化导航模型,“主动神经 SLAM”。 它由三个组件组成:一个神经 SLAM 模块、一个全局策略和一个局部策略,如图 1 所示。
神经 SLAM 模块根据当前观察和先前的预测来预测环境地图和代理姿势。 全局策略使用预测的地图和代理姿势来产生长期目标。
使用路径规划将长期目标转换为短期目标。 本地策略根据当前观察采取导航操作以达到短期目标。
地图表示。
Active Neural SLAM 模型在内部维护了一个空间图 mt 和 agent xt 的姿态。 空间地图 mt 是一个 2 ×M ×M 矩阵,其中 M ×M 表示地图大小,该空间地图中的每个元素对应于物理世界中大小为 25cm2(5cm ×5cm)的单元格。
第一个通道中的每个元素表示相应位置出现障碍物的概率,
第二个通道中的每个元素表示该位置被探索的概率(有没有被感知到的概率)。
当一个单元格被认为是自由空间或障碍物时,它被认为是被探索的。
空间图在情节开始时用全零初始化,m0 = [0]2×M×M。 姿势 xt ∈ R3 表示代理的 x 和 y 坐标以及代理在时间 t 的方向。 代理总是在剧集开始时面向东方的地图中心开始,x0 = (M/2,M/2,0.0)。
神经 SLAM 模块
神经 SLAM 模块 (fSLAM) 接收
- 当前的 RGB 观察值 st、
- 当前和最后一个体姿态 x′t−1:t 的传感器读数、
- 最后一个智能体姿态和地图估计ˆxt−1,mt−1
输出
- 更新的地图 mt 和当前代理姿态估计 ˆxt,(见图 2)
mt,ˆxt=fSLAM(st,x′t−1:t,ˆxt−1,mt−1∣θS)mt, ˆxt = fSLAM (st,x′t−1:t, ˆxt−1,mt−1|θS )mt,ˆxt=fSLAM(st,x′t−1:t,ˆxt−1,mt−1∣θS)
其中 θS 表示神经 SLAM 模块的可训练参数。
它由两个学习组件组成,一个 Mapper 和一个 Pose Estimator。
Mapper(fMap)输出一个以自我为中心的自上而下的二维空间图,pego t ∈ [0,1]2×V ×V(其中V是视觉范围),预测当前观察中的障碍物和探索区域。
姿势估计器 (fP E ) 根据过去的姿势估计 (ˆxt−1) 和最后两个以自我为中心的地图预测 (pegot−1:t) 来预测代理姿势 (ˆxt)。它本质上是将当前以自我为中心的地图预测与转换为当前帧的最后以自我为中心的地图预测进行比较,以预测两个地图之间的姿势变化。
来自 Mapper 的以自我为中心的地图根据姿势估计器给出的姿势估计转换为地心地图,然后与之前的空间地图 (mt-1) 聚合以获得当前地图 (mt)。
Neural SLAM 模块的更多实现细节在附录中提供。
全局策略
Global Policy 以 ht ∈ [0,1]4×M×M 作为输入,其中 ht 的前两个通道是 SLAM 模块给出的空间图 mt,第三个通道表示 SLAM 模块估计的当前代理位置 ,第四个通道代表访问过的位置,即∀i,j ∈{1,2,…,m}
在将 ht 传递给 Global Policy 模型之前,我们执行了两次转换。
- 第一个转换从 ht 对代理周围的大小为 4 ×G ×G 的窗口进行子采样。
- 第二个转换执行最大池化操作以从 ht 获得大小为 4 ×G×G 的输出。
两个转换都堆叠起来形成一个大小为 8 ×G ×G 的张量,并作为输入传递给 Global Policy 模型。
Global Policy 使用卷积神经网络来预测长期目标,G ×G 空间中的 glt:glt = πG(ht|θG),其中 θG 是 Global Policy 的参数。
Planner
Planner 将长期目标 (glt)、空间障碍图 (mt) 和 agnet 姿态估计 (ˆxt) 作为输入并计算短期目标 gst ,即 gst = fP lan(glt,mt, ˆxt) .
它使用基于当前空间地图 mt 的快速行进方法 (Sethian, 1996) 计算从当前代理位置到长期目标 (glt) 的最短路径。 未开发的区域被视为可供规划的自由空间。 我们计算计划路径上的短期目标坐标(距离代理 ds(= 0.25m) 内的最远点)
Local Policy
局部策略将当前 RGB 观察 (st) 和短期目标 (gst) 作为输入,并输出导航操作,at = πL(st,gst |θL),其中 θL 是局部策略的参数。
在传递给本地策略之前,短期目标坐标被转换为与代理位置的相对距离和角度。 局部策略是一个循环神经网络,由预训练的 ResNet18(He 等人,2016 年)作为视觉编码器组成。
结论
在本文中,我们提出了一种模块化导航模型,该模型利用了经典导航方法和基于学习的导航方法的优势。 我们表明,所提出的模型在探索和 PointGoal 任务上均优于先前的方法,并显示出跨域、目标和任务的强大泛化能力。 将来,所提出的模型可以通过使用语义神经 SLAM 模块创建多通道地图来捕获环境中对象的语义属性,从而扩展到复杂的语义任务,例如语义目标导航和具体问题解答。 该模型还可以与之前的本地化工作相结合,在之前创建的地图中重新定位,以便在后续剧集中进行高效导航
神经SLAM模块实现细节
神经 SLAM 模块 (fSLAM) 输入:
- 当前的 RGB 观察,st ∈ R3×H×W ,
- 代理的当前和最后传感器读数 x′t−1:t
- 和前一个时间步 mt−1 ∈ R2×M×M 的地图
输出: - 更新的地图 mt ∈ R2×M×M 和当前代理姿态估计 ˆxt(见图 2)
其中 θS 表示可训练参数,bt−1 表示神经 SLAM 模块的内部表示。
Neural SLAM 模块可以分解为两部分,一个 Mapper (fMap) 和一个 Pose Estimator Unit (fPE,)。
Mapper输出一个以自我为中心的自上而下的二维空间图,pego t∈[0,1]2×V×V(其中V为视野范围),预测当前观察中的障碍物和探索区域:pego t = fMap (st|θM ),其中 θM 是 Mapper 的参数。 它由 Resnet18 卷积层组成,以产生观察的嵌入。 这种嵌入通过两个完全连接的层,然后是 3 个反卷积层,以获得第一人称自顶向下的 2D 空间图预测
现在,我们想将自我中心地图预测(pego t )添加到前一个时间步(mt-1)的地心地图中。 为了将自我中心地图转换为地心框架,我们需要代理在地心框架中的姿态。 传感器读数 x’t 通常是有噪声的。 因此,我们有一个姿势估计器来校正传感器读数并估计代理的地心姿势
为了估计代理的姿态,我们首先使用当前和最后时间步长 (x’t−1,x’t) 的传感器读数计算从最后一个时间步长开始的相对姿态变化 (dx)。
然后我们在基于相对姿态变化 (dx) 的最后一帧 (pego t−1) 的以自我为中心的地图预测上使用空间变换 (Jaderberg et al2015),p′t−1 = fST (pego t−1|dx )。请注意,此空间变换的参数不是学习的,而是使用姿势变化 (dx) 计算的。这会将最后一步的投影转换为当前以自我为中心的参考框架。如果传感器是准确的,p’t-1 将与 pego t 高度重叠。
姿态估计器单元将 p′t−1 和 pego t 作为输入并预测相对姿态变化: ˆdxt = fP E (p′t−1,pego t |θP )
直觉是,通过查看最后两帧的以自我为中心的预测,姿势估计器可以学习预测可以更好地对齐它们的小平移和/或旋转。
然后将预测的相对姿势变化添加到最后的姿势估计中以获得最终姿势估计 ˆxt = ˆxt−1 + ˆdxt。
最后,自我中心空间地图预测使用代理的当前姿态预测( ˆxt )使用另一个空间变换转换为地心框架,并使用通道池操作与先前的空间地图(mt-1)聚合:mt = mt −1 + fST (pego t |ˆxt)。
模型架构细节
我们使用 PyTorch (Paszke et al., 2017) 来实现和训练我们的模型。神经 SLAM 模块中的 Mapper 由 ResNet18 卷积层和 2 个全连接层组成,训练后的 dropout 为 0.5,然后是 3 个反卷积层。姿势估计器由 3 个卷积层和 3 个全连接层组成。全局策略是一个 5 层卷积网络,后跟 3 个全连接层。我们还将代理方向作为单独的输入(未在地图张量中捕获)传递给全局策略。它由嵌入层处理并作为输入添加到全连接层。
本地策略包含一个预训练的 ResNet18 卷积层,后面是全连接层和一个循环 GRU 层。除了 RGB 观察之外,本地策略还接收与短期目标的相对距离和角度作为输入。在将它们通过嵌入层之前,我们将相对距离(bin 大小随距离增加)、相对角度(5 度 bin)和当前时间步长(30 个时间步 bin)分箱。这种离散化以前用于 RL 策略(Lample 和 Chaplot,2017 年;Chaplot 和 Lample,2017 年),与直接将连续值作为输入传递相比,它提高了样本效率。
为了公平比较,我们对所有基线也使用相同的离散化。短期目标是使用嵌入层处理的。所有模块的具体架构请参考开源代码
LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM相关推荐
- 论文阅读 [CVPR-2022] BatchFormer: Learning to Explore Sample Relationships for Robust Representation Lea
论文阅读 [CVPR-2022] BatchFormer: Learning to Explore Sample Relationships for Robust Representation Lea ...
- 【Active Learning - 03】Adaptive Active Learning for Image Classification
主动学习系列博文: [Active Learning - 00]主动学习重要资源总结.分享(提供源码的论文.一些AL相关的研究者):https://blog.csdn.net/Houchaoqun_X ...
- Molecular Representation Learning via Heterogeneous Motif Graph Neural Networks
Molecular Representation Learning via Heterogeneous Motif Graph Neural Networks 基本信息 发表于ICML 2022 博客 ...
- 【Deep Learning 二】课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)答案
课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)答案 ----------------- ...
- 【Deep Learning 一】课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)答案
10个测验题: 1.What does the analogy "AI is the new electricity" refer to? (B) A. Through the ...
- 半监督学习:semi-supervised learning 直推学习:transductive learning 主动学习:active learning
目前,利用未标记示例的主流学习技术主要有三大类:半监督学习(semi-supervised learning).直推学习(transductive learning)和主动学习(active lear ...
- REVISED NOTE ON LEARNING QUADRATIC ASSIGNMENT WITH GRAPH NEURAL NETWORKS 翻译
revised note on learing quardatic assignment wiht graph neural networks 关于使用 图神经网络 学习二次分配的修订说明 摘要 In ...
- CVPR2022《BatchFormer: Learning to Explore Sample Relationships for Robust Representation Learning》
论文链接:https://arxiv.org/pdf/2203.01522.pdf 代码链接:https://github.com/zhihou7/BatchFormer 1. 动机 尽管深度神经网络 ...
- 论文阅读《SuperGlue: Learning Feature Matching with Graph Neural Networks》
论文地址:https://arxiv.org/abs/1911.11763 代码地址:https://github.com/magicleap/SuperGluePretrainedNetwork 背 ...
- 复杂网络论文解析——《Finding Patient Zero:Learning Contagion Source with Graph Neural Networks》
本文为原创,转载需声明出处. 介绍最近看的一篇复杂网络研究流行病传染源的文章,<Finding Patient Zero: LearningContagion Source with Graph ...
最新文章
- 使用hibernate建立mysql连接以及生成映射类和配置文件*.cfg.xml
- Linked List Cycle
- 二进制安装MySQL
- 进阶 09 Map集合
- Android系统和内核编译命令
- 中文乱码之myEclipse项目导入时中文乱码(待)
- 一文告诉你IT行业什么方向赚钱,需求多
- 仿支付宝输入密码效果
- linux命令top查看进程,linux 查看进程的命令(top)
- C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)
- 无线宽带好用吗?有哪些优势?
- ubuntu更新源及添加方法
- My-Blog搭建过程:如何让一个网站从零到可以上线访问
- 18年迅雷区块链大赛拿了奖,感谢
- Python安装时0x80072efd问题解决
- 实用成都幼儿园设计装修案例效果图推荐
- CSS_渐变过渡_动画
- uni-app消息推送方案
- 前端前沿web 3d可视化技术 ThreeJS学习全记录
- 和平精英#吃鸡神器 #手柄
热门文章
- python爬虫总结之xpath元素定位
- windows使用Charles手机抓包
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- n个数中的最大值和最小值
- Apache Flink 进阶(二):时间属性深度解析
- asp oracle数据库开发 adodb,asp怎么连接oracle数据库
- table td高度设置无效_Bootstrap Blazor 组件介绍 Table(一)
- python jupyter notebook 上传文件_使用jupyter notebook将文件保存为Markdown,HTML等文件格式...
- mysql密码修改无效后,修改方法
- 帆软动态分页之多数据集层式报表