目标:利用 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。

  1. 原始数据规范校验(必须对齐) 每条原始轨迹目录包含:
    • rgb/:rgb 图像序列
    • depth/:深度图序列
    • poses.npy:相机 SE3 外参(4×4 齐次矩阵,世界坐标系)
    • actions.npy:机器人动作序列(VLA 用的动作空间,6D delta pose + gripper)
    • mask(可选):物体 mask
  2. 调用 InSpatio 编码器:逐帧将 RGB + 深度 + 相机位姿编码为时空特征,写入SceneMemory记忆 buffer
    • 代码入口一般是 pipeline 里的 scene_builder /memory_builder
    • 配置记忆参数:最大保存帧数、特征剪枝阈值(控制显存)
    • 输出:该场景的 memory 特征缓存,保存在 checkpoint 或者内存中,用于后续渲染增广

⚠️ 重要:一个场景构建一次 memory,后续所有增广都复用这个 4D 场景,不重复编码原始视频,节省算力。

步骤 2:增广采样器(核心,多种增广策略,可组合)

在已经建好的 4D 场景记忆之上,采样新的相机漫游轨迹(这就是数据增广,不是单纯图像 aug,是 4D 空间轨迹增广)

分为两大类:相机轨迹扰动增广(最常用)、场景扰动增广(进阶)

2.1 相机轨迹扰动(优先落地,工程最简单)

基于原始相机轨迹做轨迹采样,生成新的 SE3 相机位姿序列:

  1. 时间轴重采样:改变采样帧率、时间拉伸 / 压缩,快慢动作增广
  2. 空间扰动:对原始轨迹每个位姿增加微小噪声(平移噪声、旋转噪声)
  3. 轨迹插值:在原始关键帧之间插值生成密集新路径
  4. 新漫游轨迹生成:从原始轨迹的关键点位出发,采样全新漫游路径(环绕物体、侧面视角、俯视 / 仰视,就是你 Gradio 界面拖拽相机 X/Y 偏移那套逻辑)

参数控制:扰动幅度不能过大,超出记忆支持的空间范围会出现渲染崩坏。

2.2 场景扰动增广(进阶,算力消耗更高)

在 4D 记忆上修改场景属性:

  • 光照 / 色彩扰动:渲染阶段修改 rgb 色调、亮度、噪声(图像级 aug)
  • 物体姿态扰动:在记忆中微调物体位姿(如果支持物体解耦表征)

注意:InSpatio 这类 4D 世界模型,不是所有版本都支持物体独立编辑,如果不支持,只做相机轨迹增广即可。

输出:生成多条新的相机 SE3 轨迹(aug_poses.npy),作为渲染的相机路径。

步骤 3:InSpatio-World 渲染,生成增广观测序列

输入:4D 场景 Memory + 新采样得到的增广相机轨迹 调用 novel-view 渲染模块,逐时间步渲染:

  • 新视角 RGB 图像
  • 新视角深度图
  • 渲染置信度 / 不确定性图(可选,用于后续轨迹过滤)

工程注意点

  1. 并行渲染:多轨迹批量渲染,充分利用GPU;单条场景 memory 可以并行渲染多条不同的增广轨迹
  2. 显存控制:长轨迹分段渲染,避免 OOM
  3. 颜色空间:渲染输出 RGB,保存的时候注意和 VLA 训练的数据格式对齐

步骤 4:动作重对齐(VLA 最关键一步,很多人漏掉)

只渲染图片没用!VLA 需要 观测 - 动作配对。 两种方案,按需选择:

方案 A:轨迹插值动作标签(快速,低成本,适合初期搭建)

原始轨迹有动作序列;新相机轨迹和原始轨迹做时间 / 空间对齐,插值得到新轨迹对应的动作。

局限:适合小扰动;大幅度新漫游轨迹,动作插值会不匹配。

方案 B:VLA 策略重推演(高质量,推荐,论文亮点)

用预训练 VLA 策略,以渲染出来的新视角观测作为输入,rollout 输出对应动作序列。 也就是:在 InSpatio 虚拟世界里跑 VLA 想象推演,自动生成增广轨迹的动作标签。

  • 输入:渲染的 rgb+depth 时序观测
  • 输出:和增广观测一一配对的机器人 action 序列

优势:新生成的动作和新视角观测完全匹配,适合大幅度漫游增广;产出的数据可以同时用于 DPO 正负样本构建。

步骤 5:轨迹过滤(必须,不然脏数据污染 VLA)

