virtualhome
VirtualHome 是一个交互式多智能体家庭活动模拟平台,旨在通过程序化指令复现复杂的居家生活场景。它主要解决了具身人工智能(Embodied AI)研究中缺乏高保真、可交互训练环境的痛点,让研究人员能够低成本地生成大量带有精确标注数据的家庭活动视频,用于算法训练与验证。
该平台特别适合人工智能研究员、强化学习开发者以及计算机视觉学者使用。用户只需编写简单的动作序列代码,VirtualHome 即可驱动虚拟角色在场景中执行拿取物品、开关电器、打开容器等精细操作,并实时渲染出包含时间戳动作、语义分割、光流和深度信息等“地面真值”数据的多模态输出。
其核心技术亮点在于双模拟器架构:基于 Unity 的模拟器负责生成逼真的活动视频,而演化图模拟器则描述环境状态的动态变化。最新版本更引入了程序化生成能力,可创建无限多样的独特家居环境,并配备了同步昼夜系统与增强的物理引擎。无论是用于训练智能体完成家务任务,还是研究多智能体协作行为,VirtualHome 都提供了一个灵活且强大的实验沙盒。
使用场景
某具身智能(Embodied AI)研究团队正在训练家庭服务机器人学习“早晨准备咖啡”等复杂多步任务,需要海量且标注精确的仿真数据来强化学习算法。
没有 virtualhome 时
- 数据采集成本极高:团队需雇佣演员在真实房屋中反复表演并录制视频,不仅耗时耗力,还难以覆盖所有可能的突发状况(如杯子被打翻)。
- 缺乏精确真值标注:真实视频难以直接获取像素级的语义分割、光流或物体深度信息,导致模型训练缺乏关键的监督信号。
- 场景泛化能力弱:受限于物理场地,无法快速生成成千上万种不同布局的房间或光照条件,导致训练出的机器人在新环境中表现不佳。
- 多智能体协作难模拟:难以协调多个真人同时配合演示复杂的交互逻辑,限制了多代理协同算法的研发进度。
使用 virtualhome 后
- 程序化自动生成数据:研究人员只需编写简单的指令序列(如“拿起杯子”、“打开咖啡机”),virtualhome 即可自动渲染出无限多样的活动视频,效率提升百倍。
- 同步输出多维真值:模拟器在生成视频的同时,直接输出时间戳动作、实例分割图和深度图,为算法提供了完美的训练标签。
- 环境动态随机化:利用其过程生成能力,团队可一键切换房间布局、调整昼夜光照甚至改变室外地形,大幅增强了模型的鲁棒性。
- 灵活的多代理仿真:通过 Python API 轻松定义多个智能体角色及其交互逻辑,完美复现多人协作场景,加速了复杂策略的收敛。
virtualhome 将原本需要数周的真实世界数据采集与标注工作,压缩为几分钟的代码执行过程,成为具身智能算法从理论走向落地的关键加速器。
运行环境要求
- Linux
- macOS
- Windows
- 运行 Unity 模拟器需要 GPU
- 在无显示器环境(如服务器)下运行时,需配置 X Server 并指定 GPU
- Docker 部署也隐含图形处理需求
- 具体型号、显存大小及 CUDA 版本未在文档中明确说明
未说明

