V-JEPA 2: Self-Supervised Video Models Enable Understanding, Prediction and Planning
Paper: arXiv:2506.09985 Code: facebookresearch/vjepa2 Code reference:
main@204698b4(2026-03-23)
1. Motivation (研究动机)
这篇论文要解决的不是单一的 video understanding benchmark,而是一个更接近 LeCun/JEPAs 路线的核心问题:模型能不能主要通过“观察”学习世界表征,再用少量无奖励、无任务标签的 interaction data,把这种表征转成可用于 physical planning 的 latent world model。作者把目标拆成三层能力:理解视频、预测未来、用预测做规划;V-JEPA 2 是 action-free video encoder,V-JEPA 2-AC 是在其 frozen representation 上训练的 action-conditioned predictor。
现有路线的瓶颈很具体。第一类 interaction-based world model 需要大量 state-action sequence,很多还依赖 reward 或环境反馈来推断 goal;真实机器人 interaction data 昂贵且覆盖窄,所以很难像互联网视频那样 scale。第二类 action-conditioned video generation world model 可以利用 web video 或 robot video,但规划时要在 pixel/video space 里生成未来,计算成本高,而且论文指出这类工作常把预测画面是否真实、视觉质量是否好当作主要评价,真正的 robot execution planning 结果很有限。第三类纯 video encoder/representation learner 通常能做分类或检索,却没有明确证明:这种 action-free observation pretraining 学到的 latent representation 是否足够支持后续的 action-conditioned control。
V-JEPA 2 的研究动机正是把这三个断点连起来:先用 internet-scale video/image 训练一个不需要 action 的 JEPA video representation,再只用 Droid 中不到 62 小时的 unlabeled robot videos 和 end-effector states/actions,训练一个 latent predictor,使机器人可以在新的 lab、同一套权重、没有 task-specific reward 和 environment-specific data 的情况下,根据 image goals 做 reaching、grasping、pick-and-place。这个问题值得研究,是因为如果成立,world model 的可扩展部分就从稀缺 robot data 转移到了丰富的 observation data;interaction data 只负责把 latent dynamics 接上 action space,而不是从零学习视觉世界。
Figure 1 解读:整篇论文的流水线分成三条输出路径。左侧用 1M hours video 与 1M images 做 V-JEPA 2 pretraining;中间的 encoder 可接 attentive probe 做 action/object classification 和 action anticipation,也可接 LLM 做 Video QA;底部则 freeze encoder,用 62 hours robot data 学 action-conditioned predictor,最后在 MPC loop 中做 robot manipulation。这张图说明论文的核心 claim 不是“一个新 benchmark 上更高”,而是同一个 self-supervised video backbone 同时支持 understanding、prediction、planning。
更具体地说,作者希望证明 JEPA 的 latent prediction 比 pixel-level generation 更适合做 scalable world model。JEPA 不要求精确重建每一片树叶或背景纹理,而是预测 representation space 中稳定、可预测、与行为相关的因素,例如物体运动轨迹、手臂末端与物体关系、场景中可被 action 改变的状态。对 robot planning 来说,很多 pixel detail 是 nuisance;如果 latent representation 保留了“当前状态到 goal 状态的可达差异”,那么优化 latent L1 distance 就可能比优化视频生成结果更便宜、更直接。
2. Idea (核心思想)
核心 insight:先用 action-free video JEPA 从大规模观察数据里学习“世界状态的可预测表征”,再在 frozen latent space 上学习一个小得多的 action-conditioned predictor;规划时不生成 pixel video,而是在 latent space 中搜索使 imagined representation 接近 goal representation 的 action sequence。
这和纯 behavior cloning / VLA 的根本差异是,V-JEPA 2-AC 不直接学习从 observation 到 action 的 policy,也不需要任务成功标签或 reward;它学习的是 action 如何改变 V-JEPA 2 latent state。和 Cosmos 这类 video generation world model 的差异是,V-JEPA 2-AC 的 rollout target 是 encoder feature map,目标函数是 latent L1,不必为每个 planning candidate 生成可观看视频,因此同样用 Cross-Entropy Method 时,论文报告 V-JEPA 2-AC 每步规划约 16 秒,而 Cosmos 在较少 samples 下每步约 4 分钟。
论文的关键创新可以概括为四个层次。第一,扩展 V-JEPA pretraining:从 V-JEPA v1 的 2M video 级别扩到 VM22M,并用 ViT-g/16、longer schedule、progressive resolution/duration training。第二,方法上保持 mask-denoising in representation space,不让模型被 pixel reconstruction 牵着走。第三,post-training 阶段把 frozen V-JEPA 2 encoder 当 frame encoder,训练约 300M 参数的 causal transformer predictor,把 action/state token 与 frame feature token interleave。第四,deployment 阶段用 image goal 编码出的 latent feature 作为 energy minimum,做 receding-horizon MPC。
Figure 2 解读:左半边是 V-JEPA 2 pretraining:masked video tokens 进入 encoder,predictor 看到 context features 与 mask tokens,只对 masked patch 的 EMA target representation 做 regression。右半边是 V-JEPA 2-AC:encoder frozen,不再随机 mask,而是给 predictor 过去 frames 的 representation、robot actions 和 poses,让它 autoregressively 预测 future frame representation。两阶段共享的关键是 latent target,而不是 pixel target。
这个想法的直觉是:大规模视频提供的是“什么变化是自然的、什么对象关系稳定、哪些时序模式可预测”的 background knowledge;少量 robot data 提供的是“7D end-effector action 对相机中 latent state 的影响”。如果直接用 robot data 学全部视觉表示,数据不足;如果直接用 web video 学 action predictor,又没有 action;如果做 pixel video generation,规划候选太贵。V-JEPA 2 的组合把三者拆开,使可 scale 的部分和必须 interaction 的部分各自承担最合适的学习任务。
3. Method (方法)
3.1 V-JEPA 2 action-free pretraining:在 representation space 做 mask denoising
V-JEPA 2 继承 JEPA 的基本目标:给定原始视频 与被 masking 后的 view ,encoder 提取 context representation,predictor 根据 context 和 learnable mask token 预测 dropped patches 的 representation。论文公式为: 这里 表示 stop-gradient, 是 encoder weights 的 exponential moving average。loss 只作用在 masked patches 的 predictions 上。这个设计有两个作用:一是避免 trivial collapse,因为 target branch 不被 predictor 直接反向传播;二是让模型学习 representation 中可预测的语义与动态,而不是像 generative reconstruction 那样把容量花在不可预测的 pixel detail 上。
结构上,encoder 与 predictor 都是 Vision Transformer。V-JEPA 2 的一个工程变化是把 V-JEPA v1 的 absolute sin-cos positional embedding 换成 3D-RoPE:把 feature dimension 分成 temporal、height、width 三段,分别应用 1D rotations。论文指出 3D-RoPE 对最大模型训练更稳定。输入视频会被 patchify 成 tubelets,大小为 (),并沿用 multiblock masking。
Figure 3 解读:这张图把从 V-JEPA v1 到 V-JEPA 2 的 scaling path 做成累积增益。以 ViT-L/16、2M videos 为 baseline,数据从 2M 扩到 22M 带来 +1.0 average accuracy;模型从 300M 扩到 1B 带来 +1.5;训练从 90K 到 252K iterations 再带来 +0.8;最后 spatial resolution 从 256 到 384、temporal duration 从 16 到 64 frames 共同把 average accuracy 推到 88.2,累计约 +4.0。
3.2 数据与 scaling recipe
VM22M 由四类 video source 和一个 image dataset 组成,训练时 image 被复制成 16-frame static video,以便 joint image/video pretraining。论文强调使用 public sources 是为了可复现,但 YT1B 需要 retrieval-based curation 来过滤 cartoon/clipart-style 等 noisy content。
| Source | Samples | Type | Total Hours | Apply Curation | Weight |
|---|---|---|---|---|---|
| SSv2 | 168K | EgoVideo | 168 | No | 0.056 |
| Kinetics | 733K | ExoVideo | 614 | No | 0.188 |
| HowTo100M | 1.1M | ExoVideo | 134K | No | 0.318 |
| YT-Temporal-1B | 19M | ExoVideo | 1.6M | Yes | 0.188 |
| ImageNet | 1M | Images | n/a | No | 0.250 |
Figure 4 解读:左图比较 VM2M 与 VM22M,VM22M 平均提升约 +1.0,尤其对 K400、COIN、ImageNet 这类 appearance coverage 相关任务有帮助。右图比较 curated YT1B 与 uncurated YT1B,curation 平均提升 +1.4,说明 web-scale data 不是越多越好;如果噪声 distribution 偏离 target,长训到后期可能退化。
Figure 5 解读:左图显示 model scale 从 ViT-L 到 ViT-g 带来稳定收益;中图显示直接用 训练 ViT-g 成本极高,论文估计约 60 GPU-years,而 progressive resolution/duration training 能带来约 GPU time reduction;右图说明即便 evaluation 固定 16 frames,pretraining 时更长 clip/更高 resolution 仍有收益。
released code 中对应的 V-JEPA 2 pretraining recipe 主要在 configs/train/vitg16/pretrain-256px-16f.yaml、configs/train/vitg16/cooldown-256px-64f.yaml、configs/train/vitg16/cooldown-384px-64f.yaml。以 vitg16/pretrain-256px-16f.yaml 为例,配置写明 nodes=16、tasks_per_node=8、per-GPU batch_size=24,因此 global batch 为 3072;crop_size=256、dataset_fpcs=[16,16,16]、fps=4、tubelet_size=2;optimizer 使用 AdamW,epochs=800、ipe=300、lr=5.25e-4、start_lr=1e-4、warmup=40、weight_decay=0.04。384 cooldown config 使用 nodes=64、per-GPU batch_size=6、crop_size=384、dataset_fpcs=[64,64,64]、epochs=40、final_lr=1e-6。
论文公式与 released code 实现差异:论文 Table 1 描述 VM22M 包含 SSv2、Kinetics、HowTo100M、YT1B、ImageNet 五类来源,而当前 main@204698b4 的公开 configs/train/vitg16/pretrain-256px-16f.yaml 只列出 K710、SSv2、HowTo 三个 CSV placeholder 及 weights 0.335/0.100/0.565,没有直接公开 YT1B 与 ImageNet rows;另外论文 Appendix 的 abbreviated recipe 报告 Final Weight Decay=0.4,而 release config 中 final_weight_decay=0.04。因此笔记中的 paper-scale dataset/statistics 以论文为准,source-grounded pseudocode/config mapping 以当前 GitHub release 为准。
3.3 V-JEPA 2-AC:把 frozen video representation 接到 action-conditioned predictor
V-JEPA 2-AC 的目标是:给定当前 latent state、robot end-effector state 与 action,预测下一个 latent state。训练数据来自 Droid raw dataset,不使用 reward、task label、success/failure label,只用 raw video 和 end-effector state signals。论文设定中每个 clip 为 4 秒、256×256、4 fps,即 16 frames;每个 state 是 7D vector,前三维是 Cartesian position,中间三维是 extrinsic Euler orientation,最后一维是 gripper state;action 是相邻 frames 的 end-effector state difference。
Frozen V-JEPA 2 encoder 独立编码每一帧: 论文中 ViT-g encoder 产生的 feature map shape 是 。V-JEPA 2-AC predictor 是约 300M 参数的 transformer:24 layers、16 heads、1024 hidden dimension、GELU activations。它将 action token、state token、flattened feature tokens 分别用 affine projection 映射到 predictor hidden dimension,再用 block-causal attention 处理,使每个 time step 的 patch feature 可以 attend 当前与过去的 action/state/patch tokens,不能偷看未来。
Figure 6 解读:左侧 teacher forcing loss 让 predictor 在看到真实上一帧 representation 时预测下一帧;右侧 rollout loss 把 predictor 自己的输出再喂回去,训练短 horizon autoregressive stability。直觉上,teacher forcing 保证 one-step dynamics 学准,rollout loss 则缓解 planning 时反复 rollout 造成的 error accumulation。
Teacher-forcing loss:
Rollout loss 写作:
总目标是:
论文说明实际 rollout loss 使用 ,只通过一个 recurrent step 反向传播。released code 的 app/vjepa_droid/train.py 与 configs/train/vitg16/droid-256px-8f.yaml 对应这一点:config 中 loss.auto_steps=2,训练代码计算 z_tf 与 z_ar,再设 loss = jloss + sloss。代码还会对 target/predicted representation 做 layer norm(normalize_reps: true)。
论文公式与 released code 实现差异:论文正文把 V-JEPA 2-AC 输入描述为 4 秒、4 fps、16-frame clips,且 teacher forcing 中 ;当前 release 的 Droid config 文件名与内容为 droid-256px-8f.yaml,dataset_fpcs=[8]、batch_size=8 per GPU、nodes=4、tasks_per_node=8,训练代码中 action tensor 注释为 [B T-1 7],并在 forward_target 中把每个 frame repeat 成 2-frame tubelet 送入 video encoder。也就是说,public config 是 8-frame recipe,而 paper exposition 是 16-frame/4-second recipe;复现时不能把论文中的 直接当成 release config 的 sequence length。
3.4 Planning:用 goal-conditioned latent energy 做 MPC
Planning 阶段不训练 policy。给定 current frame 、goal image 与 current state ,分别编码得到 与 。对一个 horizon ,优化 action sequence: 论文用 Cross-Entropy Method 近似求解:从一组 Gaussian distributions 采样 action trajectories,rollout world model 得到 final latent state,按与 goal latent 的 distance 选 top-,用 elite statistics 更新 Gaussian mean/std,重复若干 iterations,最后执行第一个 action,然后重新观察和再规划。这是 receding horizon control。
Figure 7 解读:当前 observation 和 goal image 都通过同一个 frozen encoder 进入 latent space;predictor 根据 candidate actions 想象未来 latent state;energy 是 imagined future 与 goal latent 的 距离。因为优化变量是 action,而不是模型参数,部署时可以完全 zero-shot 使用同一套 world model weights。
released code 中 planning utilities 位于 notebooks/utils/mpc_utils.py 与 notebooks/utils/world_model_wrapper.py。cem() 的默认接口是 world_model(context_frame, action) -> next_frame,内部维护 action trajectory 的 Gaussian mean/std;WorldModel.infer_next_action() 把 encoder/predictor 包装成 planning-time step function。论文实验中,V-JEPA 2-AC 使用 800 samples、10 refinement steps、horizon 1;每个 sampled action 被限制在 ball radius 0.075,约对应每步最大 13 cm end-effector displacement。
3.5 Source-grounded pseudocode
Code reference:
main@204698b4(2026-03-23) — pseudocode and mapping based on this commit
def vjepa2_pretrain_step(encoder, target_encoder, predictor, clips,
masks_enc, masks_pred, optimizer, loss_exp=1.0):
# app/vjepa/train.py: target branch is EMA encoder, no gradient.
with torch.no_grad():
targets = target_encoder(clips)
targets = [F.layer_norm(h, (h.size(-1),)) for h in targets]
# Context branch sees only unmasked/context tokens.
preds = encoder(clips, masks_enc)
preds = predictor(preds, masks_enc, masks_pred) # returns masked-token preds
# Loss is only on masked target tokens.
masked_targets = [apply_masks(h, m, concat=False)
for h, m in zip(targets, masks_pred)]
loss, n = 0.0, 0
for pred_level, tgt_level in zip(preds, masked_targets):
for pred_tokens, tgt_tokens in zip(pred_level, tgt_level):
loss = loss + torch.mean(torch.abs(pred_tokens - tgt_tokens) ** loss_exp) / loss_exp
n += 1
loss = loss / n
loss.backward()
optimizer.step()
optimizer.zero_grad()
# EMA target update: param_k = m * param_k + (1-m) * param_q
with torch.no_grad():
m = next(momentum_scheduler)
for param_q, param_k in zip(encoder.parameters(), target_encoder.parameters()):
param_k.data.mul_(m).add_((1.0 - m) * param_q.detach().data)
return lossdef vjepa2_ac_train_step(frozen_encoder, ac_predictor, clips, actions, states,
extrinsics, optimizer, tokens_per_frame, auto_steps=2,
normalize_reps=True, loss_exp=1.0):
# app/vjepa_droid/train.py: clips [B, C, T, H, W], actions [B, T-1, 7]
with torch.no_grad():
# Released code encodes each frame as a repeated 2-frame tubelet clip.
frame_clips = clips.permute(0, 2, 1, 3, 4).flatten(0, 1).unsqueeze(2).repeat(1, 1, 2, 1, 1)
h = frozen_encoder(frame_clips)
h = h.view(clips.size(0), clips.size(2), -1, h.size(-1)).flatten(1, 2)
if normalize_reps:
h = F.layer_norm(h, (h.size(-1),))
def step_predictor(z_prefix, a_prefix, s_prefix, e_prefix):
z_next = ac_predictor(z_prefix, a_prefix, s_prefix, e_prefix)
return F.layer_norm(z_next, (z_next.size(-1),)) if normalize_reps else z_next
# Teacher forcing: predict next latent tokens from true prefix.
z_tf = step_predictor(h[:, :-tokens_per_frame], actions, states[:, :-1], extrinsics[:, :-1])
# Short autoregressive rollout: feed predicted tokens back.
z_roll = torch.cat([h[:, :tokens_per_frame], z_tf[:, :tokens_per_frame]], dim=1)
for n in range(1, auto_steps):
z_next = step_predictor(z_roll, actions[:, :n + 1], states[:, :n + 1], extrinsics[:, :n + 1])
z_roll = torch.cat([z_roll, z_next[:, -tokens_per_frame:]], dim=1)
z_ar = z_roll[:, tokens_per_frame:]
def latent_l1(pred):
target = h[:, tokens_per_frame: pred.size(1) + tokens_per_frame]
return torch.mean(torch.abs(pred - target) ** loss_exp) / loss_exp
loss = latent_l1(z_tf) + latent_l1(z_ar)
loss.backward()
optimizer.step()
optimizer.zero_grad()
return lossdef cem_latent_mpc_step(encoder, world_model, current_image, current_pose, goal_image,
samples=800, cem_steps=10, horizon=1, maxnorm=0.075, topk=10):
# notebooks/utils/mpc_utils.py + world_model_wrapper.py, simplified.
context_rep = encoder(current_image) # [1, 1, HW, D]
goal_rep = encoder(goal_image) # [1, 1, HW, D]
mean = torch.zeros(horizon, 4, device=context_rep.device) # dx, dy, dz, gripper
std = torch.ones_like(mean)
for _ in range(cem_steps):
actions = torch.randn(samples, horizon, 4, device=mean.device) * std + mean
actions[..., :3] = actions[..., :3].clamp(-maxnorm, maxnorm)
actions[..., -1:] = actions[..., -1:].clamp(-0.75, 0.75)
actions7 = torch.cat([actions[..., :3], torch.zeros(samples, horizon, 3), actions[..., -1:]], dim=-1)
pred_rep, pred_pose = context_rep.repeat(samples, 1, 1, 1), current_pose.repeat(samples, 1, 1)
for t in range(horizon):
pred_rep, pred_pose = world_model(pred_rep, actions7[:, :t + 1], pred_pose)
energy = torch.mean(torch.abs(pred_rep[:, -1].flatten(1) - goal_rep.flatten(1)), dim=-1)
elite = actions[torch.topk(-energy, k=topk).indices]
mean, std = elite.mean(dim=0), elite.std(dim=0)
first_action = torch.cat([mean[:1, :3], torch.zeros(1, 3, device=mean.device), mean[:1, -1:]], dim=-1)
return first_action| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| V-JEPA 2 masked latent prediction training | app/vjepa/train.py | main(), nested forward_target, forward_context, loss_fn, EMA update |
| V-JEPA 2 model construction | app/vjepa/utils.py | init_video_model() initializes video_vit encoder and vit_predictor |
| Predictor with mask tokens and target-token output | src/models/predictor.py | VisionTransformerPredictor.forward() |
| ViT encoder / tubelet processing / RoPE support | src/models/vision_transformer.py | VisionTransformer family constructors |
| Multiblock video masking | src/masks/multiseq_multiblock3d.py | multisequence 3D mask collator used by app/vjepa/train.py |
| V-JEPA 2-AC training | app/vjepa_droid/train.py | nested forward_target, forward_predictions, loss_fn, jloss + sloss |
| Action-conditioned predictor | src/models/ac_predictor.py | VisionTransformerPredictorAC, vit_ac_predictor() |
| Droid post-training config | configs/train/vitg16/droid-256px-8f.yaml | pred_depth=24, pred_embed_dim=1024, auto_steps=2, epochs=315 |
| CEM latent MPC planner | notebooks/utils/mpc_utils.py | cem(), compute_new_pose() |
| Planning wrapper | notebooks/utils/world_model_wrapper.py | WorldModel.encode(), infer_next_action() |
4. Experimental Setup (实验设置)
4.1 Pretraining data 与 training config
V-JEPA 2 pretraining 使用 VM22M:22M samples,视频总量超过 1M hours,构成见 §3 的 Table 1。图像数据 ImageNet 被复制成 static 16-frame video。核心 training recipe 包括 ViT-L/16、ViT-H/16、ViT-g/16 三种 encoder scale,其中 Table 12 给出的 encoder architecture 为:ViT-L 300M、width 1024、depth 24、heads 16、MLP 4096;ViT-H 600M、width 1280、depth 32、heads 16、MLP 5120;ViT-g 1B、width 1408、depth 40、heads 22、MLP 6144;predictor 固定为 ViT-s 22M、width 384、depth 12、heads 12、MLP 1536。released config 对 ViT-g pretraining 的实际 launch 数字如前所述来自 configs/train/vitg16/*.yaml:16 nodes×8 tasks,256px/16f pretraining;64 nodes×8 tasks,384px/64f cooldown。
4.2 Downstream understanding / prediction / VQA
Probe-based classification 评估 action/object recognition,主要 datasets 包括 SSv2、Diving-48、Jester、Kinetics-400、COIN、ImageNet-1K。评估方式是在 frozen encoder output 上训练 4-layer attentive probe;推理时采样多个 clips/views 并平均 logits。
action anticipation 使用 Epic-Kitchens-100:100 hours egocentric cooking videos、45 kitchen environments、3568 unique action labels、97 verb categories、300 noun categories;metric 是 mean-class recall-at-5 for verb/noun/action。
Video QA 则把 V-JEPA 2 vision encoder 和 LLM 对齐:controlled setting 使用 Qwen2-7B-Instruct,state-of-the-art setting 使用 Llama 3.1 8B,并把 alignment data 从 18M 扩到 full 88.5M samples。
VQA metrics 包括 PerceptionTest accuracy、MVP paired accuracy、TempCompass multi-choice accuracy、TemporalBench MBA-short QA、TOMATO accuracy、TVBench accuracy、MVBench accuracy。
4.3 Robot planning setup
V-JEPA 2-AC post-training 使用 Droid raw dataset 中不到 62 hours 的 left extrinsic camera videos;每个 trajectory 带 end-effector state metadata,但不使用 reward、task type 或 success label。论文正文称随机采样 4-second clips,256×256,4 fps;Appendix B.1 给出 optimizer:AdamW,warmup-constant-decay LR schedule,weight decay 0.04;LR 从 warmup 到 over 4500 iterations,constant 85500 iterations,最后 4500 iterations decay 到 0;batch size 256;random-resize-crop aspect ratio 。
Figure 14 解读:robot tasks 分成 grasp cup、reach with cup、pick-and-place cup。grasp/reach-with-object 只给 single goal image;pick-and-place 给两个 sub-goal 加 final goal,模型先对 grasp sub-goal 优化 4 time-steps,再对 vicinity sub-goal 优化 10 time-steps,最后对 place goal 优化 4 time-steps。这解释了为什么论文把 planning 评价拆成 Reach、Grasp、Reach w/ Obj.、Pick-&-Place。
Baselines 有两个。Octo 是 video-language-action behavior cloning baseline,基于 octo-base-1.5,预训练数据 Open-X Embodiment over 1M trajectories,并在 entire Droid 上用 hindsight relabeling fine-tune;输入是 side image view 256×256、two previous frames、horizon 4 future actions。Cosmos 是 action-conditioned video generation world model baseline,基于 latent diffusion-7B continuous tokenizer,原模型训练于 20M hours video,再用 officially released action-conditioned code fine-tune on Droid。Deployment 在两个新 lab 的 Franka Emika Panda + RobotiQ gripper 上进行,视觉输入是 uncalibrated low-resolution monocular RGB camera;两个 lab 都不在 Droid dataset 中。
5. Experimental Results (实验结果)
5.1 Understanding:classification 与 scaling
V-JEPA 2 在 frozen encoder + attentive probe setting 下,motion understanding 与 appearance understanding 都强。主表中 V-JEPA 2 ViT-g384 达到 average 88.2;SSv2 77.3、Diving-48 90.2、Jester 97.8、K400 87.3、COIN 91.1、IN1K 85.1。对比同协议下的 V-JEPA ViT-H average 85.2、InternVideo2s2-1B average 87.0,ViT-g384 说明 scaling + high resolution/long duration 对 motion-heavy tasks 有实质收益。
| Method | Param. | Avg. | SSv2 | Diving-48 | Jester | K400 | COIN | IN1K |
|---|---|---|---|---|---|---|---|---|
| V-JEPA ViT-H | 600M | 85.2 | 74.3 | 87.9 | 97.7 | 84.5 | 87.1 | 80.0 |
| InternVideo2s2-1B | 1B | 87.0 | 69.7 | 86.4 | 97.0 | 89.4 | 93.8 | 85.8 |
| V-JEPA 2 ViT-L | 300M | 86.0 | 73.7 | 89.0 | 97.6 | 85.1 | 86.8 | 83.5 |
| V-JEPA 2 ViT-H | 600M | 86.4 | 74.0 | 89.8 | 97.7 | 85.3 | 87.9 | 83.8 |
| V-JEPA 2 ViT-g | 1B | 87.5 | 75.3 | 90.1 | 97.7 | 86.6 | 90.7 | 84.6 |
| V-JEPA 2 ViT-g384 | 1B | 88.2 | 77.3 | 90.2 | 97.8 | 87.3 | 91.1 | 85.1 |
关键 ablation 与 appendix 结果支持 scaling recipe。Table 14 显示 ViT-g 在 epoch 800/no cooldown 时 IN1K 83.8、COIN 89.1、SSv2 75.1、K400 85.8;256×256 annealed cooldown 后变成 84.6、90.7、75.3、86.6;384×384 annealed cooldown 后为 85.1、90.2、76.5、87.3。也就是说 cooldown 不是 cosmetic phase,而是带来超过 1 point 的多任务提升,尤其提高 SSv2/K400。
5.2 Prediction:EK100 action anticipation
EK100 action anticipation 是论文最能体现“prediction capability”的非机器人任务。V-JEPA 2 只用 frozen backbone + attentive probe,却超过专门为 anticipation 设计的模型。V-JEPA 2 ViT-g384 达到 Verb 63.6、Noun 57.1、Action 39.7;相比 PlausiVL 的 Action 27.6,是约 44% relative improvement。模型大小也呈单调 scaling:ViT-L Action 32.7,ViT-H 36.5,ViT-g 38.0,ViT-g384 39.7。
| Method | Param. | Verb R@5 | Noun R@5 | Action R@5 |
|---|---|---|---|---|
| InAViT | 160M | 51.9 | 52.0 | 25.8 |
| Video-LLaMA | 7B | 52.9 | 52.0 | 26.0 |
| PlausiVL | 8B | 55.6 | 54.2 | 27.6 |
| V-JEPA 2 ViT-L | 300M | 57.8 | 53.8 | 32.7 |
| V-JEPA 2 ViT-H | 600M | 59.2 | 54.6 | 36.5 |
| V-JEPA 2 ViT-g | 1B | 61.2 | 55.7 | 38.0 |
| V-JEPA 2 ViT-g384 | 1B | 63.6 | 57.1 | 39.7 |

Figure 11 解读:EK100 qualitative visualization 展示 V-JEPA 2 的 prediction 不只是识别当前画面物体,而是利用 context 推断接下来的人类动作。对 cooking egocentric videos,这要求模型捕捉手、工具、容器和动作阶段之间的时序关系。
Figure 17 解读:protocol ablation 表明 action anticipation 对 context frames、fps、resolution 都敏感;更多 frames 与合适帧率提高 recall-at-5,说明 prediction task 不是单帧 appearance classification。V-JEPA 2 的优势与它在 video pretraining 中保留 temporal dynamics 相关。
Figure 18 解读:longer-term anticipation 的性能下降揭示了 limitation:预测越远,context 中与 future action 直接相关的证据越弱,多种未来动作的可能性越大。这个现象和 robot rollout 中的 error accumulation 是同一个问题的两个版本。
5.3 Video QA:video encoder 可以被对齐到 LLM
在 controlled setup 中,V-JEPA 2 ViT-g512 + Qwen2-7B-Instruct 达到 Avg. 54.4、PerceptionTest 77.7、MVP 33.7、TempCompass 71.6、TemporalBench 32.3、TVBench 57.5、TOMATO 38.5、MVBench 69.5。最终 state-of-the-art setup 使用 full 88.5M alignment data、Llama 3.1 8B backbone、V-JEPA 2 ViT-g384,达到 Avg. 59.5、PerceptionTest 84.0、MVP 44.5、TempCompass 76.9、TemporalBench 36.7、TOMATO 40.3、TVBench 60.6、MVBench 73.5。论文强调这反驳了一种常见看法:video-language model 的视觉 encoder 必须用 language supervision 预训练;V-JEPA 2 是 self-supervised video encoder,但仍能通过后续 alignment 获得强 VQA 表现。
| Method | Enc/LLM | Avg. | PerceptionTest | MVP | TempCompass | TemporalBench | TOMATO | TVBench | MVBench |
|---|---|---|---|---|---|---|---|---|---|
| InternVL-2.5 | 300M/7B | 52.1 | 68.9 | 39.9 | 68.3 | 24.3 | 29.4 | 61.6 | 72.6 |
| Qwen2.5VL | 1B/7B | 49.7 | 70.5 | 36.7 | 71.7 | 24.5 | 24.6 | 50.5 | 69.6 |
| PLM 8B | 1B/8B | 56.7 | 82.7 | 39.7 | 72.7 | 28.3 | 33.2 | 63.5 | 77.1 |
| V-JEPA 2 ViT-g384 + Llama 3.1 8B | 1B/8B | 59.5 | 84.0 | 44.5 | 76.9 | 36.7 | 40.3 | 60.6 | 73.5 |
5.4 Planning:zero-shot robot manipulation
V-JEPA 2-AC 在两个新 lab 的 Franka arms 上 zero-shot 部署。Single-goal reaching 中,模型在三个方向任务中都能把 end-effector 移到 goal 4 cm 以内,并且 error 单调下降。作者把这解释为一种 learned visual servoing:与经典 visual servoing 不同,它不是依赖几何标定和手写控制律,而是通过 unlabeled real-world videos 学到 action 对 latent state 的影响。
Figure 8 解读:三行分别对应 、、 reaching。每行左侧是 start/goal images,右侧曲线是 robot execution 中 distance-to-goal 随 step 下降。该图证明 energy minimization 给出的 action 方向和实际相机视角中的空间关系一致,即模型从 monocular RGB 中隐式获得了 3D spatial understanding。
Figure 9 解读:作者固定 ,扫 和 ,可视化 equation (5) 的 energy landscape。ground-truth action 是 ,energy minimum 出现在接近 的区域;尽管不是精确 sensing,landscape 局部平滑且近似 convex,这解释了为什么 CEM 可以找到可执行动作。
Prehensile manipulation 上,V-JEPA 2-AC 的平均成功率为 Reach 100%、Grasp Cup 65%、Grasp Box 25%、Reach w/ Obj. Cup 75%、Reach w/ Obj. Box 75%、Pick-&-Place Cup 80%、Pick-&-Place Box 65%。Octo 平均为 100%、15%、0%、15%、70%、15%、10%。差距主要出现在 object interaction:grasp 和 pick-and-place 需要视觉反馈下的精细 control、gripper state、物体是否随手臂移动等 latent physics。
| Method | Lab | Reach | Grasp Cup | Grasp Box | Reach w/ Obj. Cup | Reach w/ Obj. Box | Pick-&-Place Cup | Pick-&-Place Box |
|---|---|---|---|---|---|---|---|---|
| Octo | Lab 1 | 100% | 20% | 0% | 20% | 70% | 20% | 10% |
| Octo | Lab 2 | 100% | 10% | 0% | 10% | 70% | 10% | 10% |
| Octo | Avg | 100% | 15% | 0% | 15% | 70% | 15% | 10% |
| V-JEPA 2-AC | Lab 1 | 100% | 70% | 30% | 90% | 80% | 80% | 80% |
| V-JEPA 2-AC | Lab 2 | 100% | 60% | 20% | 60% | 70% | 80% | 50% |
| V-JEPA 2-AC | Avg | 100% | 65% | 25% | 75% | 75% | 80% | 65% |
Figure 10 解读:pick-and-place execution 中高亮 frames 表示达到 sub-goal 后切换到下一个 goal。这个多阶段 goal schedule 很重要:模型本身不是训练好的 long-horizon policy,而是通过短 horizon MPC 反复追逐当前 sub-goal,从而组合 grasp、move、place 三个 atomic skills。
与 Cosmos 的 planning comparison 更突出 latent planning 的计算优势。在 single RTX 4090 上,Cosmos 使用 80 samples、10 refinement steps、horizon 1,每个 action 需要 4 min;V-JEPA 2-AC 使用 800 samples、10 refinement steps、horizon 1,每个 action 只需 16 sec。Table 3 中 Cosmos Reach 80%、Grasp Cup 0%、Grasp Box 20%、Pick-&-Place Cup 0%、Box 0%;V-JEPA 2-AC Reach 100%、Grasp Cup 60%、Grasp Box 20%、Pick-&-Place Cup 80%、Box 50%。这不是说 V-JEPA 2-AC 预测视觉更漂亮,而是它的 latent state 足够支持更快的 action search。
5.5 可解释性与 limitations
Figure 15 解读:作者训练一个简单 frame decoder,把 V-JEPA 2 / V-JEPA 2-AC representation 转回 pixel 便于分析。V-JEPA 2 reconstruction 捕捉了控制相关的 salient scene parts,但背景较模糊;V-JEPA 2-AC rollout 在给定 ground-truth action sequence 时能让 robot arm 动起来,并保持 shelf 等非交互对象稳定。open vs closed gripper ablation 中,closed gripper 会带动 cup,open gripper 下 cup 位置基本不变,显示模型学到了一些 object constancy/shape constancy/gravity 的直觉。但 Figure 15a 也显示 final frame 中 cup 位置略偏低,说明 autoregressive error accumulation 仍然存在。
Figure 16 解读:V-JEPA 2-AC 没有显式 camera calibration,却要从 monocular RGB 推断 action coordinate axis。当 camera position 改变时,inferred coordinate axis 的 rotation error 明显变化。论文把这列为主要 limitation:在很多视角下 robot base 不在画面中,坐标轴推断本身并不 well-defined,因此需要手动尝试 camera positions,最终选择一个 across experiments 工作较好的位置。
作者还列出 long-horizon planning 的限制。第一,autoregressive latent prediction 会累积误差,rollout 越长越难可靠 planning;第二,CEM 的 planning time 与 samples/refinement/horizon 成本相关,当前 setup 仍需要 16 sec/action,不能算实时;第三,Droid post-training 只覆盖有限 robot morphology、camera setup 和 tabletop manipulation distribution,因此不能外推到所有机器人或复杂 multi-step tasks。论文建议的改进包括减少 samples/refinement steps、在 world-model imagination 中训练 feed-forward policy 初始化 planning、以及对 V-JEPA 2-AC 尝试 gradient-based planning。
总体结论是:V-JEPA 2 把 self-supervised video representation 推到了一个能同时服务三类任务的位置。理解方面,ViT-g384 在多项 classification/VQA 指标上达到或接近 SOTA;预测方面,EK100 action anticipation 明显超过先前方法;规划方面,V-JEPA 2-AC 用少量 unlabeled robot video 和 image-goal latent MPC,在新 lab 中完成 zero-shot manipulation。最值得注意的不是某个单点指标,而是“action-free observation pretraining + small action-conditioned post-training + latent planning”这条路线被实验证明可行。