BEHAVIOR-1K
BEHAVIOR-1K是一个全面的仿真基准,用于在1000种日常家庭活动上测试具身AI智能体。这个一体化代码库提供了训练和评估以人为中心任务(如清洁、烹饪和组织)所需的一切——这些活动选自真实的人类时间使用调查和偏好研究。
功能特性
- 1000种日常活动:基于真实人类时间使用调查的多样化家庭任务
- 完整仿真环境:集成OmniGibson物理仿真引擎
- 3D资产管道:支持从3ds Max格式到USD格式的自动转换
- 模块化安装:支持按需安装核心组件
- 多平台支持:兼容Linux和Windows操作系统
- 资产加密保护:支持商业3D资产的加密存储和使用
安装指南
系统要求
- 操作系统:Linux (Ubuntu 20.04+), Windows 10+
- 内存:32GB+ 推荐
- 显存:8GB+
- GPU:NVIDIA RTX 2080+
快速开始
对于大多数用户,推荐安装包含所有组件的最新稳定版本(v3.7.1):
Linux
# 克隆最新稳定版本(推荐)
git clone -b v3.7.1 https://github.com/StanfordVL/BEHAVIOR-1K.git
cd BEHAVIOR-1K# 运行安装脚本
./setup.sh --new-env --omnigibson --bddl --joylo --dataset
Windows
# 克隆最新稳定版本(推荐)
git clone -b v3.7.1 https://github.com/StanfordVL/BEHAVIOR-1K.git
cd BEHAVIOR-1K# 运行安装脚本
.\setup.ps1 -NewEnv -OmniGibson -BDDL -JoyLo -Dataset
安装选项
| 组件 | 参数 | 描述 |
|---|---|---|
| OmniGibson | --omnigibson |
核心物理仿真器 |
| BDDL | --bddl |
行为域定义语言 |
| JoyLo | --joylo |
遥操作接口 |
| 数据集 | --dataset |
下载BEHAVIOR数据集 |
| 资产管道 | --asset-pipeline |
3D场景和对象资产管道 |
使用说明
基本使用
BEHAVIOR-1K提供了完整的仿真环境和任务定义:
import omnigibson as og
from omnigibson.macros import gm# 设置数据集路径
gm.DATASET_PATH = "/path/to/behavior_dataset"# 创建环境配置
cfg = {"scene": {"type": "InteractiveTraversableScene","scene_model": "Beechwood_0_int",},
}# 加载环境
env = og.Environment(configs=cfg)
3D资产管道
项目包含完整的3D资产处理流程:
from b1k_pipeline.utils import PipelineFS, get_targets# 处理3D资产转换
with PipelineFS() as pipeline_fs:targets = get_targets("combined")for target in targets:# 处理每个目标的资产转换process_target_assets(target)
核心代码
物理仿真集成
import omnigibson as og
from omnigibson.objects.articulated_object import URDFObjectdef load_behavior_environment(scene_name):"""加载BEHAVIOR仿真环境"""cfg = {"scene": {"type": "InteractiveTraversableScene","scene_model": scene_name,},}env = og.Environment(configs=cfg)return envdef simulate_household_activity(env, activity_definition):"""仿真家庭活动"""# 加载活动定义task = load_task_definition(activity_definition)# 执行任务仿真for step in range(task.max_steps):action = agent.get_action(env)env.step(action)if task.is_completed(env):breakreturn task.get_performance_metrics()
3D资产处理
import trimesh
import numpy as np
from b1k_pipeline.utils import load_mesh, save_meshdef process_fillable_volumes(object_fs, fillable_fs):"""处理可填充物体的体积计算"""MAX_BBOX = 0.3# 加载网格数据dip_mesh = load_mesh(object_fs, "fillable_dip.obj", force="mesh")ray_mesh = load_mesh(object_fs, "fillable_ray.obj", force="mesh")# 计算边界框和缩放native_bbox = np.array(metadata["bbox_size"])scale = np.minimum(1, MAX_BBOX / np.max(native_bbox))# 应用变换inv_scale = 1 / scaletransform = np.diag([inv_scale, inv_scale, inv_scale, 1])dip_mesh.apply_transform(transform)# 合并网格并计算凸包combined_mesh = trimesh.convex.convex_hull(np.concatenate([dip_mesh.vertices, ray_mesh.vertices], axis=0))return combined_mesh
碰撞检测优化
from b1k_pipeline import mesh_tree
import networkx as nxdef build_mesh_tree(target, load_upper=False):"""构建网格树结构用于碰撞检测优化"""G = nx.DiGraph()# 加载对象列表和边界框with target_output_fs.open("object_list.json", "r") as f:object_list = json.load(f)mesh_list = object_list["meshes"]object_bounding_boxes = object_list["bounding_boxes"]# 构建层次结构for model_id, instances in object_bounding_boxes.items():for instance_id, bbox in instances.items():# 创建网格节点和连接node = (model_id, instance_id)G.add_node(node, bounding_box=bbox)# 添加父子关系if "parent" in bbox:parent_node = (bbox["parent"]["model_id"], bbox["parent"]["instance_id"])G.add_edge(parent_node, node)return G
任务评估系统
import json
from bddl.object_taxonomy import ObjectTaxonomydef evaluate_behavior_task(task_name, agent_actions, environment_state):"""评估BEHAVIOR任务完成情况"""object_taxonomy = ObjectTaxonomy()# 加载任务定义task_definition = load_task_definition(task_name)# 验证对象状态required_states = task_definition["required_states"]current_states = extract_object_states(environment_state)# 计算任务完成度completion_metrics = {"success": True,"partial_success": 0.0,"violations": [],"efficiency": calculate_efficiency(agent_actions)}for state_requirement in required_states:if not check_state_requirement(state_requirement, current_states):completion_metrics["success"] = Falsecompletion_metrics["violations"].append(state_requirement)completion_metrics["partial_success"] = (1 - len(completion_metrics["violations"]) / len(required_states))return completion_metrics
BEHAVIOR-1K为具身AI研究提供了完整的仿真基础设施,从3D资产处理到复杂的任务评估,支持在真实的家庭环境中开发和测试AI智能体。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
