关于视觉导航灵魂三问

What:

  • Navigate a space to find a given target goal using only visual input.
  • Seen scene and target VS. Unseen scene and target

Why:

  • Visual semantic navigation
  • Visual question answering

How:

  • Geometry-based navigation (need a prior map of the environment).
  • Learning-based navigation (DRL) with knowledge graph as priors

基于目标驱动的视觉导航论文小记:

Target-driven Visual Navigation in Indoor Scenes using Deep Reinforcement Learning (ICRA2017)

该文章应该算是target-driven navigation的开山之作,李飞飞团队出品,同时推出了AI2-THOR仿真平台,从而打开了该方向的大门,引出无数后浪的跟随,亦如visual genome dataset引出的relationship extract方向。
该文章算是最早采用端到端的方式解决导航问题的,目的就是解决收敛性、目标和场景泛化性、Sim2Real的泛化性及端到端导航的便利性。
该端到端的导航框架如下:

框架整体上比较简单,但是给予了后面的端到端导航非常多的启发。该框架输入为当前agent图像和目标图像,分别通过ResNet-50得到224*224*3=2048维特征,使用历史的4帧图像特征作为输入,共8192维,以解释agent过去的动作,然后通过全连接层FC映射到512维特征,并且上下两个网络为siamese孪生网络,共享权重参数w,级联为表示当前state和target的1024维特征,通过FC映射为512维统一表示的特征,即将两个权重共享的siames层转换到相同的embedding space。通过A3C最终输出4维的动作概率分布和单个值函数输出。使用RMSProp优化器,学习率为7e-4。

对于loss函数的设定,siamese network的初衷是计算两个输入的相似度,。左右两个神经网络分别将输入转换成一个"向量",在新的空间中,通过判断cosine距离就能得到相似度了。Cosine是一个选择,exp function也是一种选择,欧式距离什么的都可以,训练的目标是让两个相似的输入距离尽可能的小,两个不同类别的输入距离尽可能的大。

通过对两幅输入图像的比较,得出当前state想要到达target需要执行什么动作,前提是在同一个场景下,并且是已经被训练好的场景,也比较适合AI2-THOR仿真环境的特点,即单个场景。

实验部分不再叙述,重点是通过仿真环境的训练使机器人可以在真实环境中经过微调即可达到比较好的效果。

语义导航的评估方式:On Evaluation of Embodied Navigation Agents (Arvix 2018)

该论文讨论了Embodied Navigation效果的评估方法。该文章认为,评价导航首先要明确三个前提:任务、测试环境、评估方式。以下也针对这三个方面进行展开。

  1. 任务。文中对于导航主要总结了三个任务,即:

    • PointGoal:给定坐标点进行导航。该任务在空旷场景下已经被基本解决(路径规划),但是在嘈杂的环境下没有被很好的探索过;
    • ObjectGoal:即本blog主要关注的问题,让机器人自主导航到特点的物体旁,对于如何充分利用场景的先验知识,对于导航的效果非常重要;
    • AreaGoal:即跨场景导航,机器人自主导航到特定的场景,该任务也依赖于外观和场景布局的先验知识。
  2. 测试环境:这里主要分为无先验的导航、预编码先验的导航和有限时间(次数)下的探索

  3. 评估方式:这里算是本文的重点,即如何判断导航任务的效果,主要有以下几点:

    • agent到达target时需要有特殊动作(如stop等),以表明机器人确实理解了该位置为target;
    • 对于agent和target的距离判断不应该使用欧氏距离,而应该使用geodesic distance,中文翻译为测地距离,其实这里指的就是按照路径规划的最优路径为基准,agent与target之间的距离,以避免agent和target中间有一堵墙,但是他们欧氏距离很近的情况;
    • 判断导航成功的distance的阈值,这里默认为两倍于agent宽度的geodesic distance;
    • 导航性能评价,一个是成功率Succee Rate(SR),一个是成功率权重的最短路径长度(SPL),SPL=1N∑i=1NSiℓimax⁡(pi,ℓi)SPL = \frac{1}{N} \sum_{i=1}^{N} S_{i} \frac{\ell_{i}}{\max \left(p_{i}, \ell_{i}\right)}SPL=N1i=1NSimax(pi,i)i

