Lin et al. 2026 · arXiv:2602.19710v3 · 用相机系 3D Pose Tokens 打通非机器人 3D 数据与机器人轨迹数据
/home/chenzhiyuan/Zotero/storage/8HC2ZSMI/Lin 等 - 2026 - PoseVLA Universal Pose Pretraining for Generalizable Vision-Language-Action Policies.pdf 与官方代码仓库 /home/chenzhiyuan/projects/PoseVLA 核对。实验数字以 PDF 表格为准;代码机制以 README、训练文档和核心 Python 文件为准。PoseVLA 的核心是把 3D pose token 作为 VLA 的通用预训练接口:先让 PaliGemma-based VLM 在大量非机器人 3D 感知数据和机器人轨迹数据上学习相机系空间先验,再在下游机器人上用 flow-matching action expert 做 embodiment alignment。
| 项 | 内容 |
|---|---|
| 模型基座 | PaliGemma 3B + lightweight flow-matching action expert;代码支持 π0 / π0.5 expert branch。 |
| 输入模态 | RGB、depth map、camera intrinsics 构成的 raymap;训练有 modality masking,仿真公平对比时报告 RGB-only / w/o depth 设置。 |
| 核心表示 | 结构化 pose sequence:类别、2D box center、camera-centric SE(3) pose;rotation / translation / size 离散成 token。 |
| 预训练数据 | 1.4M images / 6.5M 3D annotations + 约 1.55M robot trajectories。 |
| 主结果 | 3D grounding 强于 Qwen3-VL 235B;RoboTwin 2.0 w/o depth Easy 79.91 / Hard 79.10;LIBERO Avg 96.0;真机平均 81.25。 |
| 最强证据 | Table V/VI 显示非机器人 3D 数据贡献最大:PaliGemma+Action Expert 约 35%,加 3D Data 后直接到约 70%。 |
| 主要边界 | 依赖 3D/RGB-D/pose annotation 路线;对纯 2D RGB、复杂语义 distractor、deformable/dexterous 泛化仍未完全解决。 |
| 工作 | 核心机制 | 定位 |
|---|---|---|
| PoseVLA | Universal pose pretraining:用 pose token 统一非机器人 3D 数据与机器人轨迹数据。 | 预训练范式 / 表示学习 / 3D spatial prior。 |
| PosA-VLA | Pose-conditioned anchor attention:把末端 pose 投影成 2D anchor map 监督 attention。 | 注意力监督 / 动作效率 / 局部空间锚点。 |
两者都用 pose,但论文故事完全不同:PoseVLA 是“pose 作为通用预训练语言”,PosA-VLA 是“pose 作为 2D attention anchor”。
现有 VLA 大多直接从图像和语言生成连续动作。问题在于:VLM 的语言/视觉预训练并不天然包含机器人操作需要的 3D 尺度、相机几何、物体姿态和末端轨迹先验。下游只靠少量机器人示教补齐这些能力,数据效率和跨场景泛化会受限。
| 表示 | 优势 | PoseVLA 认为的问题 |
|---|---|---|
| continuous action | 直接执行,适合具体机器人 | 本体强绑定,跨机器人迁移难;不能利用非机器人 3D 数据。 |
| language-action | 对齐 VLM 语言分布,适合跨本体描述 | 几何精度有限;“move left 5cm”仍需要空间尺度和相机几何支撑。 |
| pose token | 同时具备离散 token 可学习性与 3D 几何结构 | 需要 3D 标注、深度/相机内参或可恢复的 pose 监督。 |
如果 VLM 能在预训练阶段反复学习“图像中的物体在相机系下是什么 3D pose、未来轨迹是什么 pose sequence”,那么后训练阶段把这种 pose-aware 表征接到 action expert 上,会比从纯视觉语义特征直接学动作更稳。
论文将 VLA learning 拆成两个阶段:第一阶段学习 camera-centric universal 3D spatial priors;第二阶段再对齐到具体机器人动作空间。
| 阶段 | 训练目标 | 数据 | 输出/能力 |
|---|---|---|---|
| Universal pose pretraining | Next-token prediction 预测 3D pose tokens;可同时包含机器人 trajectory token 监督。 | Omni3D、Omni6DPose、BOP、AgibotWorld、InternData-A1 等。 | VLM 获得相机系物体姿态、尺度、空间位置、轨迹先验。 |
| Embodiment post-training | Flow matching action loss;对下游机器人动作分布适配。 | RoboTwin / LIBERO / 真机示教。 | 生成具体机器人可执行的连续 action chunk。 |
PoseVLA 沿用 π0/π0.5 式的 action expert 思路:VLM 负责抽取语言-视觉-空间上下文,action expert 从噪声动作通过 flow matching 预测 velocity field,生成动作 chunk。代码中 PI0FlowMatching 与 PoseVLAPolicy 对应这一部分。
这个设计意味着 PoseVLA 的创新点主要在 VLM 侧的 pose-centric pretraining,而不是重新发明 action diffusion/flow matching。
论文把一帧或一段轨迹表示成结构化序列:
| 字段 | 含义 | 为什么重要 |
|---|---|---|
| ct | object category / language category | 保留语义 grounding。 |
| bt | 2D box center / location token | 把图像平面定位和 3D pose 绑定。 |
| pt | camera-centric SE(3) pose | 提供动作需要的距离、方向、旋转、尺度。 |
| 量 | 代码中的 token | 数量/方式 |
|---|---|---|
| xy translation | <transXY...> | 2048 bins;支持非均匀统计分箱。 |
| z translation | <transZ...> | 2048 bins;与 xy 分开建模。 |
| rotation | <rot...> | Euler angles,360 bins。 |
| size | <size...> | 2048 bins。 |
| depth | depth tokens | 2048 log-scale bins,0–5m。 |
把 translation 的 xy 与 z 分开,是因为图像平面位移和深度维度的统计分布不同;非均匀分箱则用于提高常见空间范围内的量化精度。
相机系 pose 能把非机器人 3D 数据和机器人轨迹放到同一个观测坐标系里。对跨机器人而言,camera-centric 比 joint-space 更通用;对下游控制而言,它比纯 2D bbox 更接近可执行动作所需的几何量。
| 类型 | 数据集 | 规模 | 作用 |
|---|---|---|---|
| 3D spatial grounding | Omni3D:Objectron、SUN RGB-D、ARKitScene | 总计约 1.4M images,6.5M 3D annotations | 3D bounding box、类别、室内/物体空间理解。 |
| 6D pose | Omni6DPose:SOPE、ROPE | 物体姿态、旋转、尺度。 | |
| 6D benchmark | BOP:YCB-V、LineMOD、HOT3D | 标准 6D pose 估计先验。 | |
| Robot trajectories | AgibotWorld Beta | 1M trajectories,100 isomorphic robots,200 tasks,87 atomic skills | 大规模机器人轨迹 pose/action prior。 |
| Robot trajectories | InternData-A1 | 550K trajectories,ARX/Aloha/Franka,4 embodiments,227 scenes | 跨本体轨迹数据。 |
| 项 | 论文/代码信息 |
|---|---|
| 硬件 | 论文报告 16 NVIDIA H20 GPUs,bf16,per-GPU batch size 8。 |
| 耗时 | 3D spatial grounding 和 trajectory estimation 各可在 2 天内完成。 |
| 代码入口 | train_pretrain.py 负责 pretrain,train_posttrain.py 负责 Robotwin/downstream post-train。 |
| 配置 | co_training.vlm_training、co_training.action_training、data_3d、training.pi05 控制训练分支。 |
| 模态鲁棒性 | 训练时使用 modality masking;仿真中为了公平对比,报告 w/o depth/RGB-only 设置。 |
for batch in loader:
images = batch["image"]
rays = prepare_rays(batch) # camera intrinsics -> raymap
depths = prepare_depths(batch) # depth map / masked depth
# 3D grounding / trajectory token prediction
if "text_label" in batch:
logits = pose_vlm(images, rays, depths, text=batch["prompt"])
loss_ntp = cross_entropy(logits, batch["text_label"])
# robot action flow matching
if "action" in batch:
state, actions = prepare_state_action(batch)
loss_flow = action_expert.flow_loss(images, rays, depths, state, actions)
loss = loss_ntp + loss_flow
loss.backward()
| 方法 | SUN RGB-D AP15 | Objectron AP15 | 结论 |
|---|---|---|---|
| PoseVLA / Ours-VLM 3B | 45.5 | 87.3 | 3B VLM 在 Objectron 上比开源强基线高 16.1。 |
| Qwen3-VL 235B Thinking | 34.9 | 71.2 | 超大 VLM 仍缺显式 3D pose pretraining。 |
| Gemini Robotics-ER | 48.3 | 未报告 | 闭源强模型在 SUN RGB-D 稍高。 |
这组结果支撑论文主张:pose-centric supervision 能让小得多的 VLM 获得强 3D grounding 能力。
设置:50 个 clean demos/task,总计 2,500;500 个 randomized demos/task,总计 25,000;80K optimization steps,batch size 32。
| 方法 | Easy | Hard |
|---|---|---|
| π0 | 67.00 | 65.12 |
| π0.5 | 79.48 | 76.16 |
| PaliGemma expert | 35.40 | 33.36 |
| Pose-VLA w/o depth | 79.91 | 79.10 |
| PoseVLA Upperbound | 89.40 | 88.60 |
| 方法 | Spatial | Object | Goal | Long | Avg |
|---|---|---|---|---|---|
| OpenVLA | 84.7 | 88.4 | 79.2 | 53.7 | 76.5 |
| SpatialVLA | 88.2 | 89.9 | 78.6 | 55.5 | 78.1 |
| CoT-VLA | 87.5 | 91.6 | 87.6 | 69.0 | 83.9 |
| WorldVLA | 87.6 | 96.2 | 83.4 | 60.0 | 79.1 |
| GR00T-N1 | 94.4 | 97.6 | 93.0 | 90.6 | 93.9 |
| π0 | 96.8 | 98.8 | 95.8 | 85.2 | 94.1 |
| π0.5 | 98.8 | 98.2 | 98.0 | 92.4 | 96.8 |
| π0-FAST | 96.4 | 96.8 | 88.6 | 60.2 | 85.5 |
| Pose-VLA w/o depth | 96.5 | 98.0 | 97.1 | 92.4 | 96.0 |
PoseVLA 总体略低于 π0.5,但在 LIBERO-Long 与 π0.5 持平。它证明 pose pretraining 能达到当前强 VLA 的级别,而不是只在 3D detection 上好看。
| 项 | 内容 |
|---|---|
| 平台 | Dual-arm Xtrainer,每臂 1-DoF parallel gripper。 |
| 传感器 | RealSense D455 head-mounted eye-on-base;RealSense D405 eye-on-hand。 |
| 任务 | 餐具/碗堆叠;挂杯子到 peg;开抽屉-放笔-关抽屉;毛巾折叠。 |
| 数据 | 平均每任务 100 demonstrations。 |
| 评测 | 每任务 20 trials × 3 random seeds = 60 trials。 |
| 平均结果 | PoseVLA 81.25%,PaliGemma 29.6%,π0.5 71.65%。 |
论文特别强调 Task 2 和 Task 3 的提升:Task 2 为 78.3 vs π0.5 的 53.3,Task 3 为 81.7 vs 73.3。去掉 depth 后 Task 3 从 81.7 降到 66.7,Task 1 降到 80.0,说明真机复杂交互中 depth 仍有明显价值。
| 变体 | SUN RGB-D | Objectron | 解读 |
|---|---|---|---|
| RGB Only | 39.0 | 86.4 | 仅 RGB 已有一定 3D 能力。 |
| RGB + Raymap | 38.5 | 86.7 | 单独 raymap 不一定稳定提升。 |
| RGB + Depth | 45.1 | 85.4 | SUN RGB-D 依赖深度显著。 |
| Full | 45.5 | 87.3 | depth + raymap 整体最好。 |
| 设置 | Easy | Hard | 结论 |
|---|---|---|---|
| PaliGemma + Action-Expert | 35.4 | 33.4 | 没有 pose pretraining 基线很弱。 |
| + 3D Data | 70.2 | 69.1 | 最大跃迁,说明非机器人 3D 数据是主贡献。 |
| + 3D Data & Robotic Data | 72.9 | 72.0 | 机器人预训练继续小幅提升。 |
| Post-train: Joint → EE pose | 79.9 | 79.1 | EE pose action interface 再提升约 7 点。 |
| Pre-train: Cam → Base | 80.4 | 76.7 | base-frame 对 hard split 反而更差。 |
| 设置 | Easy | Hard |
|---|---|---|
| Qwen3PI | 57.7 | 55.3 |
| Pose-VLA (OpenVLA binning) | 68.5 | 65.9 |
| Pose-VLA (Robotic data only) | 71.3 | 68.3 |
| Pose-VLA (3D data only) | 77.2 | 76.2 |
| Full Pose-VLA | 79.9 | 79.1 |
本地仓库:/home/chenzhiyuan/projects/PoseVLA,来自 https://github.com/hetolin/PoseVLA。README 标注 PoseVLA 为 RSS 2026,并提供 pretrain、posttrain、Robotwin data conversion 和 eval 文档。
| 文件 | 对应机制 |
|---|---|
README.md | 项目结构;说明 VLM training、Action training、co-training with Knowledge Insulation;给出 ModelScope checkpoint。 |
docs/PRETRAIN.md | 预训练入口、Omni3D/Omni6D/BOP/Agibot/Droid/RDT/UMI/InternData-A1 数据分支;co_training 和 training.pi05 配置。 |
docs/POSTTRAIN.md | Robotwin fine-tune;action-only 设置;data_3d=False;model.pretrained_model_path 与 model.action_expert_path。 |
posevla/modeling_posevla.py | PoseVLAPolicy、PI0FlowMatching、rays/depths preparation、NTP loss + flow loss。 |
utils/mapping_token.py | BinTokenizer 生成 transXY/transZ/rot/size/depth tokens,并支持 nonuniform bins。 |
train_pretrain.py | 构造 PoseVLAConfig,加载 PaliGemma,支持 VLM/action joint loaders。 |
train_posttrain.py | 加载 pretrained PoseVLA VLM 和 action expert,执行下游 post-training。 |
| 论文概念 | 代码位置 | 核对结果 |
|---|---|---|
| Pose tokens | utils/mapping_token.py | EXTRA_TRANS_XY_TOKENS、EXTRA_TRANS_Z_TOKENS、EXTRA_ROT_XYZ_TOKENS、EXTRA_SIZE_XYZ_TOKENS 与论文一致。 |
| 扩展 tokenizer / embedding | posevla/modeling_posevla.py | 初始化时检查 tokenizer size,大于 embedding size 时自动 resize。 |
| raymap/depth prior | PoseVLAPolicy.select_action/forward | 当 config.add_prior 时调用 prepare_rays()、prepare_depths()。 |
| NTP + Flow | PoseVLAPolicy.forward | batch 有 action 时算 loss_flow,有 text_label 时算 loss_ntp,最终 loss = loss_flow + loss_ntp。 |
| π0/π0.5 branch | docs/PRETRAIN.md、docs/POSTTRAIN.md、modeling_posevla.py | training.pi05 控制分支,代码中有 state discretization 和 expert branch 差异。 |
# 1. pretrain: VLM-only / action-only / joint
accelerate launch train_pretrain.py \
co_training.vlm_training=True \
co_training.action_training=True \
data_3d=True \
training.pi05=True
# 2. posttrain: Robotwin action-only
accelerate launch train_posttrain.py \
co_training.vlm_training=False \
co_training.action_training=True \
data_3d=False \
training.pi05=True \
model.pretrained_model_path=/path/to/posevla-vlm \
model.action_expert_path=/path/to/action-expert
| 维度 | PoseVLA | OASIS |
|---|---|---|
| 共同点 | 都强调 SE(3)/camera-centric geometry 对 VLA 动作泛化重要。 | 同左。 |
| 中间表示 | pose tokens,统一 3D object grounding 与 robot trajectory pretraining。 | 预测未来 EE SE(3) 轨迹作为动作空间对齐中间表示。 |
| 核心贡献 | pretraining paradigm:把非机器人 3D 数据迁移到 VLA。 | policy architecture:用 SE(3) trajectory prediction 对齐 observation/action。 |
| 对我们影响 | 证明“pose as proxy task”是强路线,但更偏 3D/RGB-D。 | 更接近“动作候选/轨迹中间表示”的推理链路。 |
ImageWAM、DynaGuide、DiT4DiT 都说明:动作不一定需要最终生成图像帧,很多时候中间 latent/hidden feature 更有价值。PoseVLA 给出的是另一条证据:动作也不一定只依赖语义视觉 token,pose-level token 是更物理、更可控的中间表征。
| 问题 | PoseVLA 给出的答案 | 我们的取舍 |
|---|---|---|
| 是否值得做 3D/pose 方向? | 值得。非机器人 3D 数据能显著提升 VLA。 | 如果平台有 RGB-D/标定/深度,PoseVLA 是强 competitor 和可借鉴路线。 |
| 是否适合纯 2D RGB 课题? | 不完全适合。PoseVLA 的优势来自 depth/raymap/pose token supervision。 | 若用户要求“不另起炉灶、尽量 2D RGB”,它更像对照路线,而不是直接 base。 |
| 能否启发 RPF/CAPE? | 可以。candidate action/trajectory 最好在 camera-centric pose 或 projected 2D motion 上被验证。 | 2D-RPF 可吸收“pose-aware proxy task”,但不要声称自己首次做 pose guidance。 |
| 是否和 PosA-VLA 撞 idea? | 不直接撞。PoseVLA 做 pretraining,PosA-VLA 做 anchor attention。 | 我们的创新必须避开“pose anchor attention”和“universal pose pretraining”的已占空间。 |
1. PoseVLA 最核心的贡献更接近哪一类?
2. Table V 中最大提升来自哪里?
3. PoseVLA 和 PosA-VLA 最主要区别是什么?
4. 为什么 PoseVLA 采用 camera-centric pose?
5. 代码中哪个文件最直接对应 pose token 分箱?
6. 对纯 2D RGB 的 VLMGuide 路线,PoseVLA 更像什么?