具身智能体俯视全局的导航策略!TopV-Nav: 解锁多模态语言模型在零样本目标导航中的顶视空间推理潜力


-
作者:Linqing Zhong, Chen Gao, Zihan Ding, Yue Liao, Si Liu
-
单位:北京航空航天大学,新加坡国立大学,香港中文大学多模态实验室
-
论文标题:TopV-Nav: Unlocking the Top-View Spatial Reasoning Potential of MLLM for Zero-shot Object Navigation
-
论文链接:https://arxiv.org/pdf/2411.16425
主要贡献
-
直接在俯视图上进行空间推理:提出了TopV-Nav,利用多模态语言模型(MLLM)直接在俯视图上进行空间推理,而不是将视觉信息转换为语言描述,避免了在地图到语言转换过程中丢失的空间信息,从而充分利用了完整的空间信息。
-
自适应视觉提示生成(AVPG):为了增强MLLM对俯视图的理解,引入了自适应视觉提示生成(AVPG)方法,动态地在地图上生成丰富的视觉提示,帮助MLLM更好地理解和推理环境的空间布局信息。
-
动态地图缩放(DMS)机制:为了支持局部区域的细粒度探索,设计了动态地图缩放(DMS)机制,允许在探索过程中动态调整地图的缩放比例,以便MLLM能够捕捉更多的空间线索并进行更精细的推理。
-
目标引导导航(TGN)机制:提出了目标引导导航(TGN)机制,通过预测目标对象的位置来指导当前的移动决策。这种方法模仿人类的行为,利用已知观察来推断未探索区域的目标位置,从而实现更灵活和高效的探索策略。
研究背景
研究问题
论文主要解决的问题是零样本目标导航(Zero-Shot Object Navigation, ZSON),即要求智能体在不熟悉的环境中导航以找到先前未见过的目标对象。
这种目标导向的探索依赖于对环境的空间信息的感知、理解和推理能力。
研究难点
-
当前基于大模型(LLMs)的方法在将视觉观测转换为语言描述并在语言空间中进行推理时,会丢失空间信息。
-
如何在零样本设置下充分利用LLMs的空间推理能力是一个关键难点。
相关工作
-
目标对象导航:
-
早期方法主要使用强化学习(RL)来训练策略,探索视觉表示、元学习和语义先验等来提高性能。
-
模块化方法利用感知模型构建情景地图,并基于此生成长期目标以指导局部策略。
-
为了克服封闭世界假设并实现零样本目标导航,一些研究利用CLIP的多模态对齐能力来实现跨领域的零样本导航。
-
近期方法通过提取语义信息并结合大模型(LLM)来确定下一个探索的前沿或路径点,但通常在地图到语言转换过程中丢失了空间布局信息。
-
-
使用MLLM进行空间推理:
-
最近的研究越来越关注开发MLLM的空间推理能力。例如,KAGI通过关键点推理生成粗略的机器人运动轨迹作为密集奖励监督。
-
SCAFFOLD利用支架坐标促进视觉-语言协调。
-
PIVOT通过迭代提示MLLM来进行广泛的具身任务。
-
在视觉-语言导航领域,AO-Planner提出视觉可用性提示以使MLLM从前视图图像中选择候选路径点。
-
然而,之前的工作主要集中在从自我中心视角探索MLLM的空间推理能力,而从俯视视角的研究仍然有限。论文的工作填补了这一空白,探索了MLLM在ZSON任务中的俯视空间推理潜力。
-
研究方法
这篇论文提出了TopV-Nav方法,用于解决零样本目标导航问题。

问题定义
-
ZSON任务要求智能体从连续环境中随机初始化位置开始,导航到用户指定的目标对象类别的一个实例。
-
智能体在每个时间步接收自中心RGB-D图像和其位姿,并采取低级动作(如前进、左转、右转等)。
-
任务成功是指智能体在距离阈值内停止且目标可见。
概述
-
智能体通过自中心的RGB-D图像和位姿来观察环境。
-
使用自适应视觉提示生成(AVPG)模块将自中心观察转换为顶视图地图。
-
动态地图缩放(DMS)模块根据当前地图查询MLLM进行空间推理,并预测缩放比例以支持局部精细探索。
-
目标引导导航(TGN)机制预测目标位置并指导移动位置的选择。
-
最后,使用快速行进法作为本地策略,生成一系列低级动作,使智能体逐步向目标位置移动。
自适应视觉提示生成
-
将自中心深度图像转换为3D点云,并将其投影到全局空间。
-
利用地面检测模型识别物体及其边界框,并将其投影到顶视图地图上。
-
使用不同的颜色和文本作为视觉提示来区分不同区域(如历史行走区域、可通行区域、障碍物区域、前沿和物体)。
-
采用DBSCAN算法生成关键区域的标记,帮助MLLM更好地理解地图。
动态地图缩放
-
动态调整地图的缩放比例,以支持局部精细探索。
-
查询MLLM预测缩放比例,并根据选择的比例对地图进行裁剪和重新生成视觉提示。
目标引导导航

