☰
如何用Blender批量生成10000条训练视频:object-permanence程序化生成器设计原理
2026/10/19 1:26:48 网站建设 项目流程
  • 数据集
  • 人工智能

【免费下载链接】object-permanence

项目地址:https://ai.gitcode.com/hf_mirrors/Hokin/object-permanence
点击查看免费下载

object-permanence 是一个基于Blender 批量生成训练视频的程序化生成器数据集项目:它用 150 个手工设计的认知任务,每个任务生成10000 条视频续写样本,共产出 150 万条(214 GB)训练语料,用于训练具备"物体恒存性(object permanence)"的世界模型。本文带你理解它的设计原理与数据组织方式。

🧠 先认识一下这个项目

物体恒存性是认知科学里的经典概念:一个球滚到箱子后面消失了,婴儿也知道"球还在"。视频模型(也叫世界模型 world model)是否具备这种"看不见时依然认为物体存在"的能力?

object-permanence 项目给出的答案是:用数据教出来。它的核心做法是:

  • 设计150 个认知任务(如 ball_behind_box_stack_task.tar、three_cup_shell_game_task.tar 这类"杯子盖球"经典场景),分成六大认知类别
  • 为每个任务编写一个Blender 程序化生成器(procedural generator)
  • 每个生成器随机化场景参数,批量渲染出10000+ 条训练样本

关键信息速览(来自 README.md):

属性数值
任务数150个,分六大认知类别
样本总量1,500,000条(每任务 10000 条)
打包方式150 个 tar 包,一个任务一个包(每个 0.7–4.1 GB)
总大小214 GB
视频规格1280 × 720,24 fps
片段长度60 帧输入 → 60 帧目标(2.5 s → 2.5 s)
每条样本文件数5 个文件

🔧 程序化生成器的设计原理

这是整个项目最精华的部分,可以拆成三个核心思想。

固定认知结构,随机"干扰参数"

程序化生成的难点在于:既要样本千变万化,又不能改变任务要考察的"认知点"。

object-permanence 的解法是分离两类参数:

  1. 认知结构参数(固定):任务逻辑本身。比如"小球滚过屏幕后方"这个遮挡任务里,球必须从一侧消失、从另一侧出现,遮挡关系始终成立
  2. 干扰参数(nuisance parameters,随机化):球速快慢、光照方向、摄像机角度、物体尺寸与颜色等"无关变量"

生成器每次渲染时,只重掷"随机骰子"(速度、光照、机位等),而任务的核心认知逻辑原样保留。这样就做到了:

同一个任务,渲染 10000 次,得到 10000 条"长得都不一样,但考的是同一个能力"的视频样本。

这正是"程序化生成器"区别于"手工拍 10000 条视频"的关键——人力只花在设计任务上,量级交给程序。

每个任务 = 一个 Blender 生成器

train/ 目录下的 150 个 tar 包,一一对应 150 个生成器,任务名直接写在文件名里:

  • 遮挡类:pivoting_occluder_task.tar(旋转遮挡板)、theater_curtain_task.tar(舞台幕布)
  • 容器类:cabinet_task.tar(柜子)、sliding_lid_box_task.tar(滑动盖盒子)
  • 碰撞与运动类:ball_strikes_pendulum_task.tar(撞摆锤)、headon_velocity_exchange_task.tar(正碰速度交换)
  • 记忆/追踪类:four_cup_three_swaps_task.tar(四杯三换)、moving_tray_task.tar(移动托盘)

从命名就能看出设计思路:每个任务都指向一种具体的认知能力——遮挡追踪、因果碰撞、身份追踪、计数等。

渲染输出:视频 + 真值标注一次到位

每条样本不是"一段裸视频",而是 5 个文件一组的完整训练单元(以cabinet_0000为例,见 README.md 的目录说明):

文件作用
input_video.mp460 帧上下文视频(2.5 秒),即"题目"
target_video.mp460 帧目标续写视频,即"标准答案"
prompt.txt场景文字描述,统一以 "Continue this scene as a short video." 开头
trajectory.npz全部 120 帧的真值物理轨迹(物体位姿)
metadata.json该样本的随机参数、来源信息、视频切分方式

其中trajectory.npz体现了程序化生成的另一个优势:因为视频是"算"出来的而不是"拍"的,每一帧每个物体在哪里都有精确真值,可做轨迹一致性校验、可监督训练,这是实拍数据给不了的。

📦 1.5M 数据是怎么打包交付的

数据集按"一个任务一个 tar"的方式组织,展开后的结构(见 README.md):

train/ └── shard1/ └── cabinet_task/ ├── cabinet_0000/ # 5 个文件一组 ├── cabinet_0001/ └── …(共 10000 个样本目录)

几个值得注意的工程细节:

  • 分片渲染(sharding):shard1对应生成器 G01–G30,shard5对应 G121–G150,说明渲染是按 5 个分片并行分发的——150 万个视频不可能在一台机器上串行渲完
  • 完整性校验:train/checksums.txt 为每个 tar 记录了 sha256 哈希与文件数(每包 50000 个文件,即 10000 样本 × 5 文件),下载后可直接校验,文件头部还附了一键校验命令
  • 样本可溯源:metadata.json记录了每条样本的随机参数与 provenance(来源),任何一条"奇怪样本"都能定位到是哪个生成器、哪组参数产生的

🚀 上手路径:三步用上这批数据

  1. 下载:从项目的训练语料仓库获取你需要的任务 tar(不必一次拉满 214 GB,先挑一两个任务如 train/top_rail_screen_task.tar 试跑即可)
  2. 校验:对照 train/checksums.txt 执行文件头部注释给出的sha256sum -c流程确认完整性
  3. 加载训练:按input_video.mp4→target_video.mp4构造"续写预测"任务,prompt.txt作为文本提示,trajectory.npz可用于真值比对或评估

📄 许可与引用须知

  • 数据采用CC BY-NC 4.0协议:仅限非商业用途,商用需联系版权方授权
  • 项目同时发布了配套的 300 题评测集(exam)、14 个视频模型的评测结果,以及 16B 参数的世界模型 PWM-WROP——该模型在盲测 Elo 对抗中位列第三、续写类模型第一,从侧面验证了这套程序化训练数据的有效性
  • 引用可参考 README.md 中的 BibTeX

总结

object-permanence 展示了一套可复用的程序化训练视频生成范式,其设计精髓可归纳为三点:

  1. 任务驱动:150 个任务各自锁定一种认知能力,数据为"考察点"服务
  2. 结构固定 + 参数随机:认知逻辑不变,速度/光照/机位等无限重掷,单任务稳定产出 10000 条样本
  3. 真值内建:轨迹、参数、元数据与视频同批生成,天然带标注、可校验、可溯源

这套"用 Blender 批量生成训练视频"的思路,对任何想为世界模型、视频预测模型构造大规模合成数据的团队,都有一份完整的参考答案。

  • 数据集
  • 人工智能

【免费下载链接】object-permanence

项目地址:https://ai.gitcode.com/hf_mirrors/Hokin/object-permanence
点击查看免费下载
上一篇:燃料管路泄漏排查记录
下一篇:华为运动数据迁移终极指南:3分钟实现Strava同步

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询