一句话定位
用 Unity 3D 引擎搭一套近似照片级真实感的室内场景,配一层 Python-Unity 的 Agent-Simulator API,把”可交互物体”(能开关、能加热变冷、能打碎、能接水)当作一等公民而不是静态背景——这是 2017 年最早一批把”交互”而非单纯”导航/渲染”作为核心卖点的具身智能仿真环境之一,后续衍生出 RoboTHOR(sim2real)、ManipulaTHOR(机械臂操作)、ProcTHOR(程序化生成万级场景)、ArchitecTHOR(评测集)等整个 THOR 家族,并成为 ALFRED、TEACh 等指令跟随基准的底层引擎。
背景与定位
论文动机是视觉智能研究长期依赖静态图像/视频(物体检测、场景识别、图像分割),而人类的视觉理解建立在与环境交互并从交互中学习之上。作者把”仿真替代真机训练”的价值主张归纳为四点区分于其他仿真平台的因素:(1) 交互——支持物体状态改变(微波炉开关、面包切片后可烤、水龙头放水到杯子)、机械臂操作、以及连锁因果交互;(2) 场景规模——相比同期平台通过程序化生成与专业 3D 美术手工建模双轨扩充场景/物体数量;(3) 画质——场景与物体接近照片级真实,优于 Atari/围棋这类与真实世界视觉复杂度脱节的仿真基准,有利于向真实世界迁移;(4) API——提供 Python 接口驱动 Unity 3D 引擎,覆盖导航、施力、物体交互、物理建模等能力。
这篇 arXiv 论文本身随版本持续更新(v1 于 2017-12-14 提交,本页六维信息取自 2022-08-26 提交的 v4,是随代码库演进不断重写的”活文档”,而非一次性定稿论文),因此文中同时回顾了自 2017 年首发以来衍生出的整个 THOR 家族与下游生态:RoboTHOR(sim2real 评测)、ManipulaTHOR(机械臂操作)、ProcTHOR(程序化场景生成)、ArchitecTHOR(评测房屋集),以及建立在 AI2-THOR 之上的指令跟随基准 ALFRED、TEACh、DialFRED 与视觉问答基准 IQA。范式定位上,AI2-THOR 属于近照片级真实感、以物体交互为核心的室内具身仿真环境(interactive photorealistic indoor simulator),与同期更侧重大规模真实场景扫描导航的 habitat(Meta,扫描式场景、无手工可交互物体标注)形成互补路线:AI2-THOR 走”手工/程序化建场景 + 深度标注可交互物体状态”,Habitat 走”真实世界 3D 扫描 + 高效渲染引擎”。
模型架构
AI2-THOR 不是一个神经网络模型,而是一套仿真环境 + Python-Unity 客户端-服务器架构,六维模板中的”模型架构”对应其环境本身的技术结构:
-
引擎与调用回路:后端是 Unity 3D 游戏引擎,负责存储场景、物体属性、动作执行逻辑、以及渲染不同图像模态的 shader;前端是 Python API,通过一个本地 server 把动作(action)转发给 Unity;Unity 执行后返回一个
Event对象,包含相机图像与环境元数据(论文 Figure 2 的 “agent-simulator loop”)。 -
Agent 类型(5 种,各自独立动作空间):ManipulaTHOR、StretchRE1(均支持机械臂抓取/开启物体的连续臂部操作);LoCoBot、Abstract、Drone(以更抽象的方式交互——只要目标物体在相机视野内且距离足够近,执行一次高层 Open/Pickup 指令即可生效,无需真实的臂部运动学)。所有 Agent 均可导航、执行环境查询与状态改变操作。
-
动作空间(四大类):
- 导航动作:离散或连续的 移动(如 MoveAhead 默认步长 0.25m)、旋转(如 RotateRight 默认 30°)、抬头/低头(如 LookUp 默认 30°)、传送(teleport);带臂 Agent 额外有控制臂部姿态的动作。
- 交互动作:抽象交互(Open/Pickup/Push/Throw/Drop/Place,只需可见+距离达标即可执行,可触发物体状态改变如 cook/break/slice/toggle/fill/use up);臂部交互(连续控制夹爪逐步开合物体或抓取移动物体);因果交互(如咖啡机+杯子→自动倒满咖啡;可破碎物体摔得足够重→自身及落点碎裂;推倒桌子→桌上物体坠落甚至破碎)。
- 环境查询:如获取到目标物体的最短路径、查询某像素对应的物体、获取物体凸包等,属于按需计算的元数据,不在每步 Event 中默认返回。
- 环境状态改变:随机化场景材质/光照、调整渲染质量、调整相机分辨率、更换天空盒等。
-
图像模态:RGB、深度(Depth)、语义分割(Semantic Segmentation)、实例分割(Instance Segmentation)、法线(Normals),此外项目主页与 README 另标注支持俯视(top-down)、正交投影、第三人称相机视角;每个 Agent 自带一个相机,可另加相机(如俯视相机),更多模态可通过修改 Unity 后端 shader 扩展。
-
物体数据库规模:论文(v4,2022)称物体数据库含 3,578 个可交互物体,“仍在快速增长”;GitHub README(2026 快照)标注为 2600+ 定制设计的家居物体、覆盖 100+ 物体类型,项目主页快照(2022 年前后)则称 iTHOR 单独”超过 2000 个独立物体”、RoboTHOR “600+ 物体”——三处数字来自不同时间点的官方渠道,量级一致但具体数值随版本迭代波动,此处如实并列,不强行取一个”标准值”。
-
场景/环境元数据:每步动作后返回 Agent 位姿、每个物体的位姿与状态(是否在运动、是否对 Agent 可见、开合程度、干净/脏等)、场景尺寸等;多数任务训练时不直接暴露这些元数据给 Agent(避免任务被”信息捷径”解决),而是用它构建奖励函数、模仿学习专家轨迹、或训练/评测集的 ground truth。
数据
AI2-THOR 本身没有传统意义上的”训练数据集”,其”数据资产”是场景与物体本身;六维模板中的”数据”对应其场景数据集家族(论文 Table/Figure 3 汇总):
- iTHOR:120 个房间尺度场景,覆盖卧室、浴室、厨房、客厅 4 类房间;全部由专业 3D 美术手工建模,是 AI2-THOR 最初发布即包含的场景集。
- RoboTHOR:89 个迷宫式宿舍风格公寓场景,同样由专业 3D 美术手工建模;其中在西雅图 AI2 办公室附近实体重建为物理对应场景的有 14 个公寓(项目主页数字),用于研究”同一环境仿真 vs 真实”评测时的性能落差(sim2real gap)。论文正文另指出:Sim2Real 相关实验里 Agent 在 75 个仿真场景上训练,在分布相近但未见过的真实世界场景上评测。
- ProcTHOR(ProcTHOR-10K):用程序化生成技术批量合成场景,目的是解决 iTHOR/RoboTHOR 场景数量有限导致的过拟合问题;初始发布版本程序化生成 10,000 个多样化、语义合理的房屋用于训练。论文强调”仅用 ProcTHOR 预训练”就在 RoboTHOR/iTHOR/ArchitecTHOR 的 ObjectNav 任务上取得当时最优的零样本泛化结果,且未使用任何额外训练数据。
- ArchitecTHOR:与 ProcTHOR 配套开发的评测集,10 栋评测房屋(5 栋验证 + 5 栋测试),同样由专业 3D 美术手工建造,风格为独栋大户型,目的是检验在 ProcTHOR 程序化场景上训练的模型是否只是记住了生成算法的偏置,还是能泛化到真实世界分布的户型与物体摆放。
- 下游数据集/基准(非 AI2-THOR 自身产出,而是构建在其之上):ALFRED(自然语言指令跟随)、TEACh(人机对话式指令跟随)、DialFRED、IQA(交互式视觉问答)——论文将这些列为 AI2-THOR 生态孕育出的重要下游工作,而非其自身数据资产。
不存在”仿真 vs 真实数据混合比例”这类概念,因为 AI2-THOR 定位是环境本身,真实数据只出现在下游 sim2real 研究(如 RoboTHOR 的物理对应场景)里作评测对照,而非训练输入。
训练方法
AI2-THOR 本身不涉及模型训练,“训练方法”六维对应两层内容:(1) 研究者如何用它训练 Embodied AI 智能体;(2) 论文自身做的 ObjectNav 性能对比实验的训练协议。
- 通用训练范式:AI2-THOR 提供 Python API 供强化学习、模仿学习等范式驱动 Agent;AI2 团队另外维护配套框架 AllenAct,为在 AI2-THOR 上训练 Agent 提供开箱即用支持。
- 论文自身的性能对比实验协议(Appendix B):为对比 AI2-THOR(ProcTHOR-10K)与 Habitat 1.0(HM3D)的训练吞吐,两边均:
- 训练 ObjectNav 任务,使用同一个 LoCoBot Agent、同一动作空间;
- 使用与 ProcTHOR 论文相同的 actor-critic 策略网络;
- 移除 “End” 动作,强制 Agent 每条 episode 都跑满 500 步,以减小对已学策略好坏的依赖;
- rollout 长度 128,两边超参数一致;
- 使用 28 个并行仿真进程(约打满 GPU-1 显存;作者提到 Habitat 实例显存占用略低于 ProcTHOR 实例,为公平对比刻意保持并行数相同);
- 使用”场景切换 trick”:强制所有并行仿真器每 10 个 rollout(即每 10 × 128 × 28 = 35,840 步)同步切换到下一个场景,以避免异步场景重置拖慢同步 RL 训练。
- 主文额外提到用该设置训练一个 ObjectNav Agent 100 万步做基准测试。
Infra(训练 / 推理工程)
- 硬件:性能对比实验用 2-GPU 机器(GeForce RTX 2080),GPU-0 承载策略网络的前向/反向与参数更新,GPU-1 承载仿真器实例的渲染。
- 并行度:28 个并行仿真进程(约打满 GPU-1 显存)。
- GPU-hours:未披露(论文只报告 FPS 吞吐,未给总训练时长或 GPU-hours)。
- 精度(FP16/FP32等):未披露。
- 训练吞吐(本文核心可比数字):AI2-THOR(ProcTHOR-10K)训练 FPS 区间 145.5–179.4,均值 167.7;同设置下 Habitat 1.0(HM3D)训练 FPS 区间 119.7–264.3,均值 230.5。作者同时指出跨仿真器比较吞吐”出人意料地困难”,原因包括:不同仿真器的 Agent 动作空间/复杂度不可比(如带臂 ManipulaTHOR 比纯导航 LoCoBot 慢得多);单进程速度具有欺骗性(AI2-THOR 这类环境易于多进程并行,单进程慢不代表整体吞吐低);RL 训练还受策略网络前向/反向传播、以及场景重置开销(对 AI2-THOR/Habitat/iGibson 这类仿真器,换场景比走一步 Agent 动作要贵几个数量级)等因素制约,因此原始仿真器速度价值被大幅稀释。
- 无头渲染(headless rendering):GitHub README 与项目主页均记录 2022 年 2 月起 AI2-THOR 支持无头渲染,便于在计算集群上部署,但论文与 README 均未给出具体的推理 FPS / 控制频率 / 边缘硬件延迟数字——未披露。
评测 benchmark
论文本身不是一个”模型打分”式工作,其定量结果集中在两处,均取自论文原文:
1)与其他仿真器的规模/能力对比(Table 1,2022 v4 版本数字):
| Simulator | # of Scenes | # of Objects | Object States | Arm Manipulation | Multi-Agent | Sound | VR | Engine | Interactive Editor |
|---|---|---|---|---|---|---|---|---|---|
| AI2-THOR | ∞(经 ProcTHOR 程序化生成) | 3,578 | ✓ | ✓ | ✓ | ✓ | ✓ | Unity | ✓ |
| iGibson 2.0 | 15 | 1,217 | ✓ | ✓ | ✓ | ✗ | ✓ | PyBullet | ✗ |
| Habitat 1.0 | 1,000 | – | ✗ | ✗ | ✗ | ✓ | ✗ | Magnum | ✗ |
| Habitat 2.0 | 105 | 92 | ✓ | ✗ | ✗ | ✗ | ✗ | Magnum | ✗ |
| ThreeDWorld | 15 | 200 | ✗ | ✓ | ✓ | ✓ | ✓ | Unity | ✓ |
| SAPIEN | 0 | 2,346 | ✗ | ✓ | ✗ | ✗ | ✗ | PhysX | ✗ |
2)ObjectNav 训练吞吐对比(Appendix B,见上方 Infra 一节数字):AI2-THOR(ProcTHOR-10K)均值 167.7 FPS vs Habitat 1.0(HM3D)均值 230.5 FPS,同一 2-GPU 机器、同一策略网络、同一动作空间下测得。
论文未提供 ObjectNav/ALFRED 等下游任务的成功率数字(这些数字属于建立在 AI2-THOR 之上的下游论文,如 ProcTHOR、RoboTHOR、ALFRED 各自的评测,本页不代入归属)。
创新点与影响
- 贡献:AI2-THOR 是最早一批(2017)把”物体可交互、可改变状态”作为核心设计目标、而非仅做导航/渲染的近照片级真实感室内仿真环境;提供统一的 Python-Unity API 覆盖导航、机械臂操作、物体状态改变、多智能体、多种图像模态与丰富元数据;论文自陈其在 200+ 场景、3,578 个物体、200+ 动作规模上超过同期同类平台(iGibson、Habitat、ThreeDWorld、SAPIEN,见 Table 1)。
- 改变了什么:催生了整个 THOR 生态——RoboTHOR 把 sim2real 迁移做成可复现评测协议;ManipulaTHOR 把机械臂视觉操作纳入同一套 API;ProcTHOR 用程序化生成把训练场景规模从”百级手工场景”推向”万级自动生成场景”,并证明仅用程序化数据预训练即可在 RoboTHOR/iTHOR/ArchitecTHOR 上取得当时最优的零样本泛化(获 NeurIPS 2022 Outstanding Paper Award,据 GitHub README 引用信息);ArchitecTHOR 则补上”程序化训练、真实分布评测”的测试集缺口。论文自陈:截至 2022 年更新时,AI2-THOR 已被用于 150+ 篇发表工作,累计下载超过 50 万次,覆盖视觉导航(ImageNav/ObjectNav)、音视觉导航、视觉-语言指令跟随(ALFRED/TEACh/DialFRED/IQA)、人机交互、sim2real 迁移、多智能体协作、物体关系/可供性学习、场景合成、纯视觉任务(遮挡补全、embodied 目标检测)与可解释性研究等十余个方向。
- 作者自陈局限:论文 Appendix B 明确指出跨仿真器吞吐对比”出人意料地困难”——不同仿真器 Agent 动作空间/复杂度不可比、单进程速度具有误导性、RL 训练的实际瓶颈(策略网络前反向传播、场景重置开销)会大幅稀释”原始仿真器速度”这个指标的参考价值;这也是作者为何在正文只给出一次受控对比实验,而非笼统宣称自己”更快”。
原始链接
- arXiv 摘要:https://arxiv.org/abs/1712.05474
- arXiv PDF(v4,2022-08-26):https://arxiv.org/pdf/1712.05474
- 官方 GitHub 仓库:https://github.com/allenai/ai2thor
- 官方项目主页(含 Demo/iTHOR/RoboTHOR/ManipulaTHOR 文档入口):https://ai2thor.allenai.org/
一手源存档(sources/)
- ai2-thor—github-readme — GitHub README 快照(sources/embodied/2017/ai2-thor—github-readme.md)
- ai2-thor—project-page — 官方项目主页快照(sources/embodied/2017/ai2-thor—project-page.md)
- arXiv 原文 PDF(1712.05474v4,不入 git):正文六维数字均取自该 PDF,引用 arXiv URL。