PoseVLA — Universal Pose Pretraining

Lin et al. 2026 · arXiv:2602.19710v3 · 用相机系 3D Pose Tokens 打通非机器人 3D 数据与机器人轨迹数据

速览
问题定位
方法·架构
Pose Tokens
训练·数据
实验·Benchmark
代码印证
对课题启发
自测
可靠性说明:本页依据 PDF 原文 /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。

它不是“多加深度图”的普通 RGB-D VLA,而是把 object 6D pose、3D box、机器人末端轨迹统一表达成 camera-centric pose token sequence,从而把 Omni3D/BOP/Objectron 这类非机器人 3D 数据纳入 VLA 预训练。

30 秒逻辑链

问题
VLA 缺少强 3D 空间先验
关键判断
动作泛化需要 pose-level 物理 grounding
方法
相机系 pose tokens 统一 3D 物体与机器人轨迹
训练
3D NTP + robot trajectory + flow matching action
结果
RoboTwin 79.5、LIBERO 96.0、真机 81.25

速览卡片

内容
模型基座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 ≠ PosA-VLA

工作核心机制定位
PoseVLAUniversal pose pretraining:用 pose token 统一非机器人 3D 数据与机器人轨迹数据。预训练范式 / 表示学习 / 3D spatial prior。
PosA-VLAPose-conditioned anchor attention:把末端 pose 投影成 2D anchor map 监督 attention。注意力监督 / 动作效率 / 局部空间锚点。

两者都用 pose,但论文故事完全不同:PoseVLA 是“pose 作为通用预训练语言”,PosA-VLA 是“pose 作为 2D attention anchor”。

它要解决什么问题?

现有 VLA 大多直接从图像和语言生成连续动作。问题在于:VLM 的语言/视觉预训练并不天然包含机器人操作需要的 3D 尺度、相机几何、物体姿态和末端轨迹先验。下游只靠少量机器人示教补齐这些能力,数据效率和跨场景泛化会受限。

PoseVLA 的判断是:VLA 不是只缺“更多机器人数据”,还缺一个能把大规模 3D perception 数据转化成机器人控制能力的中间表示。

为什么选择 pose 而不是普通 language-action?

表示优势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 上,会比从纯视觉语义特征直接学动作更稳。

3D grounding prior + robot trajectory prior → better embodiment-specific action learning

整体架构

RGB Image
+
Depth Map
+
Raymap / Intrinsics
PaliGemma-based VLM
Pose Token Sequence
3D grounding / trajectory
Instruction + state
+
Pose-aware VLM hidden states
Flow Matching
Action Expert
Robot-specific action chunk

论文将 VLA learning 拆成两个阶段:第一阶段学习 camera-centric universal 3D spatial priors;第二阶段再对齐到具体机器人动作空间。

两阶段不是简单冻结-微调

阶段训练目标数据输出/能力
Universal pose pretrainingNext-token prediction 预测 3D pose tokens;可同时包含机器人 trajectory token 监督。Omni3D、Omni6DPose、BOP、AgibotWorld、InternData-A1 等。VLM 获得相机系物体姿态、尺度、空间位置、轨迹先验。
Embodiment post-trainingFlow matching action loss;对下游机器人动作分布适配。RoboTwin / LIBERO / 真机示教。生成具体机器人可执行的连续 action chunk。

Action Expert 如何接入?

PoseVLA 沿用 π0/π0.5 式的 action expert 思路:VLM 负责抽取语言-视觉-空间上下文,action expert 从噪声动作通过 flow matching 预测 velocity field,生成动作 chunk。代码中 PI0FlowMatchingPoseVLAPolicy 对应这一部分。

L = LNTP(pose tokens) + Lflow(action chunk)

这个设计意味着 PoseVLA 的创新点主要在 VLM 侧的 pose-centric pretraining,而不是重新发明 action diffusion/flow matching。

Pose Token 表示

论文把一帧或一段轨迹表示成结构化序列:

