InSpatio-World 数据增广完整搭建流程
目标:利用 InSpatio-World 4D 世界模型 做具身 VLA 轨迹数据增广;输入是少量真实采集的机器人交互视频 + 相机位姿,输出大量合成新视角 / 新轨迹的仿真交互轨迹(RGB、深度、相机外参、动作序列),用于 VLA 策略训练。 前提:模型权重、环境推理代码跑通;GPU(A800/A100,>=40G 显存);已经有原始 demo 数据集(真实轨迹)。 整体思路:原始真实轨迹 → 载入 4D 场景记忆 → 在记忆上做空间 / 轨迹扰动增广 → 采样新相机轨迹(漫游轨迹)→ InSpatio 渲染 RGB + 深度 → 对齐动作标签 → 轨迹过滤清洗 → 输出增广数据集供给 VLA
✅ InSpatio-World 官方公开仓库地址
Github 官方仓库:https://github.com/inspatio/inspatio-worldarXiv
体流程总览
原始数据集(少量真实轨迹:视频+深度+SE3位姿+机器人动作)
↓
1. 原始轨迹预处理 & 4D场景记忆构建(InSpatio记忆编码)
↓
2. 增广采样器:对相机轨迹/场景做扰动(增广策略)
↓
3. InSpatio-World渲染:基于记忆,渲染扰动后的新视角RGB/深度
↓
4. 动作重对齐:为新相机轨迹生成配套机器人动作序列
↓
5. 轨迹质量过滤(剔除崩坏渲染、碰撞、无效轨迹)
↓
6. 数据后处理:打包、格式统一、索引构建
↓
输出:增广轨迹数据集,送入VLA训练 / DPO偏好数据构建
步骤 1:原始轨迹预处理 + 构建 InSpatio 4D 场景 Memory
作用:把少量真实采集视频编码存入 InSpatio 的时空记忆,这是所有增广的基底场景。每条真实轨迹构建独立 scene memory。
- 原始数据规范校验(必须对齐) 每条原始轨迹目录包含:
- rgb/:rgb 图像序列
- depth/:深度图序列
- poses.npy:相机 SE3 外参(4×4 齐次矩阵,世界坐标系)
- actions.npy:机器人动作序列(VLA 用的动作空间,6D delta pose + gripper)
- mask(可选):物体 mask
- 调用 InSpatio 编码器:逐帧将 RGB + 深度 + 相机位姿编码为时空特征,写入
SceneMemory记忆 buffer- 代码入口一般是 pipeline 里的 scene_builder /memory_builder
- 配置记忆参数:最大保存帧数、特征剪枝阈值(控制显存)
- 输出:该场景的 memory 特征缓存,保存在 checkpoint 或者内存中,用于后续渲染增广
⚠️ 重要:一个场景构建一次 memory,后续所有增广都复用这个 4D 场景,不重复编码原始视频,节省算力。
步骤 2:增广采样器(核心,多种增广策略,可组合)
在已经建好的 4D 场景记忆之上,采样新的相机漫游轨迹(这就是数据增广,不是单纯图像 aug,是 4D 空间轨迹增广)
分为两大类:相机轨迹扰动增广(最常用)、场景扰动增广(进阶)
2.1 相机轨迹扰动(优先落地,工程最简单)
基于原始相机轨迹做轨迹采样,生成新的 SE3 相机位姿序列:
- 时间轴重采样:改变采样帧率、时间拉伸 / 压缩,快慢动作增广
- 空间扰动:对原始轨迹每个位姿增加微小噪声(平移噪声、旋转噪声)
- 轨迹插值:在原始关键帧之间插值生成密集新路径
- 新漫游轨迹生成:从原始轨迹的关键点位出发,采样全新漫游路径(环绕物体、侧面视角、俯视 / 仰视,就是你 Gradio 界面拖拽相机 X/Y 偏移那套逻辑)
参数控制:扰动幅度不能过大,超出记忆支持的空间范围会出现渲染崩坏。
2.2 场景扰动增广(进阶,算力消耗更高)
在 4D 记忆上修改场景属性:
- 光照 / 色彩扰动:渲染阶段修改 rgb 色调、亮度、噪声(图像级 aug)
- 物体姿态扰动:在记忆中微调物体位姿(如果支持物体解耦表征)
注意:InSpatio 这类 4D 世界模型,不是所有版本都支持物体独立编辑,如果不支持,只做相机轨迹增广即可。
输出:生成多条新的相机 SE3 轨迹(
aug_poses.npy),作为渲染的相机路径。
步骤 3:InSpatio-World 渲染,生成增广观测序列
输入:4D 场景 Memory + 新采样得到的增广相机轨迹 调用 novel-view 渲染模块,逐时间步渲染:
- 新视角 RGB 图像
- 新视角深度图
- 渲染置信度 / 不确定性图(可选,用于后续轨迹过滤)
工程注意点
- 并行渲染:多轨迹批量渲染,充分利用GPU;单条场景 memory 可以并行渲染多条不同的增广轨迹
- 显存控制:长轨迹分段渲染,避免 OOM
- 颜色空间:渲染输出 RGB,保存的时候注意和 VLA 训练的数据格式对齐
步骤 4:动作重对齐(VLA 最关键一步,很多人漏掉)
只渲染图片没用!VLA 需要 观测 - 动作配对。 两种方案,按需选择:
方案 A:轨迹插值动作标签(快速,低成本,适合初期搭建)
原始轨迹有动作序列;新相机轨迹和原始轨迹做时间 / 空间对齐,插值得到新轨迹对应的动作。
局限:适合小扰动;大幅度新漫游轨迹,动作插值会不匹配。
方案 B:VLA 策略重推演(高质量,推荐,论文亮点)
用预训练 VLA 策略,以渲染出来的新视角观测作为输入,rollout 输出对应动作序列。 也就是:在 InSpatio 虚拟世界里跑 VLA 想象推演,自动生成增广轨迹的动作标签。
- 输入:渲染的 rgb+depth 时序观测
- 输出:和增广观测一一配对的机器人 action 序列
优势:新生成的动作和新视角观测完全匹配,适合大幅度漫游增广;产出的数据可以同时用于 DPO 正负样本构建。
步骤 5:轨迹过滤(必须,不然脏数据污染 VLA)
渲染出来的轨迹不是全部能用,增加过滤流水线,自动筛掉坏样本:
- 渲染质量过滤:计算渲染图像和记忆参考视图的重建误差,超过阈值丢弃(画面崩坏、模糊、伪影)
- 几何校验:深度图异常值检测,剔除深度跳变 / 空洞过多的帧
- 物理约束过滤:检测相机穿透物体、碰撞、不合理空间位姿
- 动作校验:动作幅值过大、震荡、无效徘徊轨迹过滤(前面提到的轨迹过滤模块)
输出:清洗后的有效增广轨迹子集。
步骤 6:数据后处理 & 数据集打包
- 统一数据格式,和真实数据集保持完全一致(目录结构、npy 存储、归一化参数),VLA 训练可以直接混合加载真实 + 增广数据
- 生成数据集索引 json:记录每条轨迹类型(真实 / InSpatio 增广)、场景 id、轨迹长度、成功 / 失败标签
- (可选)构建 DPO 偏好对:同场景生成多条轨迹,按渲染质量 / 任务成功度标记优先 / 劣轨迹,构建偏好数据集
步骤 7:接入 VLA 训练管线
- 混合数据集:原始真实轨迹 + InSpatio 增广轨迹,混合送入 VLA 训练
- 可配置权重:控制增广数据占比(比如先用 30% 增广,逐步上调),防止仿真域偏移
工程配置要点 & 常见坑
- Memory 边界限制:增广相机轨迹不能离原始观测空间太远,超出记忆支持区域,渲染会崩坏;可以设置空间距离阈值做采样约束。
- 时序对齐:相机位姿时间戳、渲染帧、动作序列三者时间戳严格对齐。
- 显存:多场景并行渲染时,每个场景 memory 占用显存很高;建议单 GPU 只加载 1~2 条场景记忆。
- 域差异:InSpatio 渲染的图像和真机图像存在 sim2real gap,建议搭配图像域增广(色彩噪声)一起使用。
可选扩展
- 多模态标签生成:自动生成语言指令标注,给增广轨迹配上自然语言任务描述,用于 VLA 视觉语言对齐。
- 不确定性加权:增广样本根据渲染不确定性设置 loss 权重,低置信度样本降低权重。
- 失败轨迹生成:刻意采样困难视角 / 遮挡场景,生成失败交互轨迹,用于 VLA 鲁棒性训练。
最简落地优先级(建议分步搭建,不要一次性全做)
- 第一阶段:单场景构建 memory + 简单相机轨迹扰动 + 渲染 + 简单插值动作 + 基础过滤 → 跑通最小 demo
- 第二阶段:批量多场景渲染,增加轨迹采样策略
- 第三阶段:VLA rollout 生成动作标签 + DPO 偏好样本构建
- 第四阶段:增加不确定性过滤、sim2real 图像增强