-
设计目标引导导航机制,通过预测目标位置来指导决策过程。
-
MLLM根据房间布局推断目标的潜在位置,并将其转换为实际的可通行区域内的移动位置。
-
使用高斯概率分布计算每个位置的位置得分,并结合布局得分来预测最终决策位置。
本地策略
-
根据智能体的决策位置计算路径,并生成一系列低级动作。
-
在导航过程中,如果观察到目标类别的实例,智能体将直接导航到该实例;否则,继续根据MLLM的推理结果进行探索。
实验设置
数据集
在Matterport3D (MP3D) 和 Habitat-Matterport3D (HM3D) 数据集上进行实验。
-
MP3D包含11个高保真场景和2195个验证集剧集,有21个目标对象类别。
-
HM3D标准数据集分割包含2000个验证集剧集,分布在20个建筑中,有6个目标对象类别。
-
由于工作重点是零样本目标导航,所有样本均未用于训练。
评估指标
-
采用成功率(Success Rate, SR)和按路径长度加权的成功率(Success Weighted by Path Length, SPL)来评估目标对象导航性能。
-
SR表示成功的剧集比例,
-
SPL衡量导航效率。
实现细节
设置智能体的最大导航步数为500,旋转角度为30度,前进距离为0.25米。
构建的顶视图地图为800 x 800像素,分辨率为0.05米。设置了一些超参数,如选择目标相关物体的置信度阈值和聚类半径等。
结果与分析

-
与现有方法的比较:
-
比较了TopV-Nav与其他最先进的目标导航方法在MP3D和HM3D基准数据集上的表现。
-
主要与ESC和VoroNav进行了比较,分别代表前沿探索方法和路径点探索方法。
-
结果显示,TopV-Nav在MP3D和HM3D上的成功率SR和SPL均有显著提升。
-
在MP3D的验证集上,SR提高了3.2%,SPL提高了1.9%。在HM3D基准上,SR从42.0%提高到45.9%,SPL从26.0%提高到28.0%。
-
-
消融研究(Ablation Studies):



-
通过消融实验分析了每个模块的贡献。实验结果表明,自适应视觉提示生成(AVPG)、动态地图缩放(DMS)和目标引导导航(TGN)模块均有效提升了导航性能。
-
AVPG显著提高了MLLM的空间推理能力,SR提高了40.5%,SPL提高了22.7%。
-
DMS机制进一步提高了导航效率,SR提高了2.5%,SPL提高了1.9%。
-
TGN模块显著提升了SR和SPL,分别从42%提高到43.5%,23.6%提高到24.7%。
-
进一步研究了视觉提示组件和地图缩放比例对导航性能的影响,发现增加视觉提示和地图缩放比例可以进一步提高性能。

-
定性分析(Qualitative Analysis):
-
可视化了导航过程和MLLM的空间推理,提供了更直观的视角。
-
通过示例展示了MLLM如何利用顶视图地图进行布局推理和目标位置预测,从而指导智能体的导航行为。
-
总结
论文提出了TopV-Nav,通过直接在全景图上使用LLMs进行推理,解锁了LLMs在全景视角下的空间推理潜力。
提出的自适应视觉提示生成、动态地图缩放和目标引导导航机制显著提高了零样本目标导航的性能。
实验结果表明,TopV-Nav在MP3D和HM3D基准上均取得了显著的性能提升,展示了其在复杂环境中的导航能力。