渲染出来的轨迹不是全部能用,增加过滤流水线,自动筛掉坏样本:

  1. 渲染质量过滤:计算渲染图像和记忆参考视图的重建误差,超过阈值丢弃(画面崩坏、模糊、伪影)
  2. 几何校验:深度图异常值检测,剔除深度跳变 / 空洞过多的帧
  3. 物理约束过滤:检测相机穿透物体、碰撞、不合理空间位姿
  4. 动作校验:动作幅值过大、震荡、无效徘徊轨迹过滤(前面提到的轨迹过滤模块)

输出:清洗后的有效增广轨迹子集。

步骤 6:数据后处理 & 数据集打包

  1. 统一数据格式,和真实数据集保持完全一致(目录结构、npy 存储、归一化参数),VLA 训练可以直接混合加载真实 + 增广数据
  2. 生成数据集索引 json:记录每条轨迹类型(真实 / InSpatio 增广)、场景 id、轨迹长度、成功 / 失败标签
  3. (可选)构建 DPO 偏好对:同场景生成多条轨迹,按渲染质量 / 任务成功度标记优先 / 劣轨迹,构建偏好数据集

步骤 7:接入 VLA 训练管线

  • 混合数据集:原始真实轨迹 + InSpatio 增广轨迹,混合送入 VLA 训练
  • 可配置权重:控制增广数据占比(比如先用 30% 增广,逐步上调),防止仿真域偏移

工程配置要点 & 常见坑

  1. Memory 边界限制:增广相机轨迹不能离原始观测空间太远,超出记忆支持区域,渲染会崩坏;可以设置空间距离阈值做采样约束。
  2. 时序对齐:相机位姿时间戳、渲染帧、动作序列三者时间戳严格对齐。
  3. 显存:多场景并行渲染时,每个场景 memory 占用显存很高;建议单 GPU 只加载 1~2 条场景记忆。
  4. 域差异:InSpatio 渲染的图像和真机图像存在 sim2real gap,建议搭配图像域增广(色彩噪声)一起使用。

可选扩展

  1. 多模态标签生成:自动生成语言指令标注,给增广轨迹配上自然语言任务描述,用于 VLA 视觉语言对齐。
  2. 不确定性加权:增广样本根据渲染不确定性设置 loss 权重,低置信度样本降低权重。
  3. 失败轨迹生成:刻意采样困难视角 / 遮挡场景,生成失败交互轨迹,用于 VLA 鲁棒性训练。

最简落地优先级(建议分步搭建,不要一次性全做)

  1. 第一阶段:单场景构建 memory + 简单相机轨迹扰动 + 渲染 + 简单插值动作 + 基础过滤 → 跑通最小 demo
  2. 第二阶段:批量多场景渲染,增加轨迹采样策略
  3. 第三阶段:VLA rollout 生成动作标签 + DPO 偏好样本构建
  4. 第四阶段:增加不确定性过滤、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 内部。

  1. inference_causal_test.py【核心推理入口】

    • 加载视频,构建隐式时空缓存(ST Cache / Memory)(论文里的 Implicit Spatiotemporal Cache)
    • 读取 traj 目录下相机轨迹 txt
    • 调用 STAR 主干模型,做 novel-view 新视角渲染

    官方所有的 Memory 构建、渲染逻辑都在这个文件内部,不是单独 scene_builder.py

  2. traj/ 文件夹(官方相机轨迹定义)
    • 轨迹不是代码采样类,用 txt 文本定义相机轨迹关键点
    • 每行:时间、平移、旋转角,代码内部自动插值生成完整 SE3 轨迹
    • 👉 做数据增广:在这里新增自定义扰动轨迹 txt,或者在代码里批量生成 txt
  3. scripts/extract_depth_pose.py 原始视频预处理:提取深度、相机外参,数据增广前置步骤
  4. gradio_webUI.py Gradio 里面相机拖拽、轨迹采样逻辑;里面包含轨迹生成 / 扰动的参考代码,你写数据增广可以复制这里的轨迹生成逻辑
  5. demo_utils/
    • 轨迹解析、位姿变换、可视化保存图片工具函数

官方原生的数据增广实现思路(官方原生写法)

官方原生没有现成augment_data_pipeline.py,数据增广需要你自己开发,两条路线:

方案 A(推荐,最简单,贴合官方)

  1. 批量生成大量扰动后的相机轨迹 txt(放在 traj / 文件夹)
    • 基于原始参考轨迹,增加平移 / 旋转噪声
    • 生成多条不同漫游路径(环绕、仰视俯视)
  2. 循环调用 inference_causal_test.py,循环传入不同 --traj_txt_path
  3. 渲染输出 RGB、depth 到 output 目录
  4. 后处理过滤坏渲染结果

命令行示例(官方原生参数)

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 轨迹相对原始相机
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