效果还挺好的

✅ InSpatio-World 官方公开仓库地址
Github 官方仓库:GitHub - inspatio/inspatio-world · GitHubarXiv
项目主页:InSpatio-World — Beyond the Frame. Into the World.
⚠️ 重点:官方原版仓库,没有
scene_builder.py / camera_trajectory_sampler.py这两个文件。 前面我给你的 pipeline/xxx 是我根据论文概念虚构的模块命名,不是官方原生文件名! 这是关键:官方源码结构和我上一轮虚构文件名不一致,所以你本地仓库里找不到那两个 py 文件。
官方原版仓库【真实目录结构】(github 公开原版)
inspatio-world/
├── README.md
├── environment.yml
├── run_test_pipeline.sh # ✅ 官方主流水线脚本(三步完整流程)
├── inference_causal_test.py # ✅ 官方核心推理入口(最重要!)
├── gradio_webUI.py # ✅ 官方Gradio交互demo(漫游轨迹)
├── requirements.txt
├── configs/ # 模型、推理配置yaml
├── scripts/ # 预处理脚本(官方!)
│ ├── gen_json.py # 生成数据集元信息json
│ ├── extract_depth_pose.py # DA3提取深度+相机位姿
│ ├── convert_da3_to_pi3.py
│ ├── render_point_cloud.py
│ └── ...
├── traj/ # ✅【相机轨迹目录!官方原生】
│ ├── x_y_circle_cycle.txt # 预设环形漫游轨迹
│ ├── zoom_out_in.txt # 推拉镜头轨迹
│ └── ...
├── demo_utils/ # 可视化、轨迹读取工具
│ └── viz_utils.py
├── wan/ # Wan视频VAE + 文本编码器主干
├── checkpoints/ # 权重存放
└── output/ # 渲染输出结果
官方源码核心文件映射(数据增广要用,真实存在!)
官方没有单独把 Memory、轨迹采样拆成独立 py,全部写在
inference_causal_test.py和demo_utils内部。
-
inference_causal_test.py【核心推理入口】- 加载视频,构建隐式时空缓存(ST Cache / Memory)(论文里的 Implicit Spatiotemporal Cache)
- 读取 traj 目录下相机轨迹 txt
- 调用 STAR 主干模型,做 novel-view 新视角渲染
官方所有的 Memory 构建、渲染逻辑都在这个文件内部,不是单独 scene_builder.py
- traj/ 文件夹(官方相机轨迹定义)
- 轨迹不是代码采样类,用 txt 文本定义相机轨迹关键点
- 每行:时间、平移、旋转角,代码内部自动插值生成完整 SE3 轨迹
- 👉 做数据增广:在这里新增自定义扰动轨迹 txt,或者在代码里批量生成 txt
scripts/extract_depth_pose.py原始视频预处理:提取深度、相机外参,数据增广前置步骤gradio_webUI.pyGradio 里面相机拖拽、轨迹采样逻辑;里面包含轨迹生成 / 扰动的参考代码,你写数据增广可以复制这里的轨迹生成逻辑demo_utils/- 轨迹解析、位姿变换、可视化保存图片工具函数
官方原生的数据增广实现思路(官方原生写法)
官方原生没有现成augment_data_pipeline.py,数据增广需要你自己开发,两条路线:
方案 A(推荐,最简单,贴合官方)
- 批量生成大量扰动后的相机轨迹 txt(放在 traj / 文件夹)
- 基于原始参考轨迹,增加平移 / 旋转噪声
- 生成多条不同漫游路径(环绕、仰视俯视)
- 循环调用
inference_causal_test.py,循环传入不同--traj_txt_path - 渲染输出 RGB、depth 到 output 目录
- 后处理过滤坏渲染结果
命令行示例(官方原生参数)
python inference_causal_test.py \
--video_path my_videos/demo.mp4 \
--traj_txt_path traj/aug_traj_01.txt \
--output_dir output/aug_01
方案 B:直接在 inference_causal_test.py 外层套循环(批量脚本)
在脚本外层循环,动态生成相机轨迹数组,不落地成 txt,直接送入渲染。
论文术语 ↔ 官方源码对应关系
表格
| 论文概念 | 官方源码位置 |
|---|---|
| Implicit Spatiotemporal Cache(4D Memory) | inference_causal_test.py 内部变量,ST 缓存,没有独立 py 文件 |
| 相机轨迹采样器 | gradio_webUI.py 内轨迹生成代码 /traj/*.txt 轨迹文件 |
| Novel View Render 渲染 | inference_causal_test.py 推理主循环 |
| STAR 主干模型 | wan / 目录下模型代码 |
官方仓库重要参数(inference_causal_test.py)
--traj_txt_path 相机轨迹文件(核心,控制漫游路径,数据增广重点)
--output-dir 渲染输出
--freeze_repeat 时序冻结
--relative_to_source 轨迹相对原始相机
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)