S = (τ1, τ2, ..., τT)
τt = { ct, bt, pt }, bt ∈ R², pt ∈ SE(3)
字段含义为什么重要
ctobject category / language category保留语义 grounding。
bt2D box center / location token把图像平面定位和 3D pose 绑定。
ptcamera-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。
depthdepth tokens2048 log-scale bins,0–5m。

把 translation 的 xy 与 z 分开,是因为图像平面位移和深度维度的统计分布不同;非均匀分箱则用于提高常见空间范围内的量化精度。

为什么用 camera-centric?

相机系 pose 能把非机器人 3D 数据和机器人轨迹放到同一个观测坐标系里。对跨机器人而言,camera-centric 比 joint-space 更通用;对下游控制而言,它比纯 2D bbox 更接近可执行动作所需的几何量。

Table V 的对比也支持这个判断:在 RoboTwin hard split 上,camera-centric pretraining 比 base-frame pretraining 更稳。

预训练数据构成

类型数据集规模作用
3D spatial groundingOmni3D:Objectron、SUN RGB-D、ARKitScene总计约 1.4M images,6.5M 3D annotations3D bounding box、类别、室内/物体空间理解。
6D poseOmni6DPose:SOPE、ROPE物体姿态、旋转、尺度。
6D benchmarkBOP:YCB-V、LineMOD、HOT3D标准 6D pose 估计先验。
Robot trajectoriesAgibotWorld Beta1M trajectories,100 isomorphic robots,200 tasks,87 atomic skills大规模机器人轨迹 pose/action prior。
Robot trajectoriesInternData-A1550K 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_trainingco_training.action_trainingdata_3dtraining.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()

3D Grounding:Table I

方法SUN RGB-D AP15Objectron AP15结论
PoseVLA / Ours-VLM 3B45.587.33B VLM 在 Objectron 上比开源强基线高 16.1。
Qwen3-VL 235B Thinking34.971.2超大 VLM 仍缺显式 3D pose pretraining。
Gemini Robotics-ER48.3未报告闭源强模型在 SUN RGB-D 稍高。

这组结果支撑论文主张:pose-centric supervision 能让小得多的 VLM 获得强 3D grounding 能力。

RoboTwin 2.0:Table II

设置:50 个 clean demos/task,总计 2,500;500 个 randomized demos/task,总计 25,000;80K optimization steps,batch size 32。

方法EasyHard
π067.0065.12
π0.579.4876.16
PaliGemma expert35.4033.36
Pose-VLA w/o depth79.9179.10
PoseVLA Upperbound89.4088.60
论文摘要中的 79.5 average success 对应 w/o depth/RGB-only 公平比较设置下 Easy/Hard 平均值约 79.5。

LIBERO:Table III

方法SpatialObjectGoalLongAvg
OpenVLA84.788.479.253.776.5
SpatialVLA88.289.978.655.578.1
CoT-VLA87.591.687.669.083.9
WorldVLA87.696.283.460.079.1
GR00T-N194.497.693.090.693.9
π096.898.895.885.294.1
π0.598.898.298.092.496.8
π0-FAST96.496.888.660.285.5
Pose-VLA w/o depth96.598.097.192.496.0

PoseVLA 总体略低于 π0.5,但在 LIBERO-Long 与 π0.5 持平。它证明 pose pretraining 能达到当前强 VLA 的级别,而不是只在 3D detection 上好看。

Real-world:双臂 Xtrainer

内容
平台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 仍有明显价值。

关键消融:Table IV–VI

几何模态

变体SUN RGB-DObjectron解读
RGB Only39.086.4仅 RGB 已有一定 3D 能力。
RGB + Raymap38.586.7单独 raymap 不一定稳定提升。
RGB + Depth45.185.4SUN RGB-D 依赖深度显著。
Full45.587.3depth + raymap 整体最好。

增量贡献

设置EasyHard结论
PaliGemma + Action-Expert35.433.4没有 pose pretraining 基线很弱。
+ 3D Data70.269.1最大跃迁,说明非机器人 3D 数据是主贡献。
+ 3D Data & Robotic Data72.972.0机器人预训练继续小幅提升。
Post-train: Joint → EE pose79.979.1EE pose action interface 再提升约 7 点。
Pre-train: Cam → Base80.476.7base-frame 对 hard split 反而更差。