相关文章:
具身智能体俯视全局的导航策略!TopV-Nav: 解锁多模态语言模型在零样本目标导航中的顶视空间推理潜力
作者:Linqing Zhong, Chen Gao, Zihan Ding, Yue Liao, Si Liu 单位:北京航空航天大学,新加坡国立大学,香港中文大学多模态实验室 论文标题:TopV-Nav: Unlocking the Top-View Spatial Reasoning Potential of MLLM …...
npm:升级自身时报错:EBADENGINE
具体报错信息如下: 1.原因分析 npm和当前的node版本不兼容。 // 当前实际版本: Actual: {"npm":"10.2.4","node":"v20.11.0"}可以通过官网文档查看与自己 node 版本 兼容的是哪一版本的npm,相对应进行更新即可…...
微信小程序实现自定义日历功能
文章目录 1. 创建日历组件实现步骤:2. 代码实现过程3. 实现效果图4. 关于作者其它项目视频教程介绍 1. 创建日历组件实现步骤: 创建日历组件:首先,你需要创建一个日历组件,包含显示日期的逻辑。样式设计:为…...
Vue 3 中的 toRef 与 toRefs:使用与案例解析
在 Vue 3 的响应式系统中,toRef 和 toRefs 是两个非常实用的工具函数。它们主要用于将响应式对象的属性转换为单独的 ref,以便在模板或逻辑中更方便地使用。本文将详细介绍 toRef 和 toRefs 的用法,并通过一个老师信息的案例来演示它们的实际…...
问题修复记录:Linux docker 部署 dify,无法调用宿主机本地服务
重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...
代码随想录day20
235. 利用二叉搜索树的特性即可 /** lc appleetcode.cn id235 langcpp** [235] 二叉搜索树的最近公共祖先*/// lc codestart /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) :…...
【ProxyBroker】用Python打破网络限制的利器
ProxyBroker 1. 什么是ProxyBroker2. ProxyBroker的功能3. ProxyBroker的优势4. ProxyBroker的使用方法5. ProxyBroker的应用场景6.结语项目地址: 1. 什么是ProxyBroker ProxyBroker是一个开源工具,它可以异步地从多个来源找到公共代理,并同…...
分布式微服务系统架构第88集:kafka集群
使用集 群最大的好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故 障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用 性。 需要多少个broker 一个 Kafka 集群需要多少个 broker 取决于以下几个因…...
RocketMQ原理—5.高可用+高并发+高性能架构
大纲 1.RocketMQ的整体架构与运行流程 2.基于NameServer管理Broker集群的架构 3.Broker集群的主从复制架构 4.基于Topic和Queue实现的数据分片架构 5.Broker基于Pull模式的主从复制原理 6.Broker层面到底如何做到数据0丢失 7.数据0丢失与写入高并发的取舍 8.RocketMQ读…...
下载Visual Studio Community 2019
官方链接如下:Visual Studio Community 2019下载链接 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements#download 目前官方仅建议2022版,已经关闭vs2019等旧版本,哪天开放了,记得踢我一下。 …...
一文简单回顾Java中的String、StringBuilder、StringBuffer
简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的,它们之间的区别是String是不可变的,平常开发用的最多,当遇到大量字符串连接的时候,就用StringBuilder&am…...
27. C语言 强制类型转换详解
本章目录: 前言强制类型转换(Type Casting)强制类型转换的语法示例1:将整数转换为浮点数输出结果: 代码解析: 整数提升(Integer Promotion)示例2:整数提升输出结果: 代码…...
git困扰的问题
.gitignore中添加的某个忽略文件并不生效 把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效, gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。 解决方…...
反向代理模块。。
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...
【Linux基础指令】第三期
近期更新的基础指令链接: 【Linux基础指令】第一期-CSDN博客 【Linux基础指令】第二期-CSDN博客 本期博客的主题依旧是 "基础指令" ;话不多说,正文开始。 一、Linux的指令 1.zip / unzip 功能:打包压缩 命令格式&…...
Jenkins安装部署(以及常见报错解决方案),jdk版本控制器sdkman
目录 零、环境介绍 一、Jenkins安装 1、插件安装以及更换插件源 2、修改jenkins时区 二、sdkman安装(可选) 1、sdkman常用方法 2、sdkman常用方法演示 2.1、查看可用的jdk 2.2、下载jdk并切换版本 三、jenkins报错解决 1、下载sdkman后systemc…...
利用JSON数据类型优化关系型数据库设计
利用JSON数据类型优化关系型数据库设计 前言 在关系型数据库中,传统的结构化存储方式要求预先定义好所有的列及其数据类型。 然而,随着业务的发展,这种设计可能会显得不够灵活,尤其是在需要扩展单个列的描述功能时。 JSON数据…...
Nxopen 直齿轮参数化设计
NXUG1953 Visualstudio 2019 参考论文: A Method for Determining the AGMA Tooth Form Factor from Equations for the Generated Tooth Root Fillet //FullGear// Mandatory UF Includes #include <uf.h> #include <uf_object_types.h>// Internal I…...
线程配置经验
工作时,时常会遇到,线程相关的问题与解法,本人会持续对开发过程中遇到的关于线程相关的问题及解决记录更新记录在此篇博客中。 目录 一、线程基本知识 1. 线程和进程 二、问题与解法 1. 避免乘法级别数量线程并行 1)使用线程池…...
火语言RPA--KimiAiFree服务
🚩【组件功能】:KimiAiFree服务支持联网搜索、支持智能体对话、支持长文档解读、支持图像OCR。 配置预览 配置说明 服务地址 支持T或# 自行搭建或第三方提供的KimiAiFree服务地址。 RefreshToken 支持T或# 与KimiAiFree服务交互时用到的token。从ki…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