文章最后也推荐了一些适合评估导航效果的数据集(有钱就是任性,自己定任务自己定标准自己定仿真平台自己做数据集),如SUNCG、AI-THOR、Matterport3D、Gibson等。

VISUAL SEMANTIC NAVIGATION USINGSCENE PRIORS (ICRL2019)

本文的主要工作为将先验场景信息进行编码,加入到端到端的视觉导航中,可以完成去找杯子、去厨房等的语义导航能力。基于先验的导航不仅可以在已知场景中找到一直目标,还可以在未知场景中进行目标导航。主要贡献有三个:

  1. 集成了深度强化学习框架与知识图,可以通过图卷积网络对先验知识进行编码;
  2. 使用语义先验知识可以显著的提升导航性能;
  3. 更重要的是通过先验信息的引入,提高了对未知场景和未经过训练的目标进行导航的泛化能力

整体框架如下:

由以上框架可以看出,机器人当前状态的输入图像由ResNet-50进行特征提取,对每帧图像全局平均池化后提取2048个特征,并将当前图像与历史三个图像的特征concat生成8192维特征,最后使用全连接层(FC)和ReLU将图像映射为512维特征;对于目标物体,采用fastText对词向量进行特征编码,生成100维特征,然后再映射到512维特征中,可以使任务更加的泛化;对于先验知识,使用GCN进行特征编码,然后将3个512维特征级联,输入到A3C强化学习框架中进行Policy的更新和值函数的计算。对于奖励值(reward)的设定,当agent到达target时,奖励10;否则对于机器人每一步行走,进行-0.01的奖励。
本文的重点在于如何构建场景先验信息,并对先验信息进行编码。对于场景先验信息的构建,主要是通过图结构来编码空间中物体的关系,本文提到的方法比较简单,直接将当前场景中的物体检索Visual Genome数据集,产生三次以上关系的两个物体进行连接,从而构建了整个图结构的场景先验:

对于图的每个节点,通过视觉特征(512维)和词向量特征(512维)组成1024维特征,通过两层图卷积网络进行特征编码,最后一层输出V维特征,V即当前场景中物体节点的数量,然后映射到512维先验特征,与前面的视觉特征和词特征进行联合,共同输入到决策网络中。
在图卷积过程中,每个节点被表示为1024向量,所有节点组成矩阵XXX,图结构被识别为一个二维邻近矩阵AAA,对AAA进行规则化处理后得到Aˉ\bar{A}Aˉ,GCN输出一个节点层次的表示ZZZ,并使用f(.)f(.)f(.)表示ReLU激活函数:H(l+1)=f(A^H(l)W(l))H^{(l+1)}=f\left(\widehat{A} H^{(l)} W^{(l)}\right)H(l+1)=f(A

H(l)W(l))。其中lll表示GCN的层数,WWW表示不同层数的参数。

实验部分,该论文同样使用了AI2-THOR仿真框架,包含厨房、客厅、卧室和盥洗室,每个场景分为20个训练场景,5和验证场景和5个测试场景。测试指标是SPL和SR。除去了场景中不能直接看到的物体,有53个类别可以用来训练和测试,由此分出known和novel两类,即在训练集中训练过的类别为known,没训练过的类别为novel(实际上是都可以识别的!),用来测试算法的泛化性。对于实验的迭代结果如下,相对于单纯的A3C算法,效果还是非常不错的:

同时,该文章还评估了先验特征的去除程度对于SPL的影响:


