【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)

该文件是 Habitat-Lab(Facebook Research 开发的 Embodied AI 模拟框架)的核心配置文档,详细定义了 Habitat 配置系统(基于 OmegaConf)中所有可配置参数的层级结构、默认值、取值范围及功能说明。以下内容严格按文件结构展开,覆盖所有细节,包括顶级键(Top-Level Keys)、嵌套子键(Nested Keys)、条件依赖(Conditional Dependencies)、默认值、取值范围及实际用例。


1. 文档概述

  • 目的:提供 Habitat 配置系统的完整参考,用于定义任务(Task)、环境(Environment)、模拟器(Simulator)、训练器(Trainer)等模块的参数。
  • 配置格式:YAML 文件,通过 BASE_TASK_CONFIG_PATH 继承基础配置,并支持动态覆盖。
  • 关键特性
    • 层级化结构:配置键按功能模块分层(如 SIMULATOR.AGENT_0.SENSORS)。
    • 条件依赖:某些键仅在特定父键启用时有效(如 DEPTH_SENSOR 仅在 SENSORS 包含 "DepthSensor" 时生效)。
    • 默认值:所有键均提供默认值,但部分关键键(如 BASE_TASK_CONFIG_PATH必须显式指定

2. 顶级配置键(Top-Level Keys)

2.1 BASE_TASK_CONFIG_PATH

  • 描述:指定基础任务配置文件的路径,作为当前配置的起点。
  • 默认值"configs/tasks/pointnav.yaml"
  • 必需性必须提供(无默认值时会报错)。
  • 取值范围
    • 预定义任务配置:pointnav.yaml(点目标导航)、objectnav.yaml(目标导向导航)、rearrange.yaml(物体重排)。
    • 自定义路径:需指向有效的 YAML 配置文件(如 "my_config.yaml")。
  • 示例
    BASE_TASK_CONFIG_PATH: "configs/tasks/objectnav.yaml"
    

2.2 TRAINER

定义训练流程的核心参数。

2.2.1 TRAINER.NUM_UPDATES
  • 描述:训练过程中总更新次数(每个更新对应一个批次的梯度更新)。
  • 默认值10000
  • 取值范围:正整数(>0)。
  • 依赖:需与 TRAINER.LOG_INTERVALTRAINER.CHECKPOINT_INTERVAL 协调。
2.2.2 TRAINER.LOG_INTERVAL
  • 描述:每多少次更新记录一次日志(控制控制台输出频率)。
  • 默认值10
  • 取值范围:正整数(>0)。
2.2.3 TRAINER.CHECKPOINT_INTERVAL
  • 描述:每多少次更新保存一次模型检查点。
  • 默认值50
  • 取值范围:正整数(>0)。
2.2.4 TRAINER.BATCH_SIZE
  • 描述:每个训练批次的样本数。
  • 默认值2
  • 取值范围:正整数(>0)。
  • 硬件依赖:受 GPU 内存限制(增大需更高显存)。
2.2.5 TRAINER.LR
  • 描述:优化器的学习率。
  • 默认值0.001
  • 取值范围:浮点数(>0)。
  • 典型值1e-4(小规模任务)、5e-3(大规模预训练)。
2.2.6 TRAINER.OPTIMIZER
  • 描述:优化器类型。
  • 默认值"ADAM"
  • 取值范围"ADAM", "SGD", "ADAMW"
  • 扩展配置
    • 若使用 SGD,需额外指定 TRAINER.MOMENTUM(默认 0.9)。
2.2.7 TRAINER.USE_SYNC_BATCH_NORM
  • 描述:是否在分布式训练中使用同步批归一化。
  • 默认值False
  • 取值范围True, False
  • 依赖:仅在多 GPU 训练时生效。

2.3 TASK

定义智能体需完成的任务类型及评估指标。

2.3.1 TASK.TYPE
  • 描述:任务类型标识符。
  • 默认值"Nav-v0"(导航任务)
  • 取值范围
    • "Nav-v0":通用导航任务。
    • "PointNav-v1":点目标导航(目标位置为 (x, y, z) 坐标)。
    • "ObjectNav-v1":目标导向导航(目标为语义对象类别)。
    • "Rearrange-v0":物体重排任务(如移动物体到指定位置)。
2.3.2 TASK.SUCCESS_DISTANCE
  • 描述:判定任务成功的最大允许距离(单位:米)。
  • 默认值0.2
  • 取值范围:浮点数(>0)。
  • 任务依赖:仅 PointNavObjectNav 有效。
2.3.3 TASK.MEASUREMENTS
  • 描述:任务评估指标列表。
  • 默认值["distance_to_goal", "success", "spl"]
  • 取值范围
    • "distance_to_goal":智能体到目标的欧氏距离。
    • "success":是否在 SUCCESS_DISTANCE 内到达目标(二值指标)。
    • "spl":标准化路径长度(Success weighted by Path Length)。
    • "top_down_map":生成自上而下的轨迹地图(需额外渲染)。
    • "collisions":记录碰撞次数(依赖 ENVIRONMENT.ENABLE_COLLISION)。
2.3.4 TASK.SENSORS
  • 描述:任务依赖的传感器列表(注意:实际传感器配置在 SIMULATOR.AGENT_0.SENSORS 中定义)。
  • 默认值[](空列表)
  • 取值范围:传感器类名(如 "RgbSensor", "DepthSensor")。
  • 关键点:此处仅声明传感器类型,具体参数需在 SIMULATOR 中配置。

2.4 ENVIRONMENT

定义环境运行时的行为约束。

2.4.1 ENVIRONMENT.MAX_EPISODES
  • 描述:单次实验的最大 episode 数。
  • 默认值-1(无限)
  • 取值范围:整数(-1 表示无限,>0 为有限值)。
2.4.2 ENVIRONMENT.MAX_EPISODE_SECONDS
  • 描述:单个 episode 的最大运行时间(秒)。
  • 默认值300
  • 取值范围:正整数(>0)。
2.4.3 ENVIRONMENT.MAX_EPISODE_STEPS
  • 描述:单个 episode 的最大步数。
  • 默认值500
  • 取值范围:正整数(>0)。
2.4.4 ENVIRONMENT.ENABLE_COLLISION
  • 描述:是否启用碰撞检测。
  • 默认值True
  • 取值范围True, False
  • 依赖:若启用,TASK.MEASUREMENTS 中的 "collisions" 才会记录数据。

2.5 SIMULATOR

定义模拟器及智能体的传感器、场景等参数。

2.5.1 SIMULATOR.SCENE
  • 描述:加载的 3D 场景文件路径。
  • 默认值"data/scene_datasets/habitat-test-scenes/van-gogh-room.glb"
  • 取值范围:有效的 .glb.basis 场景文件路径。
  • 依赖:需与 DATASET.CONTENT_SCENES 匹配。
2.5.2 SIMULATOR.AGENT_0

智能体 0 的配置(支持多智能体,但默认仅 AGENT_0)。

2.5.2.1 SIMULATOR.AGENT_0.SENSORS
  • 描述:智能体搭载的传感器列表。
  • 默认值["RgbSensor"]
  • 取值范围
    • "RgbSensor":RGB 相机。
    • "DepthSensor":深度相机。
    • "SemanticSensor":语义分割相机(需场景含语义标注)。
    • "EquirectangularSensor":等距长方体投影传感器(全景相机)。
2.5.2.2 SIMULATOR.AGENT_0.HEIGHT & WIDTH
  • 描述:传感器输出图像的高度和宽度(像素)。
  • 默认值HEIGHT=224, WIDTH=224
  • 取值范围:正整数(>0)。
  • 约束:若启用 SemanticSensor,需确保场景有对应分辨率的语义标注。
2.5.2.3 SIMULATOR.AGENT_0.ROTATION
  • 描述:智能体初始朝向(四元数 [x, y, z, w])。
  • 默认值[0, 0, 0, 1](朝向正前方)
  • 取值范围:有效四元数。
2.5.3 SIMULATOR.HABITAT_SIM_V0

Habitat-Sim 的底层参数。

2.5.3.1 SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID
  • 描述:用于渲染的 GPU 设备 ID。
  • 默认值0
  • 取值范围:非负整数(需与系统 GPU 数量匹配)。
2.5.3.2 SIMULATOR.HABITAT_SIM_V0.ALLOW_SLIDING
  • 描述:是否允许智能体在斜坡上滑动。
  • 默认值True
  • 取值范围True, False

2.6 DATASET

定义数据集来源及划分。

2.6.1 DATASET.TYPE
  • 描述:数据集类型标识符。
  • 默认值"PointNav-v1"
  • 取值范围
    • "PointNav-v1":点目标导航数据集。
    • "ObjectNav-v1":目标导向导航数据集。
    • "RearrangeDataset-v0":物体重排数据集。
2.6.2 DATASET.SPLIT
  • 描述:数据集划分(训练/验证/测试)。
  • 默认值"train"
  • 取值范围"train", "val", "test"
2.6.3 DATASET.CONTENT_SCENES
  • 描述:加载的场景列表。
  • 默认值["*"](加载所有场景)
  • 取值范围
    • ["*"]:通配符加载全部。
    • ["scene_01", "scene_02"]:指定场景列表。
    • []:不加载任何场景(需手动指定 SIMULATOR.SCENE)。
2.6.4 DATASET.DATA_PATH
  • 描述:数据集文件的路径模板。
  • 默认值"data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz"
  • 格式要求:必须包含 {split} 占位符(自动替换为 DATASET.SPLIT)。

2.7 CHECKPOINT

检查点管理参数。

2.7.1 CHECKPOINT.CHECKPOINT_FOLDER
  • 描述:检查点保存目录。
  • 默认值"data/checkpoints"
  • 取值范围:有效的文件系统路径。
2.7.2 CHECKPOINT.NUM_CHECKPOINTS
  • 描述:保留的检查点最大数量。
  • 默认值50
  • 取值范围:正整数(>0)。
  • 行为:超出数量时自动删除最旧的检查点。

2.8 VIDEO_OPTION

视频记录配置。

2.8.1 VIDEO_OPTION
  • 描述:启用的视频记录选项。
  • 默认值[](空列表)
  • 取值范围
    • "disk":保存视频到磁盘。
    • "tensorboard":将视频写入 TensorBoard。
    • "wandb":将视频上传至 Weights & Biases。
2.8.2 VIDEO_DIR
  • 描述:视频保存目录。
  • 默认值"data/videos"
  • 依赖:仅当 VIDEO_OPTION 包含 "disk" 时生效。

2.9 其他关键键

2.9.1 TORCH_GPU_ID
  • 描述:PyTorch 使用的 GPU ID。
  • 默认值0
  • 取值范围:非负整数。
  • SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID 区别
    • TORCH_GPU_ID:控制神经网络计算的 GPU。
    • SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID:控制场景渲染的 GPU。
    • 推荐设置:两者使用同一 GPU 以避免数据传输开销。
2.9.2 VERBOSE
  • 描述:是否启用详细日志输出。
  • 默认值False
  • 取值范围True, False
  • 效果:设为 True 时打印调试信息(如传感器初始化细节)。
2.9.3 EVAL_CKPT_PATH_DIR
  • 描述:评估时加载的检查点路径。
  • 默认值""(空字符串)
  • 用例:指定后跳过训练,直接加载模型进行评估。
  • 示例
    EVAL_CKPT_PATH_DIR: "data/checkpoints/experiment1/ckpt.100.pth"
    

3. 配置继承与覆盖机制

  • 继承链BASE_TASK_CONFIG_PATH → 主配置文件 → 命令行覆盖。
  • 覆盖示例
    python run.py --exp-config=config.yaml TASK.SUCCESS_DISTANCE=0.1 TRAINER.BATCH_SIZE=4
    
  • 条件覆盖:仅当父键存在时,子键覆盖才生效(如 SIMULATOR.AGENT_0.SENSORS 必须先存在才能修改 HEIGHT)。

4. 典型配置文件结构示例

BASE_TASK_CONFIG_PATH: "configs/tasks/pointnav.yaml"
TRAINER:NUM_UPDATES: 20000BATCH_SIZE: 4LR: 0.0003
TASK:SUCCESS_DISTANCE: 0.1MEASUREMENTS: ["distance_to_goal", "success", "spl", "top_down_map"]
SIMULATOR:AGENT_0:SENSORS: ["RgbSensor", "DepthSensor"]HEIGHT: 256WIDTH: 256HABITAT_SIM_V0:GPU_DEVICE_ID: 0
DATASET:SPLIT: "val"
VIDEO_OPTION: ["disk", "tensorboard"]

5. 注意事项与最佳实践

  1. 传感器一致性
    • TASK.SENSORS 包含 "DepthSensor",必须确保 SIMULATOR.AGENT_0.SENSORS 也包含 "DepthSensor",否则任务会失败。
  2. 内存优化
    • 增大 TRAINER.BATCH_SIZE 时,需同步调整 SIMULATOR.AGENT_0.HEIGHT/WIDTH 避免 OOM。
  3. 分布式训练
    • 启用 TRAINER.USE_SYNC_BATCH_NORM 时,需通过 torch.distributed 启动多进程训练。
  4. 调试技巧
    • 设置 VERBOSE: True 并检查 SIMULATOR 初始化日志,确认场景和传感器加载正确。
  5. 版本兼容性
    • 配置键可能随 Habitat-Lab 版本变化,需参考对应 Git 提交的文档(本文件对应 main 分支最新提交)。

6. 与 Habitat 生态的关联

  • Habitat-SimSIMULATOR 键直接调用 Habitat-Sim 的 C++ 后端。
  • Habitat-BaselinesTRAINER 键与 habitat-baselines 的 RL 训练器深度集成。
  • 数据集格式DATASET.DATA_PATH 需匹配 Habitat Challenge 官方数据集结构。

7. 常见错误与解决方案

错误现象原因解决方案
Scene file not foundSIMULATOR.SCENE 路径错误检查 DATASET.CONTENT_SCENES 和场景文件实际位置
Sensor not registeredTASK.SENSORSSIMULATOR.AGENT_0.SENSORS 不一致确保两者包含相同传感器类型
CUDA out of memoryBATCH_SIZE 过大或图像分辨率过高降低 BATCH_SIZEHEIGHT/WIDTH
Task metric not computedTASK.MEASUREMENTS 缺失必要指标添加 "distance_to_goal" 等基础指标

8. 扩展阅读建议

  • Habitat-Lab 官方教程examples/example.py 展示配置加载流程。
  • OmegaConf 文档:Habitat 配置系统的底层库(OmegaConf GitHub)。
  • 任务定制指南:通过继承 habitat.core.embodied_task.EmbodiedTask 实现新任务。

此文档是 Habitat 配置系统的唯一权威参考,覆盖所有可配置参数及其交互逻辑,适用于从快速实验到大规模分布式训练的全场景需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919351.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI-调查研究-55-机器人 百年进化史:从Unimate到人形智能体的技术跃迁

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的…

【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队

Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队 PDF删页, 零依赖脚本, 命令行秒用, 小白神器, 瑞士军刀 故事开场:一把瑞士军刀救了你 周一早高峰,老板发来 200 页 PDF: “把第 18、25、37 页删掉&#x…

RH134 运行容器知识点

1. 相比较虚拟机,容器有哪些技术优势?答:轻量级:容器共享宿主操作系统的内核,比虚拟机更轻量级,启动速度更快,资源占用更少。高效性:容器可以快速部署和扩展,适合于微服务…

亚矩阵云手机智能定位:助力Snapchat矩阵账号的本地化内容运营穿透技术

——构建跨地理围栏的智能社交营销网络**​​一、技术架构&#xff1a;动态定位引擎与多维度穿透体系​​动态定位引擎​​多源信号融合定位​&#xff1a;集成GPS/基站/WiFi三角定位技术&#xff0c;通过亚矩阵云手机底层驱动注入真实坐标数据&#xff08;误差<5米&#xf…

数据处理和统计分析 —— Pandas 基础(附数据集)

目录 一、概述 &#xff08;一&#xff09;series 1、组成 2、创建方式 3、Series常用属性 &#xff08;二&#xff09;DataFrame 1、组成&#xff1a; 2、构建方式 &#xff08;三&#xff09;数据导入和导出 二、加载数据集 加载部分数据 loc / iloc 三、分组和聚合计算 需求…

github 如何在 readme 显示Star History

在GitHub的README文件中显示Star History&#xff08;星标历史&#xff09;图表&#xff0c;可以通过以下几种方式实现&#xff1a; 使用Star History服务 你可以使用Star History服务来生成并嵌入星标历史图表 。具体步骤如下&#xff1a; 访问 Star History 网站: https:/…

安全防范方案

一、基于地理位置的访问控制&#xff08;核心方案&#xff09; 原理&#xff1a;通过内置GeoIP数据库或第三方IP库识别访问源国家/地区&#xff0c;动态拦截非目标区域IP。 配置步骤&#xff1a; 启用GeoIP模块 登录管理控制台 → 安全策略 → 地理位置策略 → 加载MaxMind Ge…

Python爬虫实战:研究optimesh库,构建Github网格数据采集系统

1. 引言 1.1 研究背景与意义 在计算机辅助设计(CAD)、有限元分析(FEA)、计算流体力学(CFD)等领域,网格作为离散化连续空间的基础载体,其质量直接影响数值模拟的精度与效率。高质量的网格应具备单元形状规则、分布均匀、边界贴合度高等特征,而低质量网格可能导致计算…

利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!

文章目录 1、学习新的东西可以借助ai和官方文档 1.1 会问问题 异步编程教程 1. std::future 2. std::shared_future 3、std::promise 4、4. std::packaged_task 5. std::async 6. std::future_status 和等待函数 综合代码 总结 1、学习新的东西可以借助ai和官方文档 因为别人写…

曲面/线 拟合gnuplot

1. 下载gnuplot windows 版&#xff0c;安装&#xff0c;&#xff08;别的绿色的可能下载即用&#xff0c;推荐下面链接这款&#xff09; gnuplot - Browse Files at SourceForge.net 2. 准备数据&#xff0c;存成data.dat或者其它文件名称&#xff0c;放桌面 数据内容如下…

CentOS Linux 7 (Core)上部署Oracle 11g、19C RAC详细图文教程

一、部署参考链接&#xff1a; 墨天轮数据库社区 - 乐知乐享&#xff0c;同心共济 实战篇&#xff1a;一步步教你 Linux 7 安装 Oracle 11GR2 RAC 实战篇&#xff1a;Linux7 安装 Oracle 19C RAC 详细图文教程 Linux7 安装 Oracle 19C RAC 详细图文教程

WebSocket DevTools 开发调试工具完全指南 – 实时监控、消息拦截、性能分析一站式解决方案

概述 WebSocket DevTools 是一款专为 WebSocket 连接调试而设计的浏览器开发者工具扩展。它提供了实时监控、消息拦截、连接管理等功能&#xff0c;帮助开发者快速定位和解决 WebSocket 相关问题。 主要特性 &#x1f50d; 实时监控&#xff1a;实时显示 WebSocket 连接状态…

常见的光源频闪控制方式

一、光源频闪的优势消除运动模糊&#xff0c;提升成像质量 光源以极短脉冲&#xff08;微秒级&#xff09;与相机曝光严格同步&#xff0c;实现“瞬时冻结”高速运动物体。增强特征对比度&#xff0c;提高缺陷检出率 频闪模式下&#xff0c;LED可短时超负荷工作&#xff0c;峰值…

读From GPT-2 to gpt-oss: Analyzing the Architectural Advances(续)

序 本篇由来&#xff0c;在COC上我当面感谢了组委会和姜宁老师&#xff0c;随即被姜宁老师催稿&#xff0c;本来当天晚上写了一个流水账&#xff0c;感觉甚为不妥。于是决定慢慢写&#xff0c;缓缓道来。要同时兼顾Show me the code&#xff0c;Show me the vide。希望能形成一…

6-7 TIM编码器接口 [江科协STM32]

一、引入&#xff08;1&#xff09;编码器接口的好处&#xff1a;节约软件资源&#xff1a;外部中断计次&#xff0c;程序频繁进入中断&#xff0c;则软件资源会被简单频繁的工作给占用&#xff0c;效率不高使用定时器的编码器接口&#xff0c;再配合编码器&#xff0c;就可以测…

01数据结构-交换排序

01数据结构-交换排序1.冒泡排序1.1基础冒泡排序1.1.1基础冒泡排序代码实现1.2冒泡排序的一次优化1.2.1冒泡排序的第一次优化代码实现1.3冒泡排序的二次优化1.3.1 冒泡排序的二次优化代码实现2.快速排序2.1双边循环法2.1.1双边循环法的代码实现2.2单边循环法2.2.1单边循环法代码…

MySQL架构和储存引擎

MySQL服务器整体架构如下&#xff1a;连接层&#xff1a;连接层的作用是处理客户端的连接&#xff0c;如何管理连接的。网络端口和连接管理线程&#xff1a;网络端口&#xff1a;一台服务器可以连接网络上多个端口的客户连接&#xff0c;只需要开放多个端口&#xff0c;只需要在…

详解flink java基础(一)

文章目录1.流式处理flink介绍2.Flink SQL介绍3. Flink Runtime4.使用flink集成kafka5.使用Flink SQL进行有状态流处理6.Event time & Watermarks7. flink Checkpoints & recovery1.流式处理flink介绍 实时服务依赖流式处理: flink优点: 高性能丰富的特性&#xff1a…

Day119 持续集成docker+jenkins

Day119 dockerjenkins 1.Dockerfile Dockerfile 可以用于项目部署。通过编写 Dockerfile&#xff0c;可以将整个项目及其所需的依赖项打包到一个 Docker 镜像中&#xff0c;然后在任何支持 Docker 的环境中部署和运行该镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包…

Vue3+Vite MPA多页面应用开发完整指南 – 从零搭建到部署优化

什么是 MPA 多页面应用 MPA&#xff08;Multi-Page Application&#xff09;是由多个独立的 HTML 页面组成的应用&#xff0c;每个页面都有独立的入口文件。与 SPA 不同&#xff0c;MPA 的每个页面都是独立的&#xff0c;页面间通过链接跳转&#xff0c;适合大型项目或需要 SE…