NaVILA——可语音交互的用于四足和人形导航与避障的VLA模型:在VLM的导航规划下,执行基于视觉的运动策略(LiDAR点云构建高度图)
如此前的博客所说,我司「七月在线」正在并行开发多个订单,目前正在全力做好每一个订单,因为保密协议的原因,暂时没法拿出太多细节出来分享但可以持续解读我们所创新改造或的对象,即解读paper和开源库「当然 有些paper/库还没开始用,但也可以提前解读,作为关注了解而其中有一个订单涉及到行走之外的导航、避障,项目组在确定解决方案的过程中,看到了NaVILA这个工作,故本文来解读下。
前言
如此前的博客所说,我司「七月在线」正在并行开发多个订单,目前正在全力做好每一个订单,因为保密协议的原因,暂时没法拿出太多细节出来分享
但可以持续解读我们所创新改造或二次开发的对象,即解读paper和开源库「当然 有些paper/库虽还没开始用,但也可以提前解读,作为关注了解」
而其中有一个「人形订单」涉及到行走之外的导航、避障,项目组在确定解决方案的过程中,看到了NaVILA这个工作,故本文来解读下
- 当然,因为 我们目前更多侧重人形和机械臂,其次机器狗(比如一些巡检订单),故本文会重点解读人形方面的导航与避障
- 过程中,我把RL方法PPO的实现 也做了重点解读
PS:如想做、在做、曾做导航方向的,欢迎私我一两句简介,邀你进以NaVILA为代表的「七月具身:VLN为代表的人形导航」
第一部分 NaVILA
1.1 提出背景与相关工作
1.1.1 引言
执行视觉与语言导航VLN的能力已成为现代机器人系统的基础组成部分。通过VLN,机器人能够在没有提供地图的情况下,根据语言指令在未见过的环境中导航。这不仅为人类提供了更好的交互界面,还通过语言强化了跨场景的泛化能力
在本文中,来自1 UC San Diego、2 USC、3 NVIDIA的研究者们进一步扩展了对腿式机器人(例如四足或人形机器人)进行VLN研究的范围,提出了NaVILA,其使用腿而非轮子使机器人能够在更具挑战性和混乱的场景中导航
- 其paper地址为:NaVILA: Legged Robot Vision-Language-Action Model for Navigation
其作者包括
An-Chieh Cheng1,∗、Yandong Ji1,∗、Zhaojing Yang2,∗
Zaitian Gongye1、Xueyan Zou1、Jan Kautz3、Erdem Bıyık2、Hongxu Yin3,†、Sifei Liu3,†、Xiaolong Wang1,3,† - 其项目地址为:navila-bot.github.io/
- VLA部分的GitHub地址为:github.com/AnjieCheng/NaVILA
low level部分的GitHub地址为:github.com/yang-zj1026/legged-loco
为了将语言转化为行动,机器人需要理解输入的语言,执行闭环规划以及低级控制。随着大型语言模型(LLMs)和视觉语言模型(VLMs)的最新进展,已经开发了若干端到端的视觉语言行动(VLA)系统
- 这些系统通过大规模的机器人操作演示,对通用VLM进行微调,从而生成底层动作。尽管将推理与执行统一于单一模型非常吸引人,并且取得了令人鼓舞的成果,但值得深入探讨的是:是否存在比量化底层指令更优的动作表示方法?
毕竟,LLMs和VLMs主要是通过自然语言进行训练的。当需要将推理转化为精确且非语言化的动作时,推理与执行的统一便变得具有挑战性 - 受近期VLM [10,11] 在空间定位和距离推理方面取得进展的启发,他们提出了NaVILA,这是一种面向有腿机器人VLN的两级框架:
首先对VLM进行微调,使其能够以语言形式输出中层动作(VLA),如“向右转30度”——VLA的中层动作输出传达了位置信息和方向信息,但不包含低层命令
然后训练一个低层视觉行走策略以执行该指令
- 此框架的优势有三点:
(i)通过将低层执行与VLA解耦,同一VLA可以通过更换低层策略应用于不同的机器人
(ii)将动作表示为中层语言指令,使VLA能够利用多样化的数据源进行训练,包括真实的人类视频和推理问答任务。这不仅提升了推理能力,还避免了对特定低层命令的过拟合,并可利用真实世界数据实现泛化
(iii)NaVILA在两个不同的时间尺度上运行:VLA,通常是一个大型且计算密集的模型,以较低的频率运行,提供高层导航命令;而行走策略则以实时频率运行。这种双频率方法使得运动策略能够处理复杂的障碍物规避,并提升整体鲁棒性
为了训练VLA,作者展示了如何:
- 在现有的VLM框架中集成历史上下文和当前观察以用于VLN
- 创建专为VLN任务定制的导航提示
- 利用来自YouTube真人导览视频的真实世界数据以提升在连续环境中的导航能力
- 引入精心策划的数据集混合,以增强VLN的泛化能力
这些策略使他们能够将通用的基于图像的VLM微调为专注于导航的智能体,同时在通用视觉-语言数据集上进行训练,从而保持其广泛的泛化能力
此外,这是首个证明直接基于人类视频训练能够提升连续环境中导航能力的工作
- 且为了训练具有鲁棒性的行走技能,他们采用单阶段方法学习基于视觉的行走策略。从原始LiDAR点云构建高度图,并引入随机化以缩小仿真与现实之间的差距。该控制器接收VLA模型输出,将其转换为指令速度,并通过控制关节位置来跟踪这些速度
在他们的实验中,他们展示了VLA在经典VLN基准测试上显著优于当前最先进的方法,成功率提升超过17%。此外,他们的单阶段行走策略在性能上大幅超过了以往基于策略蒸馏的方法 - 为了更好地模拟VLN中行走导航的挑战,他们基于Isaac Sim引入了全新的基准测试VLN-CE-Isaac。该基准测试考虑了机器人关节的细致运动及其与环境的交互,这是此前VLN相关工作未曾探索的
在VLN-CE-Isaac实验中,他们基于视觉的策略相比于盲目策略有显著优势,成功率提升了14%。且他们还证明了VLA可以部署在不同的机器人(Unitree Go2、Unitree H1、Booster T1)上,每种机器人均采用不同的行走技能
最后,他们在真实环境中部署了NaVILA,展现出卓越的鲁棒性,在25条指令中取得了88%的成功率,其中在多样场景下的复杂指令上成功率达到75%
1.1.2 相关工作
第一方面,对于视觉导航
视觉导航一直是机器人领域的长期研究课题 [71–74- Navigating to objects in the real world]
传统方法依赖于
- 预先计算的地图 [75]
- 或通过深度传感器 [76- Kinectfusion: Real-time dense surface mapping and tracking]
- 或单目相机构建的几何地图,同时实现机器人定位SLAM
77-Monoslam: Real-time single camera slam
78-Visual-inertial navigation, mapping and localization: A scalable realtime causal approach
近年来,基于学习的方法
- 使用模仿学习
79- Gated-attention architectures for task-oriented language grounding
80-Dosovitskiy. End-to-end driving via conditional imitation learning - 和强化学习
81-Human-level control through deep reinforcement learning
82-Continuous control with deep reinforcement learning
展现了强大的性能,并将应用扩展到视觉-语言导航领域
第二方面,视觉-语言导航
- 视觉-语言导航(VLN)是具身人工智能领域中的一项基础性挑战,要求智能体利用视觉线索和自然语言指令在复杂环境中进行导航。该领域随着时间推移已经发生了显著的发展
早期研究
1-Vision-andlanguage navigation: Interpreting visually-grounded navigation instructions in real environments
30-Room-across-room: Multilingual vision-and-language navigation with dense spatiotemporal grounding
83-Reverie: Remote embodied visual referring expression in real indoor environments]
主要集中在如MP3D [84]等模拟环境中的离散导航,智能体在导航图[31,85–91]上的预定义节点之间进行“传送”
[31- Learning to navigate unseen environments: Back translation with environmental dropout
85-Speaker-follower models for vision-andlanguage navigation
86-Self-monitoring navigation agent via auxiliary progress estimation,
87-Tactical rewind: Self-correction via backtracking in vision-and-language navigation,
88-Language and visual entity relationship graph for agent navigation,
89-History aware multimodal transformer for vision-and-language navigation,
90-Mapgpt: Map-guided prompting with adaptive path planning for vision andlanguage navigation,
91-Navgpt-2: Unleashing navigational reasoning capability for large vision-language models] - 随着基础模型的进步,许多VLN系统通过利用大规模预训练模型
[25- Improving vision-and-language navigation with image-text pairs from the web
92- Robust navigation with language pretraining and stochastic sampling]
和预训练技术
[24-Airbert: In-domain pretraining for vision-and-language navigation
52 Scaling data generation in vision-and-language navigation
93-A new path: Scaling vision-and-language navigation with synthetic instructions and imitation learning]
在该设置下的性能得到了极大提升,接近人类水平
然而,这一设置主要强调高层次决策,忽视了底层运动控制所面临的挑战 - 最近,研究
[12-Navid: Video-based vlm plans the next step for vision-and-language navigation,该模型被誉为此前最先进的视觉语言导航模型
54- Language-aligned waypoint (law) supervision for vision-and-language navigation in continuous environments
55-Cross-modal map learning for vision and language navigation
56-Weaklysupervised multi-granularity map learning for vision-and-language navigation
57-Affordances-oriented planning using foundation models for continuous vision-language navigation]
已转向连续环境『VLN-CE[58-Beyond the nav-graph: Visionand-language navigation in continuous environments]』,并采用如Habitat[69]等模拟器
这带来了更大的复杂性,因为智能体必须执行如前进等中层动作,例如向前移动或旋转,而不是在节点之间进行瞬移
为了弥合离散和连续导航之间的差距,一些方法
[44-Sim-2-sim transfer for vision-and-language navigation in continuous environments,
49- Etpnav: Evolving topological planning for vision-language navigation in continuous environments,
51-Bevbert: Multimodal map pre-training for language-guided navigation,
94- Hierarchical cross-modal agent for robotics vision-and-language navigation]
利用在模拟器中预训练的航点模型
[42-Bridging the gap between learning in discrete and continuous environments for vision-and-language navigation,
43-Waypoint models for instruction-guided navigation in continuous environments]
来预测代理周围的候选位置,并已展示出显著的性能提升
然而,这些方法往往因依赖于特定模拟器数据而难以实现泛化
此外,这些模型预测的候选位置仅覆盖附近区域,未能考虑底层运动规划或避障问题 - 在本文中,作者旨在推动VLN(视觉-语言导航)向现实世界机器人应用发展,尤其是面向具有挑战性的腿式机器人。NaVILA不仅能够处理高层决策,还可生成底层动作以控制机器人的完整运动
此外,他们在Isaac Sim上引入了新的VLN基准,提供了更为真实的仿真环境,期望对未来的VLN研究带来裨益
第三方面,机器人基础模型
机器人基础模型旨在提供一个统一框架,处理来自不同模态(如视觉和语言)的输入,并直接输出动作,使机器人能够执行复杂任务
- 现有研究[7,8,95]在大规模机器人数据集上训练,以获得通用机器人策略,但主要聚焦于操作任务
Doshi等[96]和Yang等[97]提出了端到端的视觉-语言跨形态模型,适用于不同的机器人任务 - 近期,已有多种基础导航模型被提出[98–100]。但它们主要关注以简短语言描述或目标图像作为输入的目标导航
针对腿式机器人,Ding等[101]提出了一个统一模型,利用视觉和语言输入生成可执行的底层动作 - 另一类工作[102,103]则专注于训练特定技能的专用策略,作为技能库,由VLM或LLM控制器决定执行哪项技能。同样,这些方法无法完成指令跟随任务,因为它们难以理解对于通用导航至关重要的复杂指令
为了解决这一问题,作者提出了一种专门为通用视觉语言导航任务设计的VLA模型
第四方面,足式机器人行走学习
足式机器人行走学习旨在使机器人能够穿越各种地形
- 以往的研究[104,105]仅依赖于机器人的本体感知信息,在诸如避障的场景中表现不佳
其他端到端的基于视觉的方法[106–109]由于传感器的局限性,在极端环境条件下(如强烈阳光)容易失效
Lee等人[38]在深度摄像头的基础上引入了LiDAR传感器以提升地形感知能力,但依赖于效率较低的两阶段训练
此外,Miki等人[39]在训练过程中通过查询预定义的地形高度来构建高度图,并在部署时依赖外部工具[110]生成高度图,导致训练与部署之间存在差异 - 为克服这些限制,作者提出了一种单阶段RL框架,该框架在训练过程中集成了LiDAR感知输入,使机器人能够通过与环境的直接交互进行学习,从而在复杂场景下实现更高的效率和鲁棒性
1.2 整体方法:集成高级视觉语言理解与低级运动控制
NaVILA 集成了高级视觉语言理解与低级运动控制,如下图图2所示「VLA 模型处理单视图图像以生成自然语言中的中级动作,然后通过先进的低级运动策略将其转换为精确的关节运动」
它利用视觉语言模型(VLM)处理单视角图像,并以自然语言生成路径点指令,而运动策略则将这些指令转化为精确的关节动作,实现机器人的实时控制
得益于VLM 的推理能力与运动策略的执行能力相结合,使 NaVILA 能够在多样化环境中实现泛化
1.2.1 驯服VLM用于视觉语言导航——VILA三组件包含视觉编码器 投影器 LLM
VLN 需要将视频输入作为观测数据进行处理
- 在VLM 中,处理视频输入的一种常见方法是通过视频编码器 [12]。然而,近年来 VLM 的进展主要得益于图像-文本数据的丰富
尽管已有一些工作尝试将这一成功经验扩展到视频编码器,但由于缺乏大规模、高质量的视频-文本数据集,其预训练受到了限制 - 为了解决这一挑战,他们的方法选择了基于图像的视觉-语言模型。这类模型表现出更强的泛化能力并具备更广泛的知识储备,因此更适合应对 VLN 中的泛化挑战
具体而言,他们的方法基于 VILA [13–19],这是一系列高效的视觉语言模型,兼具理解和生成能力。VILA 的预训练在多图像推理任务中表现尤为出色,因此在需要理解图像序列关系的 VLN 任务中具有特别的适用性
1.2.1.1 VILA初步介绍:先预训练连接器,再预训练连接器和LLM,最后微调所有模块
VILA由三个主要组件组成「VILA consists of three main compo-nents: a vision encoder, a projector, and an LLM」:
- 一个视觉编码器
视觉编码器负责处理输入图像,将其转化为一系列视觉 token - 一个投影器
随后,这些 token 经过降采样,并通过 MLP 投影器映射到语言域 - 一个LLM
之后,投影后的 token 与文本token 一同输入至 LLM 进行自回归生成
在处理视频时,VILA 会以固定间隔对帧进行均匀采样,并将所有帧信息置于任何文本之前。描述视频的典型prompt可能为:“⟨frame3⟩⟨frame6⟩⟨frame9⟩...请描述该视频。”
值得注意的是,借助序列并行训练[16],VILA 最多可包含 1024 帧
VILA 的训练分为三个阶段:
- 首先,它利用对齐数据[20] 预训练“冻结的LLM和视觉骨干网络之间的”连接器
first, it pre-trains a connector between the frozen LLM and vision backbones using alignment data [20]; - 然后,它利用图文交错语料库 [21,22] 对连接器和 LLM 进行预训练
- 最后,采用指令微调数据 [20,23] 对所有模块(视觉编码器、连接器、LLM)进行微调
根据这个链接:NaVILA: Legged Robot Vision-Language-Action Model for Naviga,可知
- 视觉编码器可以是siglip
- LLM可以是llama3-8b
1.2.1.2 导航提示
在视觉-语言导航任务中,不同时间步的图像有两种截然不同的用途。时间步 的图像代表当前观测,这对于VLN智能体做出即时决策至关重要(例如,在交叉路口右转或在到达目标时停下)
另一方面,时间步 之前的帧是作为历史帧,起到记忆库的作用,帮助智能体跟踪整体进展(例如,记住起始位置、推理已经访问过的地点并规划下一步)
如下图所示,将紫色方块表示为从历史帧中采样的内存token,红色方块表示当前观测token。 🔥 表示可训练参数「在他们的实验中,他们测试了 t 为 8 到 64 帧的配置」
像VILA 那样以固定间隔均匀采样帧并不理想,因为这种方式没有区分这两类表征
- 因此,他们首先提取最近的帧
作为当前观测,然后从前面的
帧中均匀采样,确保始终包含第一帧
- 此外,由于当前观测和历史观测承担着不同的角色,他们在任务提示中用文本线索加以区分,例如
用historical ob-servations 的视频:表示记忆帧
用current observation:表示最新帧 - 且与[12]不同,避免引入额外的特殊token,以免使LLM 的学习过程变得复杂
相反,他们坚持让LLM 的输入和输出都保持在语言领域的设计原则,以充分利用预训练LLM 的推理能力
通过将用于历史和当前观测的token与导航指令结合,他们构建了如图2 所示的导航任务提示
1.2.1.3 从人类视频中学习——以增强导航能力
近期研究[24–26]表明,从人类视频中收集轨迹-指令对可以提升导航能力。然而,现有工作仅限于离散导航环境,主要将真实视频用于预训练,以减少领域差异或提升地标理解能力,而非直接用于导航模型训练
将该方法扩展到连续环境是一项重大挑战,因为获取连续动作标签较为困难。近年来,野外度量姿态估计的进展使这一点成为可能,使得能够从人类视频中提取空间理解,并直接训练导航模型
- 如图4所示,他们的数据流水线首先从YouTube上收集了2000个2K分辨率的第一视角游览视频,这些视频为从人类行为中学习机器人导航提供了丰富的真实世界数据来源
正如我组建的导航交流群里一朋友所说,“他这个文章的创新主要就是完成了从YouTube上采集人类导航数据,然后用来SFT,这个数据的pipeline做的很好 ”
他们将这些视频处理成2万条多样且具有代表性的数据——使用基于熵的采样方法[26]对轨迹进行采样 - 接下来,利用MASt3R[27]估算相机位姿,从而提取逐步操作,并通过基于VLM的方法[13]进行轨迹描述,再由LLM[28]进行语言重述,为每条轨迹生成自然语言指令
Next, we es-timate camera poses using MASt3R [27] to extract step-by-step actions, and we generate natural language instructions for each trajectory using VLM-based [13] captioning followed by LLM [28] rephrasing.
这种方法使他们能够借助人类演示实现连续导航,要知道,这一能力此前难以实现
PS,针对视频字幕的自动生成,我司七月在线之前也开发了这样的系统,回头在本博客中 找个时间分享下技术方案
1.2.1.4 监督微调数据混合:4个角度的SFT数据
有效的有监督微调(SFT)数据对于开发强健的视觉-语言动作模型至关重要。该模型应专注于具身任务,同时避免对特定动作的过拟合
此外,它还应能够很好地泛化到现实世界场景,并保留广泛的世界知识。得益于NaVILA的模块化框架,其出色的可扩展性和适应性,使得能够轻松将多样化的数据源集成到他们的流水线中
他们的SFT数据混合从4个角度设计:(1)来自真实视频的导航数据,(2)来自仿真的导航数据,(3)辅助导航数据,以及(4)通用视觉问答VQA数据集
- 对于模拟导航数据,目前在连续环境下可用的VLN数据集较为有限,仅有R2R-CE [29]和RxR-CE [30]提供了由离散VLN版本转换而来的稀疏路径点
他们在Habitat模拟器中利用这两个数据集,采用「最短路径跟踪器沿测地最短路径」生成动作序列
We leverage both datasetswithin the Habitat simulator, using a shortest path follower to generate action sequences along the geodesic shortest path.
这样可获得逐步导航视频,其中每个样本包含一个帧的视频和时间步
对应的oracle动作
为鼓励LLM生成距离与角度的连续数值标签,他们将连续动作进行合并(例如,将两个前进25厘米的动作合并为一个前进50厘米的动作),最多合并三个连续动作
此合并过程不仅减少了数据集规模,提高了处理效率,还增加了动作的多样性,从而缓解过拟合
此外,为了解决标签不平衡问题——尤其是stop动作出现频率过低的问题——他们应用了一种重采样技术,以实现更均匀的分布。所有与导航相关的数据均采用前述的帧提取策略,并与导航任务提示进行配对 - 为了进一步提升场景理解能力,并解决R2R-CE和RxR-CE中指令有限的问题,他们引入了辅助导航数据集
按照[12]的方法,他们采用了EnvDrop[31]中的增强指令,并引入了导航轨迹摘要的辅助任务
具体而言,针对一段轨迹视频,保留首帧并均匀采样历史帧,以标注指令作为标签 - 随后,LLM需要根据这些帧来描述机器人的轨迹
为进一步增强空间场景理解,作者整合了ScanQA [32]数据集,该数据集包含基于真实三维扫描的问答对,所有问题均由人工编辑,答案以三维物体为基础
训练时,他们使用原始扫描中的多视角RGB图像来支持该任务 - 最后,为了保持模型的通用能力,他们引入了来自[23,33,34]的通用VQA数据集。这一全面的数据集设计确保了NaVILA能够有效泛化到新颖场景和真实世界环境中
1.2.1.5 训练和推理范式
他们的训练流程从已经完成视觉语言语料预训练的VILA第二阶段模型开始
然后,采用SFT数据混合方式,对整个VLM进行一次epoch的训练,在此训练过程中,视觉编码器、连接器和LLM三个组件均处于解冻状态
在推理阶段,他们实现了一个正则表达式解析器[35],从LLM输出中提取动作类型(例如前进或左转),及其对应的参数(如具体距离或角度)
该方法在模拟环境和真实世界实验中均已证明有效,实验证明所有实验中的动作都能被成功匹配和映射
1.2.2 视觉运动策略:先仿真训练,后实际部署
接下来,咱们来看基于视觉的端到端控制策略的开发,该策略能够理解来自VLM的高层次语言导航指令,并将其转化为精确的关节运动
此控制策略在Isaac Sim仿真器中,借助Isaac Lab[36] 进行训练,并随后直接部署到真实机器人上
1.2.2.1 Go2机器人
正如下图图5所示,机器人在其头部底部安装了一个LiDAR传感器,以15Hz的频率广播点云
机器人具有18个自由度(DoFs),包括底座的6个自由度以及每条腿各3个自由度。在策略训练过程中,他们将底座的6个自由度保持不受约束,以便策略仅控制四条腿上的12个关节电机
1.2.2.2 解释来自VLM的高级指令,以方便执行
VLM 输出一组固定的可执行词汇,例如{move forward, turn left, turnright, stop},作者再将这些指令转换为固定的指令速度,并根据特定的VLM值,以相应的时间持续执行
1.2.2.3 低级动作和观察空间
控制策略的动作空间a 被定义为期望的关节位置,该位置通过刚度和阻尼被转换为用于仿真的力矩输入
他们采用PPO 算法[37] 来训练策略。在训练过程中
- critic观察特权环境并生成一个价值函数以更新执行者
critic的观察空间包含当前时间步
的本体感知和速度指令,以及机器人周围的特权地形高度扫描
本体感知数据包括机器人线速度和角速度、姿态、关节位置、关节速度以及上一次的动作 - 而执行者仅接收现实世界中可用的传感器数据
在执行者的观察空间中,线速度被排除,因为在真实世界中无法获取该信息,取而代之的是使用本体感知数据的历史来隐式推断该信息
且该机器人利用激光雷达传感器提供的高度图来感知周围的地形
1.2.2.4 融合来自激光雷达LiDAR点云的高度图
鉴于LiDAR在探测透明物体方面具有卓越能力,并且在强光下表现出色,他们选择了由厂家提供的LiDAR作为主要传感器,用于感知机器人周围环境并确保安全导航
Unitree L1生成具有360°×90°宽视野的点云,且基于补充材料中列出的参数创建了一个2.5D高度图。对于每个体素网格,选取范围内的最小值,并在最近5帧激光雷达点云上应用最大值滤波,以平滑最终的高度图
1.2.2.5 训练
不同于大多数现有工作[38–41]中采用的两阶段教师-学生训练范式,他们采用单阶段方式训练步态策略
- 与两阶段训练相比,单阶段强化学习更加高效,因为无需策略蒸馏
- 此外,策略能够直接与环境交互,从而探索并有可能发现新的策略
在 Isaac Lab 的射线投射支持下,他们的基于视觉的强化学习策略训练在 RTX 4090GPU 上实现了超过 60K FPS 的高吞吐量
1.3 实验
1.3.1 高层次的VLA性能
1.3.1.1 VLN-CE基准测试
他们在VLN-CE基准测试上评估他们的VLA,该基准为在重建的逼真室内场景中执行导航动作提供了连续环境。且专注于R2R(房间到房间)和RxR(跨房间)数据集中的val-unseen分割——因为这是VLN领域中两个最受认可的基准测试
且他们采用以下在VLN任务中广泛使用的评估指标:导航误差(NE)、Oracle成功率(OS)、成功率(SR)、成功加权路径长度(SPL)以及归一化动态时间规整(nDTW)
- 他们在下表表一中展示了结果,NaVILA在两个基准测试中均使用单一模型,显著超过所有未依赖模拟器预训练航点预测器的基线方法
- 值得注意的是,这也是首次仅基于单视角RGB输入训练的VLN智能体,在性能上达到或超过那些使用全景视图、里程计或模拟器预训练航点预测器的模型
这表明,NaVILA强大的泛化能力能够有效弥补RGB视图或传感器观测受限的不足
为了评估跨数据集的性能,他们按照[12]的方式,仅在R2R样本上对NaVILA进行训练,而不使用RxR训练集
然后,他们在RxR Val-Unseen分割上评估其零样本性能。如表II所示
他们宣称他们的方法在SR指标上显著优于此前最先进的模型NaVid,取得了高达10%的提升
1.3.1.2 空间场景理解基准
作为一种通用导航智能体,稳健的空间场景理解(如物体定位、指代和空间推理)至关重要。为了评估NaVILA在场景理解方面的能力,他们在广泛应用于三维问答的ScanQA验证基准上进行了评测
ScanQA基于真实世界的扫描数据,他们使用这些扫描的多视角图像作为输入,向NaVILA查询答案
- 如下表表III所示,NaVILA在CIDEr分数上比此前的先进模型NaviLLM [60],高出20分
此外,当使用64帧时,NaVILA的表现优于当前最先进的基于3D的大型多模态模型[61,62] - 值得一提的是,这些其他模型需要3D扫描或带有相机位姿的RGBD数据作为输入,而NaVILA的方法在更少观测条件下实现了更优结果
1.3.2 低层级强化学习策略性能
为了突出他们的强化学习策略相较于基于策略蒸馏方法的优势,作者将其与正则化在线自适应(ROA)[68]进行了比较
- 在ROA训练中,模型首先学习一个特权编码器,用于处理高度扫描点和其他特权观测信息。该特权编码器随后对一个自适应编码器进行监督,该编码器与作者的低层级策略一样,以2.5D高度图作为输入
- 随后,作者使用三个指标对两种方法进行了评估:线性速度误差、角速度误差和碰撞率
前两项指标用于评估策略对速度指令的跟踪精度,而第三项则衡量模型的避障能力
如表V所示
他们的低层策略在所有三项指标上均优于ROA,尤其是在碰撞率方面显著降低,他们认为,此充分证明了他们训练方法的有效性
1.3.3 仿真中的足式机器人导航性能
目前,尚无专为足式机器人设计的VLN-CE基准
- 现有的视觉-语言导航基准[29,30]均基于Habitat [69]模拟器,该模拟器侧重于高层次规划,未涉及精确的低层机器人控制
例如,Habitat中的智能体可以穿越狭窄间隙,如两张沙发之间10厘米的空间,这对于四足或类人等足式机器人来说并不现实 - 为克服这一限制,他们提出了基于Isaac Sim的新基准VLN-CE-Isaac
Isaac Sim的高保真仿真能够精确捕捉机器人关节运动及其与环境的交互,从而实现对整个导航流程的全面评估,包括从高层规划到精确机器人执行
且引入了与R2R相同的场景,并将机器人部署在环境中,如下图图6所示
在R2RVal-Unseen划分的1,839条轨迹中,作者筛选出1,077条具有高质量网格、可通行的轨迹,以确保导航场景的真实性。为保持一致性,作者采用与以往工作相同的指标对性能进行评估
值得注意的是,VLN-CE-Isaac 可兼容多种机器人平台。为了展示这种灵活性,他们还在 在 Unitree Go2 机器人和Unitree H1 机器人上对 NaVILA 模型进行了基准测试
为了突出基于视觉的策略的有效性,他们将其与仅依赖本体感知(盲目Blind)的策略进行了对比,如下表表IV 所示
最终,在 Go2 场景中,基于视觉的策略在成功率上比盲策略高出14%,在 H1 场景中则高出21%,这得益于其更强的障碍物规避能力
- 且他们还将NaVILAs 与使用Oracle 低级策略的基线进行了比较(假设命令执行完美且无真实物理影响)
结果显示,在未使用 Oracle 策略时,Go2 场景的成功率降低了15%,H1 场景则降低了27%。这些性能差距突显了他们的基准测试带来的挑战性和现实性提升 - 此外,他们还观察到NaVILA 在H1 机器人上的成功率显著低于在Go2 上的成功率,这符合预期,因为人形机器人尺寸较大
1.3.4 真实世界评估
然后,他们在实际环境中进行了实验,使用了25条指令,每条指令重复三次,涵盖了三种类型的环境:工作区、家庭和户外开放环境
- 简单指令由一到两个导航命令组成,机器人无需在房间之间导航(例如,“走到椅子旁边并停下”)
- 相反,复杂指令包含三个或更多命令,要求机器人穿越多个房间或地标(例如,“走出房间,向右转,进入前面的房间,并停在桌子旁”)
他们使用标准指标(SR和NE)并将NaVILA与GPT-4o进行比较。如下表表VI所示,NaVILA在SR和NE方面显著优于GPT-4o
- 他们还对添加人类视频的效果进行了消融分析,并发现在人类视频的帮助下,模型能够更好地泛化到户外场景,并在所有环境中实现更高的成功率
- 且他们为了展示他们双层方法的灵活性,他们还在Booster Dynamics T1人形机器人上对其进行了评估,使用的是同一个VLA模型,且未进行任何再训练。尽管存在摄像机高度和视角变化等差异,NaVILA始终优于基线模型,突出了他们模型的强泛化能力
他们的定性结果展示在图1和图7中。在图7中,他们演示了与语音识别的集成,通过他们的框架实现了语音控制的导航
第二部分 VLA部分的安装、训练、真机部署
2.1 安装、数据集、训练
通过上文可知
- 作者对一个VLM模型进行了调优,将其转化为VLA模型,并在多样化的数据集上进行了训练,包括真实世界的人类视频数据、模拟的室内导航数据以及问答任务
NaVILA 在不依赖于模拟器预训练航点预测器的所有方法中表现最佳,即使这些方法利用了额外的传感器,NaVILA 依然优于它们 - 基于视觉的足式机器人策略
作者提出了一种端到端的基于视觉的行走策略,该策略在训练过程中未依赖教师指导-学生蒸馏。通过在训练过程中直接使用激光雷达与环境交互,该方法显著缩小了仿真到现实的差距
2.1.1 安装
根据此GitHub:github.com/AnjieCheng/NaVILA,可知要为训练 NaVILA 构建环境,请运行以下命令:
./environment_setup.sh navila
conda activate navila
可选:如果您计划使用 TensorBoard 进行日志记录,请通过 pip 安装 tensorboardX
2.1.2 数据集
对于如 video_chatgpt、sharegpt_video、sharegpt4v_sft 等通用 VQA 数据集,请按照数据准备说明操作NVILA
且作者为 envdrop、scanqa、r2r、rxr 以及 human 在 Hugging Face 上提供了标注文件。请下载该仓库并解压tar.gz文件位于各自的子文件夹中
- YouTube人工巡检:由于版权限制,原始视频/图像未公开。作者提供视频ID和注释。可以使用yt-dlp下载视频,并通过脚本 scripts/extract_rawframes.py 提取帧
- EnvDrop:由于视频数量众多,仅提供注释。请从 R2R_VLNCE_v1-3_preprocessed.zip 下载 R2R 增强版分割数据,并使用 VLN-CE渲染相应视频
数据应具有如下结构:
NaVILA-Dataset
├─ EnvDrop
| ├─ videos
| | ├─ 1.mp4
| | ├─ ...
| ├─ annotations.json
├─ Human
| ├─ raw_frames
| | ├─ Aei0GpsWNys
| | | ├─ 0001.jpg
| | | ├─ ...
| | ├─ ...
| ├─ videos
| | ├─ Aei0GpsWNys.mp4
| | ├─ ...
| ├─ annotations.json
| ├─ video_ids.txt
├─ R2R
| ├─ train
| | ├─ 1
| | | ├─ frame_0.jpg
| | | ├─ ...
| | ├─ ...
| ├─ annotations.json
├─ RxR
| ├─ train
| | ├─ 1
| | | ├─ frame_0.jpg
| | | ├─ ...
| | ├─ ...
| ├─ annotations.json
├─ ScanQA
| ├─ videos
| | ├─ scene0760_00.mp4
| | ├─ ...
| ├─ annotations
| | ├─ ScanQA_v1.0_train_reformat.json
| | ├─ ...
2.1.3 训练
预训练模型起点已在 a8cheng/navila-siglip-llama3-8b-v1.5-pretrain 中提供。请修改数据路径于llava/data/datasets_mixture.py,并使用 scripts/train/sft_8frames.sh 脚本启动训练
2.2 评估
2.2.1 安装:涉及到VLN-CE(依赖Habitat-Lab/Habitat-Sim)、Matterport3D
本仓库基于VLN-CE 构建,依赖较旧版本的 Habitat-Lab 和 Habitat-Sim
连续环境中的视觉与语言导航(VLN-CE)是一项指令引导的导航任务,具有众包指令、逼真的环境以及不受约束的智能体导航
Room-to-Room(R2R)和 Room-Across-Room(RxR)数据集均受支持。VLN-CE 是基于 Habitat 平台实现的
对于数据集
- 场景:Matterport3D
使用Matterport3D(MP3D)场景重建。可使用官方的Matterport3D下载脚本(download_mp.py)进行下载。可按照其项目网页上的说明进行访问。然后可以下载场景数据:解压后应使其具有如下格式:data/scene_datasets/mp3d/{scene}/{scene}.glb。总共应有90个场景# requires running with python 2.7 python download_mp.py --task habitat -o data/scene_datasets/mp3d/
- 任务:Room-to-Room(R2R)
R2R_VLNCE数据集是Anderson等人创建的Room-to-Room(R2R)数据集的一个移植版本,用于Matterport3DSimulator(简称MP3D-Sim)
有关迁移到三维重建的详细信息,请参阅论文《Beyond the Nav-Graph: Vision-and-Language Navigation in Continuous Environments》
R2R_VLNCE_v1-3是一个该数据集的精简版本,以及R2R_VLNCE_v1-3_preprocessed可直接运行的基线模型
Dataset Extract path Size R2R_VLNCE_v1-3.zip data/datasets/R2R_VLNCE_v1-3
3 MB R2R_VLNCE_v1-3_preprocessed.zip data/datasets/R2R_VLNCE_v1-3_preprocessed
250 MB
安装过程需要进行多项修改,可能较为复杂
- 创建一个包含 Python 3.10 的 Conda 环境
conda create -n navila-eval python=3.10 conda activate navila-eval
- 从源码构建 Habitat-Sim 和 Lab(v0.1.7)
python evaluation/scripts/habitat_sim_autofix.py # replace habitat_sim/utils/common.py
- 安装VLN-CE依赖项
pip install -r evaluation/requirements.txt
- 安装VILA依赖项
# Install FlashAttention2 pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash_attn-2.5.8+cu122torch2.3cxx11abiFALSE-cp310-cp310-linux_x86_64.whl # Install VILA (assum in root dir) pip install -e . pip install -e ".[train]" pip install -e ".[eval]" # Install HF's Transformers pip install git+https://github.com/huggingface/transformers@v4.37.2 site_pkg_path=$(python -c 'import site; print(site.getsitepackages()[0])') cp -rv ./llava/train/transformers_replace/* $site_pkg_path/transformers/ cp -rv ./llava/train/deepspeed_replace/* $site_pkg_path/deepspeed/
- 修复WebDataset版本以兼容VLN-CE
pip install webdataset==0.1.103
请参考 VLN-CE 安装指南。为解决 NumPy 兼容性问题,请应用以下热修复
2.2.2 数据:涉及到mp3d等数据的下载
请按照VLN-CE的要求,下载R2R和RxR的注释文件,以及evaluation/data文件夹内的场景数据。数据结构应如下所示:
data/datasets
├─ RxR_VLNCE_v0
| ├─ train
| | ├─ train_guide.json.gz
| | ├─ ...
| ├─ val_unseen
| | ├─ val_unseen_guide.json.gz
| | ├─ ...
| ├─ ...
├─ R2R_VLNCE_v1-3_preprocessed
| ├─ train
| | ├─ train.json.gz
| | ├─ ...
| ├─ val_unseen
| | ├─ val_unseen.json.gz
| | ├─ ...
data/scene_datasets
├─ mp3d
| ├─ 17DRP5sb8fy
| | ├─ 17DRP5sb8fy.glb
| | ├─ ...
| ├─ ...
注意,我司『七月在线』具身长沙分部的同事“可思”为了复现这个NaVILA,自然便需要下载上面那全套数据集,其中,涉及到mp3d数据的下载,然而mp3d数据集文件又大、下载又慢,可折腾了好久
- 后来在issue上一查,也有朋友遇到了类似的问题:
Downloading matterport3d dataset too slow #26
Downloading matterport3d dataset too slow #44
主要看上面第二个帖子 即可- 皮特安德森80,于2019年7月22日,回复上面第二个帖子
该数据集上的许多论文都使用了预先计算的 ResNet 图像特征(参见主自述文件中的链接),可以在 3GB 内下载
使用这些预计算功能,无需下载 Matterport 数据集,还可以关闭渲染以加快训练速度(再次请参阅主readme文件)不过,最终,我们还是在5090上 按部就班的下载
- 大家在安装habitat的时候,可能会一直遇到Python环境冲突的问题,我组建的导航交流群里的一群友写的记录可以参考下:NaVILA复现踩坑记录
- 当然,实在不行的话,如另一群友所说,这里提供了一个docker:https://github.com/thomasWts/navila-llama3,还有本地部署的代码,可以根据需要 参考下
2.2.3 运行评估
- 从a8cheng/navila-llama3-8b-8f下载检查点
- 使用R2R进行评估
示例如下cd evaluation bash scripts/eval/r2r.sh CKPT_PATH NUM_CHUNKS CHUNK_START_IDX "GPU_IDS"
单GPU
多GPUbash scripts/eval/r2r.sh CKPT_PATH 1 0 "0"
bash scripts/eval/r2r.sh CKPT_PATH 8 0 "0,1,2,3,4,5,6,7"
- 可视化视频已保存于
./eval_out/CKPT_NAME/VLN-CE-v1/val_unseen/videos
- 汇总结果并查看得分
python scripts/eval_jsons.py ./eval_out/CKPT_NAME/VLN-CE-v1/val_unseen NUM_CHUNKS
// 待更
第三部分 low level的安装与部署:Isaac Lab 中训练 Go2 和 H1的运动策略
本项目在GitHub上开源了low level部分的代码:github.com/yang-zj1026/legged-loco,该 repo 用于在 Isaac Lab 中训练 Unitree Go2 和 H1 的低级运动策略
3.1 安装
- 使用 python 3.10 创建一个新的 conda 环境
conda create -n isaaclab python=3.10 conda activate isaaclab
- 确保你的机器上已安装 Isaac Sim。否则,请按照此指南:Isaac Sim 4.2.0 (OLD) Workstation Installation 进行安装。如果通过 Omniverse Launcher 安装,请确保已选择并安装 Isaac Sim 4.1.0
此外,在 Ubuntu 22.04 或更高版本上,你可以通过 pip 安装它pip install isaacsim-rl==4.1.0 isaacsim-replicator==4.1.0 isaacsim-extscache-physics==4.1.0 isaacsim-extscache-kit-sdk==4.1.0 isaacsim-extscache-kit==4.1.0 isaacsim-app==4.1.0 --extra-index-url https://pypi.nvidia.com
- 安装 PyTorch
pip install torch==2.2.2 --index-url https://download.pytorch.org/whl/cu121
- 克隆 Isaac Lab 存储库
注意:此代码库已使用 Isaac Lab 1.1.0 进行测试,可能与较新版本不兼容
请务必使用下方提供的 Isaac Lab 修改版本,其中包含重要的错误修复和更新
由于 Isaac Lab 正在积极开发中,他们将考虑在未来支持较新版本git clone git@github.com:yang-zj1026/IsaacLab.git cd IsaacLab cd source/extensions ln -s {THIS_REPO_DIR}/isaaclab_exts/omni.isaac.leggedloco . cd ../..
- 运行 Isaac Lab 安装程序脚本并在此 repo 中另外安装 rsl rl
./isaaclab.sh -i none ./isaaclab.sh -p -m pip install -e {THIS_REPO_DIR}/rsl_rl cd ..
3.2 用法
- 训练
python scripts/train.py --task=go2_base --history_len=9 --run_name=XXX --max_iterations=2000 --save_interval=200 --headless python scripts/train.py --task=h1_base --run_name=XXX --max_iterations=2000 --save_interval=200 --headless
- 测试
python scripts/play.py --task=go2_base_play --history_len=9 --load_run=RUN_NAME --num_envs=10 python scripts/play.py --task=h1_base_play --load_run=RUN_NAME --num_envs=10
且Use --headless to enable headless mode. Add --enable_cameras --video for headless rendering and video saving
此外,还可以通过将它们置于下方来添加更多环境
isaaclab_exts/omni.isaac.leggedloco/omni/isaac/leggedloco/config
// 待更
更多推荐
所有评论(0)