根据上表可以看出,随着先验的减少(移除部分Objects和Relations,SPL的效果也逐渐降低。这里反映了先验的作用。但是作者又发现,当将先验中的关系进行分类时,效果反而不如忽视关系类型的效果更好,猜测可能是由于训练的数据量不足的原因,而且作用也将该模型在全部场景中进行训练(之前都是不同场景有不同的训练集),但是得出的效果也是降低了。

该论文有几个不容易理解的地方:

  1. 该论文在介绍基本模型时提到,A3C的输入特征为表示当前状态特征(512维)和语义目标词向量(512维)共1024维当前环境的特征表示,后面介绍介绍GCN的时候又说输入了包含先验特征(512维)的共1536维特征,其实前面说的是一个基础框架作为一个对比实验(即后面的A3C算法的baseline),后面说的则是本文的重点,即加入先验特征的导航方式。
  2. 关于图卷积编码先验知识,在最后的512全连接层前的那一层VVV维向量,VVV表示的是当前场景中看到的节点数还是整个数据集中所有物体类别的数量。个人理解为整个数据集类别的数量,即53,否则对于单个图像中物体类别太少,不足以反映先验信息。
  3. 在先验构建时,只构建了当前场景图像中的先验特征,然后利用Visual Genome数据集提供关系,其实并没有充分利用好先验数据集,值得继续深挖的地方还有很多,比如具体的关系类型、关系强度等

后续研究方向:

  1. 在模型中加入长期记忆(long-term memory)以实现长时间的导航;

  2. 先验模型中加入更高阶的关系,即如何进行跨场景导航,这也是AI2-THOR仿真环境的弱点,即只针对单个场景,后面提出的habitat仿真环境则解决了这个问题;

  3. 对于该模型在不同场景中的训练过程需要不同场景的数据集,明显被限制于单个场景下,对于跨场景的泛化能力有待改进。

由于跨场景语义导航问题难度较大,因此这里先介绍一种在跨场景中进行Pointnav的方法,其框架结构与前面提到的比较相似。

DD-PPO: LEARNING NEAR-PERFECT POINTGOAL NAVIGATORS FROM 2.5 BILLION FRAMES (ICRL2020)

该论文的本质为完成这样的任务:利用RGBD相机、GPS及罗盘,进行室内环境无地图定点导航。(个人感觉本质上是训练了一个避障算法?。。。)


这篇论文针对的任务不一样,就不详细展开了,只说一下比较相关的点。对于视觉导航的重点是该框架结构,输入到Policy中的有三部分,一个是当前机器人的视觉特征,一个是机器人当前位姿相对目标的状态,和前一个动作。Policy由两层512维的隐藏层组成的LSTM,最终输出动作空间的分布。
该文章提到用上面这种结构构建的DD-PPO可以近乎完美的解决Pointnav的问题,并且深度信息对于长期的导航非常重要。对于不使用GPS+罗盘的方式,并不能很好的解决Pointnav任务,更别说Objectnav任务了,特别是在habitat这种跨场景的仿真环境中。这也是当前急需解决的问题。

Improving Target-driven Visual Navigation with Attention on 3D Spatial Relationships(2020 arxiv)

本文利用注意力机制和3D空间关系编码,在深度强化学习(A3C)的基础上进行了改进,提高了机器人在unseen环境中的target-driven导航能力。
该文章的特点主要有:

  1. 使用视觉特征和3D空间关系学习策略。其中空间关系由GCN编码,又经过注意力机制进行自推理。
  2. 通过调整一条轨迹中的target,当机器人探索失败后,可以将失败时的位置作为target用于机器人学习,从而实现了从失败探索中进行学习的功能
  3. 在动作集合中加入了stop,让机器人自己停在target处才算导航成功。并设置了一些必须做出一些动作才能发现的target(如在冰箱里的苹果)

系统框架如下:

当前状态的图像与目标图像分别通过resnet提取特征,然后使用simases进行融合,作为DRL输入的一部分;同时,两幅图像还使用yolov3提取目标,并按照距物体1.5m的距离为基准,能同时看到的物体即为相邻关系进行关系提取,构建了spatial information(本质上只有相邻关系adjacency),通过GCN进行特征提取,注意力机制进行融合,作为DRL的另一部分输入特征。
两部分特征级联后,通过LSTM和MLP(多层感知机),使用A3C算法学习策略和值函数。最终的loss function for A3CA 3 CA3C is:

LA3C(θ,θv)=L_{A 3 C}\left(\theta, \theta_{v}\right)=LA3C(θ,θv)= Lπ(θ)+αLv(θv),L_{\pi}(\theta)+\alpha L_{v}\left(\theta_{v}\right),Lπ(θ)+αLv(θv),

where α\alphaα is a constant coefficient。其中策略学习的loss函数为:

Lπ(θ)=−E[∑t=1T(Rt−V(st,sg;θv))log⁡π(at∣st,sg;θ)]L_{\pi}(\theta)=-\mathbb{E}\left[\sum_{t=1}^{T}\left(R_{t}-V\left(s_{t}, s_{g} ; \theta_{v}\right)\right) \log \pi\left(a_{t} | s_{t}, s_{g} ; \theta\right)\right]Lπ(θ)=E[t=1T(RtV(st,sg;θv))logπ(atst,sg;θ)]

值函数的loss函数为:

Lv(θv)=E[(Rt−V(st,sg;θv))2]L_{v}\left(\theta_{v}\right)=\mathbb{E}\left[\left(R_{t}-V\left(s_{t}, s_{g} ; \theta_{v}\right)\right)^{2}\right]Lv(θv)=E[(RtV(st,sg;θv))2]

在训练过程中,由于巨大的状态空间和稀疏奖励,从零开始训练DRL很难达到效果,因此使用模仿学习(Imitation learning)加速,通过设置专家轨迹(expert trajectories)先进行在线训练,对整个学习过程产生一个好的引导。
在构建3D spatial relationship时,作者理想的状态是在机器人探索过程中构建如下的一个3D空间知识库:

在该知识库中可以获取目标属性(颜色、形状、大小、距离、种类),目标的方位(相对相机的方向)、局部空间关系(前后左右上下)和全局空间关系(主要还是next to、in、on三种)。但在本文中,作者只使用了yolov3进行了目标检测,获取目标的种类信息;其次,只对相邻关系进行了检测,检测依据是在距物体1.5m的视角内,是否能同时观测到两物体。其实作者的真实工作还是对上图进行了大幅的简化,本质上提取的关系图只是一种相邻关系连接图。

对于关系提取过程的处理流程如下:

关系提取中,首先使用yolo检测物体,再进行相邻关系判断,通过GCN将图表示为特征:H(l+1)=σ(A^H(l)W(l))H^{(l+1)}=\sigma\left(\hat{A} H^{(l)} W^{(l)}\right)H(l+1)=σ(A^H(l)W(l)),并通过siamese融合当前特征与target特征,生成Q特征,然后加入Attention机制,对其附加权重,生成Ha特征作为最后输出。
实验部分主要对该方法的泛化特征进行评估,主要利用了成功率(SR)和路径长度的成功权重(SPL)作为评价指标。成功率计算为:1N∑i=1NSi\frac{1}{N} \sum_{i=1}^{N} S_{i}N1i=1NSi,SPL计算为:1N∑i=1NSiLimax⁡(Pi,Li)\frac{1}{N} \sum_{i=1}^{N} S_{i} \frac{L_{i}}{\max \left(P_{i}, L_{i}\right)}N1i=1NSimax(Pi,Li)Li。实验环境还是使用了AI2-THOR,并且由于厨房包含的actionable物体最多,因此评估环境选择了AI2中的全部厨房,其中20个房间用来训练,5个用来验证,5个用来测试(感觉有点少,容易产生样本偏差)。每次实验的初始位置随机选择(距target半径10步的不选择)。实验结果如下:

同时比较了不同算法的碰撞数量和成功率(SR),并展现了不同算法间的收敛速度:



代码未开源,但从实验结果上看出效果还是比较好的。

semantic navigation 目标驱动的视觉语义导航(一)相关推荐

  1. semantic navigation 目标驱动的视觉语义导航(二)

    继上次的目标驱动的视觉语义导航之后,再介绍几篇比较优秀的论文. 以下两篇论文都提出了使用context feature对当前观测进行编码的思想. Visual Object Search by Lea ...

  2. (ICLR2019)论文阅读-使用深度增强学习框架的基于场景先验知识的视觉语义导航

    论文地址: VISUAL SEMANTIC NAVIGATION USING SCENE PRIORS 1. 介绍   论文的目标是使用场景先验知识来改善陌生场景中未知物体的导航效果,具体地,如下图所 ...

  3. 融合CV和NLP的视觉语义导航

    据说是CVPR2019的满分论文,因为导师项目的方向正好与这篇论文很接近,所以翻译了下 论文地址:https://arxiv.org/abs/1811.10092 /// /// 摘要:视觉-语言导航 ...

  4. 机器人懂点「常识」后,找东西方便多了:CMU打造新型语义导航AI机器人

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 想让机器人像人一样思考,似 ...

  5. 用matlab结合STM32作上位机,基于stm32智能小车视觉控制导航的设计参考.pdf

    第 25 卷 第 9 期 电子设计工程 2017 年 5 月 Vol.25 No.9 Electronic Design Engineering May. 2017 基于STM32 智能小车视觉控制导 ...

  6. 语义分割-Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述

    Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述 0.摘要 1.介绍 1.1.语义分割 ...

  7. 【视觉-语言导航-多模态Transformer】谷歌2021年最新提出-用于视觉-语言导航的多模态Transformer,Episodic Transformer

    Episodic Transformer for Vision-and-Language Navigation 前言: 由Inria, 谷歌, 布朗大学2021年最新提出的Episodic Trans ...

  8. 【基于视觉语义特征的室外SLAM建图算法研究】

    首先什么是语义SLAM,我们知道传统的视觉SLAM是基于关键点.描述子等低级图像特征来进行定位和建图的,那么对于一些更高层次的带有明确意义的语义信息,比如现实世界中真实的物体,将它作为特征来进行优化的 ...

  9. 吴琦:视觉-语言导航新进展:Pre-training 与 Sim2Real | 青源 Talk 第 12 期

    活动议程 日期:2月17日(周四) 时间 主题 14:30-14:35 开场简介 刘偲 北航人工智能研究院教授.博导,青源会会员 14:35-15:20 视觉-语言导航新进展:Pre-training ...

最新文章

  1. Microbiome:扩增子16S分析苏铁类植物微生物组
  2. 一个简单的tcpserver
  3. php mysql不大小写吗,PHP+MYSQL大小写有关问题
  4. STM32的USB相关资料(转载)
  5. openjdk sunjdk区别
  6. 【python】获取列表中最长连续数字
  7. Win10用Windows照片查看程序打开图片+更改注册表后导致Win10任务栏Adobe PDF阅读器图标显示异常
  8. 【Java笔记】四种权限修饰符总结
  9. Windows安装Java8以及环境变量的配置(图解以及java安装包下载)
  10. Android申请权限(相机权限和读写权限)
  11. ai跟随路径_ai中图像怎么沿着路径走
  12. mysql数据库取出的数据乱码_从数据库取出数据为什么是乱码
  13. 史上最全最详细的PS3模拟器安装及设置教程
  14. java递归堆栈溢出_【java】递归次数过多导致堆栈溢出
  15. jn5168烧写方法
  16. 做邮件服务系统的一点心得
  17. SQL 流水账余额查询
  18. 坚持努力奋斗学习(有终身受益的重点)
  19. 可滚动且可排序的表格
  20. 记录一次linux内网完整渗透测试

热门文章

  1. Portainer安装配置
  2. idea java 语法高亮_Intellij IDEA 中JAVA常用配置项总结
  3. 僵尸物联网大战区块链
  4. 这几个一键文字转语音的方法你可不能错过
  5. k8s 集群部署(dashboard+metrics-server)
  6. MySQL数据库软件介绍
  7. 数字图像处理之matlab实验(六):图像分割
  8. Android基础-MMKV基本使用
  9. These Days
  10. marve register license