正交消融

设置EasyHard
Qwen3PI57.755.3
Pose-VLA (OpenVLA binning)68.565.9
Pose-VLA (Robotic data only)71.368.3
Pose-VLA (3D data only)77.276.2
Full Pose-VLA79.979.1
最重要的审稿价值点:PoseVLA 不是靠“多训机器人数据”赢,而是证明了大规模非机器人 3D 数据可以通过 pose token 迁移到 VLA 控制。

官方代码仓库

本地仓库:/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_trainingtraining.pi05 配置。
docs/POSTTRAIN.mdRobotwin fine-tune;action-only 设置;data_3d=Falsemodel.pretrained_model_pathmodel.action_expert_path
posevla/modeling_posevla.pyPoseVLAPolicyPI0FlowMatching、rays/depths preparation、NTP loss + flow loss。
utils/mapping_token.pyBinTokenizer 生成 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 tokensutils/mapping_token.pyEXTRA_TRANS_XY_TOKENSEXTRA_TRANS_Z_TOKENSEXTRA_ROT_XYZ_TOKENSEXTRA_SIZE_XYZ_TOKENS 与论文一致。
扩展 tokenizer / embeddingposevla/modeling_posevla.py初始化时检查 tokenizer size,大于 embedding size 时自动 resize。
raymap/depth priorPoseVLAPolicy.select_action/forwardconfig.add_prior 时调用 prepare_rays()prepare_depths()
NTP + FlowPoseVLAPolicy.forwardbatch 有 action 时算 loss_flow,有 text_label 时算 loss_ntp,最终 loss = loss_flow + loss_ntp
π0/π0.5 branchdocs/PRETRAIN.mddocs/POSTTRAIN.mdmodeling_posevla.pytraining.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
注意:文档中的 eval_detection.py 有硬编码 checkpoint/output path,需要运行前手动改;Robotwin 数据也需要按 docs 转成 HDF5 并准备 normalization。

和 OASIS 的关系

维度PoseVLAOASIS
共同点都强调 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 的关系

ImageWAM、DynaGuide、DiT4DiT 都说明:动作不一定需要最终生成图像帧,很多时候中间 latent/hidden feature 更有价值。PoseVLA 给出的是另一条证据:动作也不一定只依赖语义视觉 token,pose-level token 是更物理、更可控的中间表征。

可以把这几类工作合在一起看:未来 VLA 的关键不是“更大 VLM 直接出动作”,而是设计更适合控制的中间变量:world-change latent、progress score、SE(3) trajectory、pose tokens、visual prompt / trace。

对 VLMGuide / 实习生课题的判断

问题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. 中间变量要接近控制。 纯语义 VLM 特征不足,pose/trajectory/progress/world-change latent 更容易影响动作。
  2. 大规模非机器人数据只有通过合适 proxy 才能变成控制能力。 PoseVLA 的 proxy 是 pose token,LA4VLA/LAP 的 proxy 是 language-action。
  3. 评测要证明 policy 级收益。 PoseVLA 不只报告 3D AP,还做 RoboTwin、LIBERO、真机。
  4. RGB-only 结果要单独报告。 PoseVLA 明确区分 full RGB-D upperbound 与 w/o depth 公平比较,这一点对我们做 2D 方案很重要。
边界提醒:如果我们未来方案仍然只说“图像特征轨迹 + 语言 + 末端轨迹对齐”,审稿人会自然联想到 OASIS、PoseVLA、PosA-VLA、TraceVLA。必须把创新点落到一个具体新机制上,例如 runtime candidate rejection、progress-aware verification、mask/trace-conditioned action reranking,而不是泛泛说 multimodal alignment。

自测

1. PoseVLA 最核心的贡献更接近哪一类?

2. Table V 中最大提升来自哪里?

3. PoseVLA 和 PosA-VLA 最主要区别是什么?

4. 为什么 PoseVLA 采用 camera-centric pose?

5. 代码中哪个文件最直接对应 pose token 分箱?

6. 对纯 2D RGB 的 VLMGuide 路线,PoseVLA 更像什么?