快速开始
VirtualHome
VirtualHome 是一个交互式平台,可通过程序模拟复杂的家庭活动。VirtualHome 的关键在于它支持与环境的复杂交互,例如拿起物体、开关电器、打开设备等。我们的模拟器可以通过 Python API 轻松调用:只需将活动编写为简单的指令序列,这些指令就会在 VirtualHome 中被渲染出来。您可以选择不同的智能体和环境,也可以实时修改环境。此外,您还可以流式获取多种真实数据,如带时间戳的动作、实例/语义分割以及光流和深度信息。该平台能够模拟多智能体活动,并可作为训练具身人工智能任务智能体的环境。
更多关于环境和平台的详细信息,请访问 virtual-home.org。
最新动态
VirtualHome 2.3 已发布!以下是最新更新:
- 增加了程序化生成能力,使智能体能够探索无限种独特的环境!
- 我们新增了更多自定义设计的环境。
- 加强了环境中的物理模拟效果。
- 引入了同步昼夜变化的时间管理系统。
- 新增户外地形,具备精确的阳光和阴影效果。
- 改进了室内实时光照效果。
- 房间更加逼真。
- 性能显著提升,资源优化,稳定性增强。
- 更新了文档。
- 修复了现有环境中的一些常见问题。
往期更新
- [2020年8月] 添加了强化学习环境演示,并提供了将环境与 Ray 结合使用的示例。
- [2020年4月] 我们新增了文档!请访问 http://virtual-home.org/documentation 查看。
- 我们提供了类似 OpenAI Gym 的环境,用于在 VirtualHome 上训练强化学习智能体。请查看 unity_environment.py 类。
- 提供了在场景中添加角色和固定摄像机的 API,并支持从这些摄像机录制视频。
目前开发中
- 程序化生成能力的进一步优化。
- 更高的写实性功能。
- 更多动作和物体交互。
- 人类交互功能。
目录
- 概述
- 设置
- 生成视频/关键帧
- VirtualHome 强化学习环境
- 数据集
- 自定义 VirtualHome
- 引用
- 贡献者
概述
VirtualHome 中的活动由两个部分组成:程序表示构成活动的一系列动作顺序,而 图 则代表活动发生环境的定义。给定一个程序和一张图,模拟器会执行该程序,生成活动的视频,或者生成一系列图,展示活动进行过程中环境的变化情况。为此,VirtualHome 包含两种模拟器:Unity 模拟器 和 演化图模拟器。您可以在 http://virtual-home.org/documentation 找到更完整的文档,其中包含示例和不同的可执行文件。
Unity 模拟器
该模拟器基于 Unity 构建,可用于生成活动视频。要使用此模拟器,您需要下载相应的可执行文件,并通过 Python API 运行它。您可以在 demo/unity_demo.ipynb 中查看该模拟器的演示。
演化图模拟器
该模拟器完全在 Python 中运行,可在执行程序时生成一系列图。您可以在 simulation/evolving_graph 中运行它。请注意,此模拟器中的某些对象和动作目前尚未在 Unity 模拟器中支持。
设置
安装
$ pip install virtualhome
我们还提供了一个带有演示和起始代码的 Jupyter 笔记本。如果您想运行演示,请 安装 Jupyter 并在您的主机上运行。如果您是 Jupyter 新手,请参阅 运行 Jupyter Notebook 以了解如何使用此工具。
下载 Unity 模拟器
下载 VirtualHome UnitySimulator 可执行文件,并将其移动到 simulation/unity_simulator 目录下。
测试模拟器
要在本地机器上测试模拟器,双击可执行文件,或通过终端运行。通过终端运行时,建议设置窗口模式(这样模拟器就不会占据整个屏幕),命令如下:
./path_to_exec -screen-fullscreen 0 -screen-quality 4
模拟器启动后,在 demo/unity_demo.ipynb 中运行演示。
如果您没有显示器,或者希望远程测试模拟器,可以使用 Docker 或 X 服务器(安装说明请参见 这篇 Medium 文章)。使用 X 服务器运行可执行文件时,请使用 -batchmode 参数。对于 Linux 系统,操作步骤如下:
首先在终端中启动 X 服务器。您需要指定要使用的显示编号以及对应的 GPU。默认情况下,它会使用所有可用的 GPU:
sudo python helper_scripts/startx.py $display_num
然后在另一个终端中启动可执行文件:
DISPLAY=:display_num ./{path_sim}/{exec_file}.x86_64 -batchmode
对于 Linux 系统,您还可以通过 UnityCommunication 指定可执行文件来启动模拟器。这将直接在指定的屏幕上打开可执行文件。具体操作如下:
在启动 X 服务器后,运行:
from simulation.unity_simulator import comm_unity
comm = comm_unity.UnityCommunication(file_name=file_name, port={your_port}, x_display={your_display})
这将打开一个可执行文件,并创建一个通信对象,用于渲染脚本或模拟活动。您可以同时打开多个可执行文件,以多进程方式训练模型或生成数据。
Docker
您也可以使用 Docker 运行 Unity 模拟器。设置方法请参见 这里。
生成视频和快照
VirtualHome Unity 模拟器 允许生成与家庭活动相对应的视频。此外,还可以使用 Evolving Graph 模拟器获取每一步执行时的环境,并利用 UnitySimulator 为每一步生成环境快照。
生成视频
打开模拟器并运行:
cd demo/
python generate_video.py
生成快照
打开模拟器并运行:
cd demo/
python generate_snapshots.py
系统将为给定的脚本生成一组快照,并保存到 demo/snapshot_test.png。
VirtualHome 强化学习环境
VirtualHome 可用作强化学习的环境。我们在 simulation/environment/unity_environment.py 中提供了一个基类 UnityEnvironment。您可以通过运行以下代码来测试该类的功能:
cd demo
python test_unity_environment.py
提供的环境可以与 Ray 结合使用,以并行运行多个环境,从而扩展您的强化学习算法。您可以通过运行以下代码来测试并行环境:
cd demo
python test_unity_environment_mp.py
数据集
我们收集了一组程序,并使用 Evolving Graph 模拟器为其添加了图结构。您可以从 这里 下载这些数据。下载并解压后,将程序移动到 dataset 文件夹中。您也可以通过执行以下脚本完成此操作:
./helper_scripts/download_dataset.sh
数据集应遵循以下结构:
dataset
└── programs_processed_precond_nograb_morepreconds
|── initstate
├── withoutconds
├── executable_programs
| ├── TrimmedTestScene7_graph
| └── ...
└── state_list
├── TrimmedTestScene7_graph
└── ...
其中,withoutconds 和 initstate 文件夹包含原始程序及先决条件。
当脚本在环境中执行时,脚本会根据环境中的实例调整原始对象的位置。您可以在 executable_programs/{environment}/{script_name}.txt 中查看最终生成的脚本。
要查看环境的图结构及其在程序执行过程中的变化,请检查 state_list/{environment}/{script_name}.json。
有关程序和环境图的更多详细信息,请参阅 dataset/README.md。
脚本增强
在论文《通过活动草图合成环境感知型活动》中,我们使用两个知识库对脚本进行了增强:KB-RealEnv 和 KB-ExceptionHandler。您可以从 KB-RealEnv 和 KB-ExceptionHandler 下载增强后的脚本。
以下是用于增强脚本的代码:
使用 KB-RealEnv 增强
cd dataset_utils
python augment_dataset_locations.py
使用 KB-ExceptionHandler 增强
cd dataset_utils
python augment_dataset_exceptions.py
原始收集及脚本化程序
我们最初收集了一组基于语言描述预测的程序,并通过脚本语言生成了更多的程序。这些程序在 这里 被描述为 VirtualHome 活动(收集的程序)和 ActivityPrograms(脚本化的程序)。您可以从以下链接下载:
资源
为了进行上述生成和增强操作,我们使用了一些有价值的资源文件来设置物体的属性、 affordance 等。更多详情请参阅 resources/README.md。
文档
如需了解更多关于 VirtualHome 的信息,请访问 VirtualHome 文档。
修改 VirtualHome
如果您希望为 VirtualHome 做出贡献,或根据自己的研究需求修改模拟器,请查看包含 Unity 源代码 的仓库。您需要下载 Unity 编辑器,并在完成更新后构建自己的可执行文件。
引用
VirtualHome 已被用于以下研究:
VirtualHome:通过程序模拟家庭活动。PDF
X. Puig*, K. Ra*, M. Boben*, J. Li, T. Wang, S. Fidler, A. Torralba。
CVPR2018。通过活动草图合成环境感知型活动。
A. Liao*, X. Puig*, M. Boben, A. Torralba, S. Fidler。
CVPR2019。观看与协助:社会感知与人机协作的挑战。
X. Puig, T. Shu, S. Li, Z. Wang, J. Tenenbaum, S. Fidler, A. Torralba。
ICLR2021,亮点论文。
NeurIPS 合作人工智能研讨会 2020 年度最佳论文奖。用于交互式决策的预训练语言模型。项目 | PDF
S. Li, X. Puig, C. Paxton, Y. Du, C. Wang, L. Fan, T. Chen, D. Huang, E. Akyürek, A. Anandkumar, J. Andreas, I. Mordatch, A. Torralba, Y. Zhu。
NeurIPS 2022,口头报告。
如果您计划使用该模拟器,请引用以下两篇论文(第一篇介绍了 v1.0 版本,第二篇介绍了 v2.0 版本,即 VirtualHome-Social):
@inproceedings{puig2018virtualhome,
title={Virtualhome: Simulating household activities via programs},
author={Puig, Xavier and Ra, Kevin and Boben, Marko and Li, Jiaman and Wang, Tingwu and Fidler, Sanja and Torralba, Antonio},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={8494--8502},
year={2018}
}
@misc{puig2020watchandhelp,
title={Watch-And-Help: A Challenge for Social Perception and Human-AI Collaboration},
author={Xavier Puig and Tianmin Shu and Shuang Li and Zilin Wang and Joshua B. Tenenbaum and Sanja Fidler and Antonio Torralba},
year={2020},
eprint={2010.09890},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
贡献者
VirtualHome API 和代码由以下人员开发:
- Xavier Puig
- Marko Boben
- Kabir Swain
- Jordan Ren
- Kevin Ra
- Zilin Wang
- Shuang Li
- Tianmin Shu
- Andrew Liao
版本历史
v2.3.02022/03/28v2.2.02021/03/06v2.1.02021/01/03v2.0.02020/10/16v1.0.02020/07/23常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
