
【免费下载链接】NaVILA[RSS25] This repository is the implementation of NaVILA: Legged Robot Vision-Language-Action Model for Navigation项目地址https://gitcode.com/gh_mirrors/na/NaVILA点击查看免费下载NaVILA 是一个面向四足机器人的视觉-语言-动作Vision-Language-Action, VLA导航模型源自 RSS25 论文。它让 Go2 这类腿式机器人仅凭一段自然语言指令如向前走并右转绕过地毯停在桌子旁就能完成真实世界导航。本文将带你完整读懂 NaVILA 的核心代码评测入口如何调度多卡并行、NaVILATrainer的评测循环如何逐帧决策以及语言指令是如何一步步拼装成喂给大模型的 Prompt 的。上图展示了 NaVILA 的两级框架上层的 VLA 模型接收历史视角History Views与当前视角Current View输出自然语言指令如 Move forward 75 cm下层的实时运动策略Policy基于本体感知Proprioception和高度图Height Map把指令转化为关节位置实现避障行走。一、评测入口一条命令如何拉起整个评测 评测入口是一个极简的脚本 r2r.shbash scripts/eval/r2r.sh CKPT_PATH NUM_CHUNKS CHUNK_START_IDX GPU_IDS脚本接收 4 个参数模型检查点路径、总分片数、起始分片号、GPU 列表。它把数据集按 GPU 数量切成多个 chunk每张卡独立跑一个 run.py 进程CUDA_VISIBLE_DEVICES${GPULIST[$IDX]} python run.py \ --exp-config vlnce_baselines/config/r2r_baselines/navila.yaml \ --run-type eval \ --num-chunks $TOTAL_CHUNKS \ --chunk-idx $CHUNK_IDX \ EVAL_CKPT_PATH_DIR $MODEL_PATH run.py 里做了三件事用get_config加载 navila.yaml 配置其中TRAINER_NAME: navila决定了用哪个 Trainer从baseline_registry注册表中取出名为navila的 Trainer 类根据--run-type eval调用trainer.eval()。这个注册表 配置驱动的设计是 Habitat 基线的经典套路换算法只需换一个 Trainer 名命令行完全不变。二、NaVILATrainer 评测流程逐行解读核心实现在 navila_trainer.pyNaVILATrainer继承自 base_il_trainer.py 中的BaseVLNCETrainer。2.1 加载模型与冻结配置eval()方法L384-L399只负责确定 GPU 设备并打开 TensorBoard writer真正的逻辑在_eval_checkpoint()L70-L355tokenizer, model, image_processor, context_len load_pretrained_model(checkpoint_path, model_name)这里复用了 VILA 训练侧的 builder.py 加载多模态模型得到四件套分词器、模型、图像处理器、上下文长度。随后对 config 执行defrost()解冻改写DATASET.SPLIT、ROLES、NUM_CHUNKS等字段后freeze()——注意NUM_CHUNKS/CHUNK_IDX就是r2r.sh传入的分片信息用于把 R2R val_unseen 数据集切成 N 份。2.2 环境构建与首个观测envs construct_envs_auto_reset_false(config, get_env_class(config.ENV_NAME)) observations envs.reset() observations extract_instruction_tokens(observations, ...)env_utils.py 创建 Habitat 仿真环境VLN-CE 任务Habitat 0.1.7utils.py 中的extract_instruction_tokens把指令传感器输出从{tokens: [...]}字典结构解包为纯 token 列表供后续 Prompt 使用。2.3 主循环每步如何产生动作主循环while envs.num_envs 0 and len(stats_episodes) num_eps里每轮迭代对应环境的一步逻辑分两大分支分支一动作队列非空L153-L157若上一步模型生成了前进 75 cm这种超过单步粒度的指令多余步数会放进queue_actions队列本轮直接从队列取动作envs.step(...)执行不重新调用大模型——这是省算力的关键设计。分支二调用 VLA 模型生成语言指令L159-L283这是全文最值得细读的部分拼历史帧L161-L166把past_rgbs里保存的所有历史图像加上当前帧交给sample_and_pad_images()L38-L52采样/补齐到固定 8 帧——帧数不足时用黑帧在头部补齐再从时间轴上均匀抽 7 帧 保留最新 1 帧。构造语言指令L168-L180从当前 episode 取出instruction_text如 Walk to the desk…拼进固定模板告知模型你是导航机器人分析这些图像决定下一步动作可以是左转/右转一定角度、前进一定距离或停止。对话模板包装L182-L186用 conversation.py 中llama_3模板把问题包成 Llama 3 的 system/user 对话格式get_prompt()生成最终 Prompt 字符串。图文 Token 化L188-L195process_images把 8 张图编码为视觉特征张量tokenizer_image_tokenmm_utils.py把 Prompt 里的image占位符替换为图像 token。解码生成L201-L213model.generate(..., do_sampleFalse, temperature0.0, max_new_tokens32)贪心解码并用KeywordsStoppingCriteria在遇到对话分隔符时提前停止最后batch_decode得到自然语言输出。2.4 语言输出 → 环境动作的映射 模型输出的是自然语言而 Habitat 环境只认离散动作。代码用一组正则完成语义解析L222-L234正则模式动作编号含义stop0停下任务结束is move forward1前进is turn left2左转is turn right3右转随后对数值部分做二次解析与量化吸附L242-L280前进距离从move forward (\d) cm提取不是 25 的倍数就吸附到最近的 25/50/75 cm转角从turn left/right (\d) degree提取不是 15 的倍数就吸附到 15/30/45°第一个 25cm/15° 立即envs.step执行剩余步数压入queue_actions队列。任何解析失败都有兜底默认值距离 25cm、角度 15°、未知动作用前进保证评测永不中断。2.5 回合结束统计与视频每步结束后L285-L347代码把新观测帧追加进past_rgbs若开启了视频选项就把当前观测渲染成带地图的可视化帧并附上指令文本。当某环境done时把该回合的infosSPL、成功率、距离目标等存入stats_episodes调用envs.reset_at(i)载入新 episode用 utils.py 的generate_video()把整回合画面合成 mp4 存到videos/目录若下一个 episode 与已评过的重复则通过_pause_envs()暂停该环境槽位防止重复评测。全部跑完后stats_episodes以 JSON 落盘为{split}_{num_chunks}-{chunk_idx}.json若文件已存在则直接跳过天然支持断点续评。三、语言指令生成逻辑小结 把 2.3 节串起来语言指令的完整生成链路是数据来源VLN-CE 数据集中每条 episode 的instruction_text人工撰写的导航指令历史感知8 帧图像序列7 历史 1 当前统一编码为视觉 tokenPrompt 组装固定英文任务模板 image占位符 指令文本 Llama 3 对话模板受限解码贪心解码、最多 32 token用分隔符做停止条件——模型被逼着只回答一句简短的动作指令鲁棒解析正则匹配动作类别 数值提取 网格吸附 默认值兜底。这套设计的巧妙之处在于不训练专用的离散动作头而是让大模型直接输出人类可读的指令再用规则层翻译成环境动作既保留了 VLM 的零样本泛化能力又保证了控制的确定性。四、结果汇总与查看分数多卡评测结束后运行python scripts/eval_jsons.py ./eval_out/CKPT_NAME/VLN-CE-v1/val_unseen NUM_CHUNKSeval_jsons.py 会扫描所有分片 JSON聚合出各 episode 的distance_to_goal、success、spl、ndtw、path_length等指标并打印汇总分数。可视化视频则保存在./eval_out/CKPT_NAME/VLN-CE-v1/val_unseen/videos下。五、总结NaVILA 的评测代码虽然只有几百行却串起了完整的多模态评测工程分片调度r2r.shNUM_CHUNKS/CHUNK_IDX实现多卡数据并行配置驱动YAML 注册表解耦算法与入口视觉记忆8 帧历史采样让模型看见过去语言即接口自然语言指令作为大模型与离散控制之间的桥梁配正则解析与兜底机制可复现评测JSON 落盘断点续评 视频可视化 指标聚合。阅读路径建议先跑通 README.md 的评测安装步骤再按run.py→NaVILATrainer.eval()→ 主循环的顺序精读 navila_trainer.py最后对照 discrete_planner.py 理解 15°/25cm 的动作空间设定即可完全掌握 NaVILA 的实现原理。赞分享【免费下载链接】NaVILA[RSS25] This repository is the implementation of NaVILA: Legged Robot Vision-Language-Action Model for Navigation项目地址https://gitcode.com/gh_mirrors/na/NaVILA点击查看免费下载相关推荐Qwen3-Coder 多语言代码生成评估实战基于 MultiPL-E 的完整评测指南Qwen3 Coder 多语言代码生成评估实战基于 MultiPL E 的完整评测指南 导读 本文面向需要在 Qwen3 Coder https://link人工智能大模型代码模型模型评测微调LoRAAI Agent代码智能体Qwen如何快速掌握Kandinsky 2.2从CLIP编码到扩散生成的完整指南如何快速掌握Kandinsky 2.2从CLIP编码到扩散生成的完整指南 Kandinsky 2.2是一款强大的多语言文本到图像 latent diffusiDagger代码生成原理从注解到Java源代码的完整流程Dagger代码生成原理从注解到Java源代码的完整流程 Dagger是一个快速的依赖注入框架专为Android和Java设计。它采用编译时代码生成技术通依赖注入代码生成后端移动开发开发工具上一篇mercury-agent Web Dashboard全功能解析本地可视化管理聊天、记忆与代码的完整指南下一篇ClawPanel 安装教程10 分钟装好 Windows、macOS、Linux 三平台完全指南含避坑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考