Xiaomi-Robotics-U0 开源:用统一生成模型扩充机器人训练数据

2026-07-15 27 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

小米宣布开源 Xiaomi-Robotics-U0,这是一个拥有 380 亿参数的多模态自回归具身生成基础模型。它的重要性不只在于参数规模,而在于试图用一个统一模型覆盖四类具身生成任务,并连接机器人图片、视频的生成与编辑流程。对机器人团队来说,这意味着数据增强可能从零散的图像脚本,升级为可批量调度、可追踪的数据生产管线。

真正昂贵的是重新采集数据

具身智能的数据成本不只来自相机、机械臂和场地,还来自每次环境变化后的重新布置与采集。例如,为了提高抓取模型的泛化能力,团队可能需要改变:

  • 操作台上的目标物体;
  • 光照方向、亮度和色温;
  • 实验室、仓库等场景背景;
  • 遮挡、杂物和视觉干扰;
  • 视频中的任务条件或局部内容。

传统增强可以完成裁剪、翻转、色彩抖动,却很难同时维持物体位置、接触关系、相机视角和视频时序。来源摘要强调,Xiaomi-Robotics-U0 能在保持几何一致性的前提下执行换物体、换光照、换背景和增加干扰等编辑,无需重新采集原始动作。

这类能力的价值在于保留样本中昂贵的部分,例如机器人轨迹和交互结构,同时替换容易造成分布偏差的视觉条件。它并不自动保证合成数据可用于训练,标签、几何关系和时间一致性仍然需要单独验收。

统一模型改变的是数据链路

如果图片生成、视频生成、图片编辑和视频编辑分别依赖不同模型,工程团队通常需要维护四套输入格式、部署环境和质量规则。统一生成模型的直接收益,是让这些任务共享一条作业管线:

原始数据集
  -> 选择增强策略
  -> 生成或编辑图片/视频
  -> 几何与时序检查
  -> 标签继承或重新标注
  -> 合成数据版本化
  -> 与真实数据混合训练

需要注意,“统一”不代表所有任务使用完全相同的参数,也不代表生成结果可以跳过评估。图片编辑更关注局部结构是否漂移,视频编辑还要检查闪烁、物体身份变化、动作断裂和接触关系失真。

380 亿参数也带来明确的部署约束。实际采用前需要核对开源仓库公布的权重格式、精度选项、显存要求、推理框架和许可证;这些细节没有出现在来源摘要中,不应仅凭参数量推断单卡可运行性或生成速度。

可以这样实践:先生成可审计的增强任务清单

在接入真实模型 API 前,可以先把增强意图变成 JSONL 作业清单。下面的 Python 脚本只使用标准库,可以直接运行。它不会调用 Xiaomi-Robotics-U0,而是生成待提交给推理服务的任务;接入时需要按照开源项目实际接口替换字段或增加参数。

将脚本保存为 build_jobs.py,并准备 data/images 目录,其中放入若干 .jpg.png 图片:

from __future__ import annotations

import argparse
import json
from pathlib import Path

AUGMENTATIONS = [
    {
        "type": "relight",
        "instruction": "保持机器人、目标物体和相机几何关系不变,将光照改为低照度冷光。",
    },
    {
        "type": "replace_background",
        "instruction": "保持前景和接触关系不变,将背景替换为整洁的仓库工作台。",
    },
    {
        "type": "add_distractors",
        "instruction": "保持目标物体可见,在工作台边缘增加两个无关物体作为视觉干扰。",
    },
]


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--input", type=Path, required=True)
    parser.add_argument("--output", type=Path, required=True)
    parser.add_argument("--variants", type=int, default=1)
    args = parser.parse_args()

    images = sorted(
        path for path in args.input.rglob("*")
        if path.suffix.lower() in {".jpg", ".jpeg", ".png"}
    )
    if not images:
        raise SystemExit(f"no images found under {args.input}")

    args.output.parent.mkdir(parents=True, exist_ok=True)
    job_count = 0

    with args.output.open("w", encoding="utf-8") as stream:
        for image in images:
            for augmentation in AUGMENTATIONS:
                for variant in range(args.variants):
                    job = {
                        "job_id": f"{image.stem}-{augmentation['type']}-{variant:02d}",
                        "task": "image_edit",
                        "input_path": str(image),
                        "instruction": augmentation["instruction"],
                        "constraints": {
                            "preserve_camera_view": True,
                            "preserve_robot_pose": True,
                            "preserve_contact_geometry": True,
                        },
                        "metadata": {
                            "source": "real",
                            "augmentation": augmentation["type"],
                            "variant": variant,
                        },
                    }
                    stream.write(json.dumps(job, ensure_ascii=False) + "\n")
                    job_count += 1

    print(f"wrote {job_count} jobs to {args.output}")


if __name__ == "__main__":
    main()

运行命令:

mkdir -p data/images jobs
python build_jobs.py \
  --input data/images \
  --output jobs/image-edit.jsonl \
  --variants 2

python -m json.tool < <(head -n 1 jobs/image-edit.jsonl)

这份清单把生成条件、保真约束和数据来源写入每条记录。后续推理服务可以逐行消费任务,并把 job_id 写入输出文件名和元数据。这样即使更换模型版本,也能追踪某张合成图片由哪个原始样本、指令和参数产生。

如果开源项目提供的是命令行推理入口,可以在外层增加一个适配器。下面仅表示调用形态,u0-infer 及其参数是假设接口,必须按仓库实际文档修改:

while IFS= read -r job; do
  printf '%s\n' "$job" | u0-infer \
    --task image-edit \
    --output-dir data/generated
done < jobs/image-edit.jsonl

合成数据不能未经检查直接入库

模型声称保持几何一致性,训练管线仍应设置机器检查和人工抽检。建议至少记录以下指标:

  • 机器人关键点、末端执行器位置是否发生非预期漂移;
  • 目标框、分割掩码和深度标签是否还能继承;
  • 视频相邻帧是否出现闪烁、物体突变或动作跳跃;
  • 编辑是否错误改变了抓取接触关系和任务结果;
  • 合成样本是否过度集中于少数提示词或视觉风格;
  • 只使用真实数据与混合合成数据时,验证集指标有何差异。

一个稳妥的起点是采用较低的合成数据比例,并固定只含真实采集数据的验证集。若验证集也被生成数据污染,指标可能只是在衡量模型对自身生成分布的适应程度。

采用前的工程清单

Xiaomi-Robotics-U0 展示的是一种值得关注的数据生产方式:用统一模型编辑已有具身数据,并把图片与视频生成纳入同一条链路。落地时不要只比较生成画面的观感,还要验证它是否保持了任务语义。

团队可以按以下顺序推进:确认许可证与权重可用范围;测量目标硬件上的吞吐、显存和延迟;建立真实数据基线;为几何和视频时序制定自动检查;保存提示词、随机种子、模型版本及源样本 ID;通过消融实验决定合成数据比例。只有当下游策略模型在真实验证集上获得稳定收益时,生成数据才真正降低了具身数据成本。


相关推荐