DiT4DiT — Video DiT hidden feature 条件化 Action DiT

DiT4DiT: Jointly Modeling Video Dynamics and Actions for Generalizable Robot Control · Mondo Robotics / HKUST(GZ) / HKUST · arXiv 2603.10448v2 (2026)

速览
背景·意义
基座·结构
方法·架构
训练·推理
实验·效果
消融·关键结论
代码印证
关联论文
对课题启发
局限·复现
自测

一句话结论

DiT4DiT 的关键不是“生成未来视频再执行”,而是用 Video DiT 去噪过程中的中间 hidden feature 条件化 Action DiT。它通过 dual flow matching 和 tri-timestep,把视频动态建模与动作生成联合训练。对 VLMGuide / 世界模型路线最有价值的判断是:中间生成表征通常比最终重建帧更适合作为动作条件

这和 ImageWAM 的 KV/cache 思路、DynaGuide 的 latent guidance 思路属于同一条趋势:不要把“最终生成出来的像素”当核心资产,而要把“生成/预测过程中的内部表征”转化为动作条件、动作评分或动作修正信号。
可靠性说明PDF 原文核对本地代码核对综合判断:公式、实验数字来自本地 PDF /home/chenzhiyuan/projects/paper/2026-DiT4DiT/DiT4DiT.pdf;实现细节核对自本地仓库 /home/chenzhiyuan/projects/DiT4DiT。README 的 release checkpoint 数字和论文表格存在口径差异,本页主结果以论文 PDF 为准,并在复现部分单独标注 README 口径。

速览卡片

内容
论文DiT4DiT: Jointly Modeling Video Dynamics and Actions for Generalizable Robot Control
核心问题现有 VLA 大多继承静态图文表征,低层物理动态主要靠有限机器人动作数据学习,样本效率和 OOD 泛化受限。
核心方法Video DiT 建模未来视觉动态;Action DiT 读取 Video DiT 去噪中间 hidden states,通过 cross-attention 生成连续动作。
基础模型Video backbone 基于 Cosmos-Predict2.5-2B;语言条件来自 Cosmos-Reason1 / Cosmos pipeline text encoder 的多层 embeddings;Action DiT 沿用并改造 GR00T-N1 风格 flow-matching action head。Qwen3-VL/Qwen3DiT 是等参 baseline,不是 DiT4DiT 本体。
训练机制dual flow matching + asymmetric tri-timestep:视频生成时间、hidden extraction 时间、动作去噪时间解耦。
主结果LIBERO 平均 98.6%;RoboCasa-GR1 平均 50.8%;Unitree G1 真机七任务显著优于 GR00T-N1.5 和 Qwen3DiT。
最重要消融第 18 层 hidden feature 最好;只取 1 step hidden 最好;更多 denoising step 会把表征推向像素重建细节,动作效果下降。
98.6%
LIBERO 平均成功率
50.8%
RoboCasa-GR1 论文表格平均成功率
6Hz
Unitree G1 真机部署频率

背景:VLA 为什么需要视频动态先验

论文的出发点很明确:VLA 已经能用视觉和语言条件生成动作,但其 backbone 多数来自静态图文预训练。静态图文数据能提供物体、语义、关系和语言能力,却不直接提供“接触后会怎样”“物体如何随动作演化”“多阶段任务状态如何转换”等物理动态。

DiT4DiT 的核心假设是:通用视频生成模型为了预测未来帧,已经在互联网视频中学到大量时空结构和隐式物理规律。与其把这些能力用作外部可视化,不如把它们变成策略内部的动作条件。

静态 VLA
image/text representation
动作数据补物理动态
sample inefficient
DiT4DiT
video dynamics as policy prior

意义:视频生成不是为了“看未来电影”

DiT4DiT 的贡献不是简单把未来视频生成出来,再让策略照着视频做。它明确避免依赖 fully reconstructed future frames,而是截取 Video DiT 去噪过程中的 hidden states 作为动作条件。这个差异非常关键:

理解方式是否符合 DiT4DiT问题
先生成完整未来视频,再做 inverse dynamics不准确昂贵、慢、容易被像素细节/生成伪影误导。
用视频生成模型的中间去噪表征指导动作准确动作模型读取还未塌缩成像素重建的时空动态表征。
把视频生成作为机器人策略学习的 scaling proxy准确论文 Fig.1 认为 video generation 比 grounding 和 VLM latent modeling 更有效。
对课题判断:如果后续做 VLMGuide,不应设计成“VLM 生成目标图/视频,然后策略照图执行”。更合理的是:让生成模型产生中间 latent/KV/hidden,再把这些表征用于动作候选评分、动作 reranking、推理时梯度引导或 phase-aware repair。

DiT4DiT 基于哪个模型改进?

严格说,DiT4DiT 不是从零设计一个全新 transformer,而是把两个已经成熟的方向拼成一个 Video-Action Model:Video 端基于 Cosmos-Predict2.5-2B,Action 端基于 GR00T-N1 风格的 flow-matching Action DiT。它真正的创新不是“换了一个 backbone”,而是把 Video DiT 的中间去噪 hidden states 变成 Action DiT 的条件,并通过 video loss + action loss 联合训练。

组件是否 DiT4DiT 本体基座来自哪里在 DiT4DiT 中的作用
Cosmos-Predict2.5-2BCosmos video generation / prediction foundation model提供 causal video VAE、Video Diffusion Transformer、scheduler、video processor;被改造成“动态 hidden feature extractor”。
Cosmos-Reason1 / Cosmos text encoderCosmos 语言条件模块把 instruction 编码成多层 prompt embeddings,作为 Video DiT 的语言条件。
GR00T-N1-style Action DiTNVIDIA GR00T-N1 系列 action head 设计提供 flow-matching action transformer;在 DiT4DiT 中改为 cross-attend Video DiT hidden。
diffusers Transformer blocks工程依赖Diffusers Attention / FeedForward / timestep embeddingAction DiT 的 attention、AdaLN、timestep embedding 等基础实现。
Qwen3-VL 2B / Qwen3DiT不是论文构造的参数匹配 baseline用 Qwen3-VL 2B + 同一 Action DiT,对比“静态 VLM backbone”与“视频动态 backbone”。
GR00T-N1.5 / GR00T-N1.6不是直接基座强 baseline / 预训练策略用于仿真和真机对比;DiT4DiT 的 action head lineage 来自 GR00T-N1,但不是直接在 N1.5/N1.6 上继续训练。
注意:代码文件 DiT4DiT.py 顶部 docstring 还残留“Qwen2.5 VL / QFormer / DINO”等旧描述,但实际 forward 路径调用的是 get_backbone_model(config) 下的 Cosmos25 backbone。判断模型结构时应以配置与实际调用链为准,而不是残留注释。

模型结构总图:两个 DiT,但职责不同

输入:
  o_t: 当前/历史 ego 图像帧
  l:   语言指令
  s_t: 本体状态,可选
  a*:  expert action chunk,仅训练时使用

Video branch:
  frame_0 ──► Cosmos video processor / VAE ──► condition latent z_t^0
  frame_1..T ──► VAE ──► future latent supervision z_{t+1}^0
  instruction ──► tokenizer + text_encoder ──► prompt embeddings
  noisy future latent z^{τv} + condition latent + prompt
      └─► Cosmos Video DiT transformer blocks
             └─► hook block 17 (0-based) / paper layer 18
                    └─► hidden: [B, S=T×H×W, 2048]

Action branch:
  action noise / noised action chunk ──► ActionEncoder ─┐
  state s_t ──► StateEncoder MLP,可选 ────────────────┤
                                                       ├─► state/action tokens: [B, H(+state), 768]
  Video hidden [B,S,2048] ──────────────────────────────┘
      └─► 16-layer Action DiT
             - odd blocks: self-attention when interleave_self_attention=true
             - even blocks: cross-attention to Video hidden
             - timestep injected by AdaLN / timestep encoder
      └─► output projection 2560 ─► MLP action decoder ─► velocity / action_dim

训练目标:
  L_total = L_action_flow_matching + λ L_video_flow_matching

这张结构图的核心是:Cosmos Video DiT 不负责直接输出机器人动作,Action DiT 也不直接看原始图像。二者通过 Video hidden states 连接。这个连接点就是 DiT4DiT 和普通 VLA / 普通 video world model 的分界线。

论文结构 vs 本地代码结构

论文描述本地代码对应核对结论
Video DiT initialized from Cosmos-Predict2.5-2BCosmos25FeatureExtractor 调用 diffusers.Cosmos2_5_PredictBasePipeline.from_pretrained(...)一致。代码显式取出 text_encodertokenizertransformervaeschedulervideo_processor
语言条件来自 Cosmos-Reason1 multi-layer embeddings_get_prompt_embeds() 中读取 text encoder 的所有 hidden states,并归一化后 concat机制一致;具体 text encoder 由 Cosmos pipeline 权重决定。
extract layer = 18配置 extract_layer: 17;hook transformer_blocks[self.extract_layer]一致。代码使用 0-based index,17 对应论文第 18 层。
Action DiT adapted from GR00T-N1ActionDiT.py 文件头保留 NVIDIA / GR00T lineage;FlowmatchingActionHead 构建 DiT-B一致。具体实现是 flow-matching action head + cross-attention DiT。
input sequence includes proprioception, noisy actions, learnable future tokens当前可见主路径中,sa_embs = concat(state_features, action_features);未在已核对路径看到显式 future token parameter需谨慎标注:论文写了 future tokens,但本地 release 代码主路径主要是 state/action tokens + video cross-attention。可能是论文描述、早期分支或未展开模块差异。
Action DiT cross-attends Video hiddenself.model(hidden_states=sa_embs, encoder_hidden_states=vl_embs)一致。cross_attention_dim: 2048 对齐 Video hidden dim。
结论:DiT4DiT 的可确认模型结构是“Cosmos-Predict2.5-2B Video DiT hidden extractor + GR00T-style Flowmatching Action DiT”。论文中的 future tokens 需要保留为论文描述,但不能在网页里说本地代码已经明确实现了显式 learnable future token。

关键维度与配置

配置项论文 Table 4 / 主设置本地 LIBERO 配置本地 RoboCasa / G1 配置
Video backboneCosmos-Predict2.5-2BCosmos25Cosmos25
Video hidden dim2048vl_hidden_dim: 2048vl_hidden_dim: 2048
Extract layer18extract_layer: 17,0-basedextract_layer: 17,0-based
Action model typeDiT-BDiT-BDiT-B
Action DiT inner dim768 = 12 heads × 64 dim768768
Action decoder hidden size2560hidden_size: 2560hidden_size: 2560
Action output dim328,Franka / LIBERO 口径32,G1 WBC decoupled 版本为 36
State dim641664
Action horizon16816
Action inference steps444
Video future inference steps论文消融显示 1 step 最好future_num_inference_steps: 1future_num_inference_steps: 1

因此,如果要复现或迁移,不能只看论文 Table 4。LIBERO、RoboCasa、真机 G1 的 action/state 维度和 horizon 都会随本体改变;稳定不变的是 Video hidden dim=2048、hook 第 18 层、Action DiT cross-attend video hidden、动作 flow matching 4-step sampling 这些核心机制。

到底改进了什么?

  1. 把 Cosmos-Predict2.5 从“视频生成器”改成“机器人动态特征提取器”。代码通过 forward hook 截取 transformer block hidden,不要求完整解码未来视频。
  2. 把 GR00T-style Action DiT 的条件从静态 VLM token 改成 Video DiT hidden token。这让动作模型看到的是任务条件化的未来动态表征,而不是单帧图文语义。
  3. 引入 video/action dual flow matching。Video branch 学未来 latent velocity field,Action branch 学动作 velocity field。
  4. 引入 tri-timestep 解耦。视频去噪时间、hidden extraction 时间、动作去噪时间不强行绑在一起。
  5. 通过 joint training 让 Video hidden 更适合控制。消融里 joint training 的任务阶段聚类更清楚,说明 action loss 会反向塑形 video hidden。

整体架构:Dual-DiT Video-Action Model

当前观测 ot
语言目标 l
Video DiT
Cosmos-Predict2.5-2B
hidden htτf
Action DiT
GR00T-N1-style
action chunk
at:t+H

Video DiT 负责建模未来视觉动态;Action DiT 不是读取最终解码视频,而是通过 cross-attention 读取 Video DiT 某一层、某一去噪时刻的 hidden features。论文默认 hidden feature dim 为 2048,extract layer 为第 18 层;Action DiT 为 DiT-B 配置,inner dim 为 768,16 层,输出投影/decoder hidden size 为 2560,主设置动作 horizon 为 16。

更细的“基于哪些模型改造、每个张量怎么流动、论文和代码哪里不完全一致”见前一个 基座·结构 tab。这里重点解释论文方法本身。

数学形式

基础 flow matching 路径:

xτ = (1 - τ)x0 + τz,   v* = z - x0
LFM = E || vθ(xτ, τ) - (z - x0) ||²

Video-Action 联合分布写法:

ot+1 ~ pv(· | ot, l),   at ~ pa(· | ot, H(ot+1τv))
ot+1, at ~ pva(· | ot, l)

Video hidden extraction:

htτf = H[ vvideo,θ(zt+1τf, τf | zt0, l) ]

总损失:

Ltotal = Laction + λLvideo

为什么 hidden feature 比最终帧更适合动作

表征优点问题
最终重建未来帧可视化直观昂贵;包含纹理/光照等动作无关细节;可能有生成伪影。
中间去噪 hidden包含未来动态、空间约束和任务语义;尚未过度像素化不可直接人眼解释,需要靠消融/可视化验证。
早层 hidden粗结构和低级视觉语义/任务动态不足。
末层 hidden接近像素重建论文消融显示会塌缩到细节重建,动作成功率下降。

训练:dual flow matching + tri-timestep

DiT4DiT 训练时同时优化视频动态与动作生成。关键不是“两个 loss 简单相加”,而是把三个时间步拆开:

时间步作用设计理由
τvVideo DiT 的视频 flow matching 时间让视频模型学习从噪声 latent 到未来 latent 的完整速度场。
τf抽取 hidden feature 的时间给 Action DiT 一个稳定 operating point,不被完整采样轨迹扰动。
τaAction DiT 的动作 flow matching 时间独立训练动作噪声到干净动作的速度场;论文/代码使用 Beta 偏置采样。
实现 nuance:论文主体描述 τv 可均匀采样;本地 release 配置中,视频 flow matching 的 time_distribution 默认是 logit_normal,并带 high-sigma strategy。这属于工程实现对训练稳定性的调整,不改变“视频时间、特征时间、动作时间解耦”的核心。

推理:不需要完整视频采样

控制时的关键路径很短:

当前 ego 图像
instruction
Video DiT 单次 forward
固定/少步 τf
hook hidden states
Action DiT 4 步
flow ODE
执行 action chunk

这就是论文能在真机达到 6Hz 的原因:它不是每个控制周期都生成完整未来视频,而是把视频生成模型当作“动态表征提取器”。

模型与训练配置

类别配置
Video DiTCosmos-Predict2.5-2B;FlashAttention2;hidden dim 2048;extract layer 18。
Action DiTDiT-B;hidden size 2560;cross-attention dim 2048;16 layers;AdaLN;interleave self-attention。
动作action dim 32;state dim 64;future action window 15;horizon 16;inference timesteps 4。
训练32 GPUs;max train steps 100k;warmup 5k;VGM LR 1e-5;Action LR 1e-4;AdamW。

评测协议矩阵:作者到底测了什么

评测块Benchmark / 平台任务与数据为什么这样测复现状态
仿真标准基准LIBEROSpatial/Object/Goal/Long 四套件;每套件 10 tasks;每任务 500 demos;报告 success rate。验证从 scratch 训练时,视频动态 hidden 是否能在标准 VLA benchmark 上不输强基线,尤其看 Long suite 的长时状态转移。本地做了代码与配置核对,尚未完成全量 LIBERO 复现。
人形桌面仿真RoboCasa-GR1Fourier GR1 humanoid;24 个桌面任务;29 维动作;每任务 1,000 teleop demos;每任务 50 rollouts;最大 horizon 720。比 LIBERO 更接近人形双臂桌面操作,检验 DiT4DiT 是否只是在 Franka/LIBERO 上有效。本地核对了仓库任务配置与论文结果口径;未跑全量。
真机主结果Unitree G17 个任务:pick and place、arrange flower、stack cups、insert plate into rack、box packaging、move spoon、drawer interaction;每任务 200 demos,20 rollouts。验证“中间视频动态表征”是否能迁移到真实人形平台,尤其是长时、多阶段、遮挡和空间对齐任务。未本地复现;真机硬件和数据不可用。
泛化/OODRoboCasa + G1 variation仿真新物体 Can/Cup/Milk/Wine;真机 category/quantity/object substitution。排除模型只记住训练物体/数量/外观;检验视频动态 prior 对新物体和干扰变化的鲁棒性。未复现;网页记录论文数值与 README checkpoint 口径差异。
复现结论:当前本地工作是“代码结构 + 配置 + 论文表格”核对,不是完整训练复现。RoboCasa release checkpoint 数字高于论文正式表格,本页正文以 PDF 表格为准。

LIBERO:从 scratch 达到 98.6%

方法SpatialObjectGoalLongAvg
Diffusion Policy78.392.568.350.572.4
π096.898.895.885.294.2
π0.598.898.298.092.496.9
CogVLA98.698.896.695.497.4
GR00T-N1.596.294.096.090.094.1
Qwen3DiT from scratch98.098.896.093.696.6
DiT4DiT from scratch98.499.698.697.698.6

Long suite 是最有解释力的:DiT4DiT 97.6%,明显高于 Qwen3DiT 93.6 和 GR00T-N1.5 90.0。这个结果支持“视频动态 hidden 对长时状态转移有帮助”。

RoboCasa-GR1:24 个桌面任务,平均 50.8%

方法训练口径Avg SR说明
GR00T-N1.5pretrained + finetune41.8官方预训练权重,目标数据上微调。
GR00T-N1.6pretrained + finetune40.8同样训练步数。
Qwen3DiTfrom scratch36.2Qwen3-VL 2B + 同一 Action DiT,参数匹配。
DiT4DiTfrom scratch50.824 个任务中 16 个任务最高。
README 的 release checkpoint 表格报告 RoboCasa-GR1 五次 run 平均约 56.3–57.4,高于论文表格 50.8。该差异可能来自 release checkpoint / 默认训练参数更新;论文结论仍以 50.8 为正式结果。

Unitree G1 真机:视频动态表征在长时任务上更稳

真机平台为 Unitree G1 humanoid,双 7-DoF 手臂 + ALOHA2 grippers,头部 Intel RealSense D435i ego RGB 640×480,PICO VR + XRoboToolkit 采集。七个任务每个 200 条 demo、20 次 rollout。

任务论文强调的 DiT4DiT 表现对比含义
Arrange Flower75%,GR00T-N1.5 为 25%细杆插入花瓶,需要空间对齐和接触前状态判断。
Stack Cup60%,GR00T-N1.5 为 25%多阶段堆叠,需保持时序一致。
Move Spoon40%,GR00T-N1.5 为 15%小物体与细粒度运动。
Drawer Interaction90%长时、多阶段状态转移。
Box Packing50%打开、放入、退出等子目标序列。

Qwen3DiT 在真机几乎崩溃,论文称所有任务不超过 10%,在 Drawer / Arrange / Box 上为 0%。这说明“静态 VLM + 同一动作头”不足以替代视频动态 backbone。

OOD / generalization

场景设置结果
仿真新物体 OOD只用 bottle 任务训练;测试 Can / Cup / Milk / WineToDrawerClose 54.5 vs Qwen3DiT 32.0;ToCabinetClose 34.0 vs 24.5;ToMicrowaveClose 30.5 vs 17.0。
真机 category variation改变杯子/花瓶/花的材质、形状、外观Arrange Flower(category) DiT4DiT 70%,GR00T-N1.5 10%,Qwen3DiT 0%。
真机 quantity variationStack Cup 数量变化和干扰物变化Stack Cup(number) DiT4DiT 50%。
真机 object substitutionBox Packing 中替换目标物体,如 eggplant → corn图示显示 DiT4DiT 相比 Qwen3DiT 更稳,但仍不是完全解决所有 OOD。

最关键消融 1:第 18 层最好

论文在 RoboCasa-GR1 的五个任务上比较 Video DiT 不同层的 hidden feature。结论是:早层 2–8 表现差,末层 24–28 也明显下降,默认第 18 层最佳。

解释:早层还偏低级视觉和粗结构,末层过度服务于像素重建;中后层更接近“任务相关的未来动态表征”。这正是本页最重要的判断依据。

最关键消融 2:hidden extraction 只做 1 step 最好

论文比较用于抽 hidden feature 的 denoising steps。结果是 1 step 最好,更多 step 单调下降。作者解释为:过多迭代会让 hidden states 过度承诺到像素级未来细节,反而损害动作需要的抽象动态先验。

这条结论对 VLMGuide 极其重要:如果我们把生成模型用于控制,不应追求“生成得越完整越好”。控制需要的是可行动、可达、约束一致的中间表示,不是视觉上最逼真的终帧。

最关键消融 3:joint training 改善时序结构

论文用 t-SNE / silhouette score 分析 hidden features。decoupled training 的 silhouette score 为 0.09,joint training 提升到 0.17,并表现出更顺滑的 Early → Middle → Late 任务阶段流动。

这说明 DiT4DiT 不是只把一个冻结视频模型当特征提取器,而是通过 action loss 反向塑形 Video DiT,使其 hidden feature 更适合动作。

效率

方法Trainable ParamsDeploy Frequency解读
GR00T-N1.52.7B13Hz最快,但真机/部分仿真任务低于 DiT4DiT。
Qwen3DiT2.3B9Hz参数匹配基线,缺视频动态先验。
DiT4DiT2.2B6Hz更慢,但收益来自动态 hidden,而不是更大模型。

本地代码路径

模块路径作用
框架入口/home/chenzhiyuan/projects/DiT4DiT/DiT4DiT/model/framework/DiT4DiT.py组装 Cosmos backbone 与 FlowmatchingActionHead;forward 同时返回 action_loss / future_video_loss。
Video backboneDiT4DiT/model/modules/vlm/Cosmos25.py加载 Cosmos2.5 pipeline;注册 transformer block hook;构建 condition frame / future frames;输出 hidden states。
Action DiTDiT4DiT/model/modules/action_model/ActionDiT.py动作 flow matching;Beta 采样动作时间;noisy action → velocity field。
cross-attention DiTDiT4DiT/model/modules/action_model/flow_matching_head/cross_attention_dit.pyAction token 通过 cross-attention attend 到 Video hidden states。
配置DiT4DiT/config/{libero,robocasa,real_robot}/*.yamlextract_layer、hidden dim、action horizon、LR、dataset 等。

代码印证 1:forward hook 抽 Video DiT 中间层

# Cosmos25.py
pipe = Cosmos2_5_PredictBasePipeline.from_pretrained(...)
self.text_encoder = pipe.text_encoder
self.transformer = pipe.transformer
self.vae = pipe.vae
self.scheduler = pipe.scheduler

target_layer = blocks[self.extract_layer]
target_layer.register_forward_hook(hook_fn)

def hook_fn(module, inp, out):
    if torch.is_tensor(out):
        self._cached_hidden.append(out.detach())
    elif isinstance(out, (tuple, list)) and torch.is_tensor(out[0]):
        self._cached_hidden.append(out[0].detach())

这说明 Video 端真实基座是 Cosmos-Predict2.5 / Cosmos2.5 pipeline。配置中 extract_layer: 17 是 0-based,对应论文表格里的第 18 层。这一点和论文消融完全对齐。

代码印证 2:只截第一次 transformer forward 的 hidden

# Cosmos25.py
self._cached_hidden.clear()
self._capture_hidden_enabled = True
...
for i, t in enumerate(timesteps):
    model_out = self.transformer(...)[0]
    if i == 0 and hidden_first is None and len(self._cached_hidden) > 0:
        hidden_first = self._cached_hidden[-1]
        self._capture_hidden_enabled = False
...
hidden = hidden_first if hidden_first is not None else self._cached_hidden[-1]

这就是“推理时不完整生成未来视频”的实现落点:默认 future_num_inference_steps: 1,只要一次 Video DiT forward 的中间 hidden。

代码印证 3:Action DiT 读取 video hidden

# DiT4DiT.py
backbone_outputs = self.backbone_interface(...)
last_hidden = backbone_outputs.hidden_states[-1]
action_loss = self.action_model(last_hidden_repeated, actions_target_repeated, action_mask, state_repeated)

# ActionDiT.py
model_output = self.model(
    hidden_states=sa_embs,
    encoder_hidden_states=vl_embs,
    timestep=t_discretized,
)

encoder_hidden_states=vl_embs 就是 Video DiT 抽出来的 hidden token。Action DiT 内部交替 self-attention / cross-attention,使用 cross_attention_dim: 2048 对齐 video hidden dim。

代码印证 3.5:Action DiT 的 token 结构

# ActionDiT.py
state_features = self.state_encoder(state) if state is not None else None
action_features = self.action_encoder(noisy_trajectory, t_discretized)
if self.config.add_pos_embed:
    action_features = action_features + pos_embs

sa_embs = torch.cat((state_features, action_features), dim=1) \
    if state_features is not None else action_features

model_output = self.model(
    hidden_states=sa_embs,
    encoder_hidden_states=vl_embs,
    timestep=t_discretized,
)

这段代码把 Action DiT 的主输入明确成 state tokens + action tokens,Video hidden 作为 cross-attention memory。论文方法段提到 learnable “future tokens”,但本地 release 代码已核对主路径中没有看到显式 future token parameter。因此网页中把它标为论文描述与代码主路径的差异,而不是强行认定代码已经实现。

代码印证 4:动作 flow matching

# ActionDiT.py
noise = torch.randn(actions.shape, device=actions.device, dtype=actions.dtype)
t = self.sample_time(actions.shape[0], device=actions.device, dtype=actions.dtype)
noisy_trajectory = (1 - t) * actions + t * noise
velocity = noise - actions
...
loss = ((pred_actions - velocity) ** 2) * action_mask
loss = loss.sum() / action_mask.sum()

这与论文中的 action flow matching 对齐。推理时 num_inference_timesteps: 4,从随机动作噪声出发,按 flow ODE 积分得到 action chunk。

对 VLMGuide 的直接启发

  1. 不要把目标设成“生成未来图/视频”。更应把目标设成“提取可用于动作选择的任务条件化中间表征”。
  2. VLMGuide 的 guide 信号应落在 action selection。只要中间表征不能改变动作选择,就只是可视化或诊断。
  3. 增加 action-conditioned reachability。ImageWAM/DiT4DiT 的 hidden/cache 可以表示“想象的目标变化”,但仍要判断候选动作是否能达到该变化。
  4. 做 phase-aware guidance。reach / grasp / transport / place / recovery 不应共享同一种 guide;不同阶段需要不同 latent、不同权重。
  5. 优先从轻量闭环开始。完整 DiT4DiT 需要大资源;VLMGuide 可以先用冻结 VLA + 中间表征 scorer/reranker 证明 policy-level 收益。

可落地方案:ImageWAM + DynaGuide + VLA repair

当前图像 + 指令
Image editing / Video DiT
中间 cache/hidden
候选动作
来自 VLA/DP/ACT
latent dynamics / reachability
score or gradient
rerank / repair / reject

这个方案的论文叙事可以是:现有 VLA 会在 OOD、阶段错乱或视觉捷径下生成“看似合理但当前不该做”的动作;VLMGuide 不直接替换 policy,而是在运行时用生成模型中间表征 + action-conditioned dynamics 做动作一致性验证。

和触觉/世界模型课题的连接

DiT4DiT 的局限部分明确提到当前只有单个 ego camera,未来可加入 wrist camera 或 tactile feedback。对你们的触觉方向,这给出一个自然扩展:

视觉 DiT4DiT视触觉扩展
Video DiT hidden 表示未来视觉动态Video/Tactile world model hidden 表示未来视觉 + 接触动态
Action DiT cross-attend video hiddenAction model cross-attend visual hidden + tactile belief hidden
单 ego camera 易遮挡遮挡/闭眼阶段依赖触觉 belief 和力反馈
适合大规模人形控制适合无腕部相机、头部眼 + 触觉/六维力的 RealMan 研究设定
更抽象地说,DiT4DiT 支持“非单帧融合,而是时序推理”的路线:视觉先给出空间先验,动作执行中触觉逐步更新 belief,guide 信号随阶段从视觉主导切换到触觉主导。

选题建议

路线可发性资源风险建议
完整复现/扩展 DiT4DiT高,如果有大数据和大算力很高作为长期方向,不适合短平快实习生主线。
ImageWAM-style cache guidance + VLA reranking中高适合 VLMGuide 主线,重点做 policy-level OOD 收益。
DynaGuide-style runtime action steering for VLA/Flow Matching中高重点难点是把 DDIM guidance 正确迁移到 flow matching / VLA action sampler。
触觉 hidden / belief guidance高,但需要真机数据中高适合 RealMan + 触觉长期课题,可从仿真/离线数据先验证。

局限

  • 单 ego camera。真机部署只用头部 ego RGB,相机被手臂或物体遮挡时会破坏时序连续性。
  • 没有触觉/力反馈。论文没有在接触丰富、力敏感任务上系统验证。
  • 训练资源高。论文配置为 32 GPUs、100k steps,完整复现门槛明显高于 DynaGuide / 普通 DP。
  • 频率低于 VLA baseline。6Hz 可用但慢于 Qwen3DiT 9Hz 和 GR00T-N1.5 13Hz。
  • 中间 hidden 可解释性弱。不能像最终视频那样直接肉眼看,需要消融、聚类或 probing 验证。

复现与代码使用注意

事项判断
仓库可用性本地有完整仓库 /home/chenzhiyuan/projects/DiT4DiT,远端为 https://github.com/Mondo-Robotics/DiT4DiT.git
模型下载需要 Cosmos-Predict2.5-2B;README 建议 CUDA 12.4+,训练推荐 >8 GPUs。
benchmark仓库提供 LIBERO、RoboCasa-GR1、Real G1 指南。
README vs 论文README release checkpoint 的 RoboCasa-GR1 平均约 56–57;论文 Table 2 为 50.8。本页主分析使用论文口径。
推荐复现切入先读配置和 forward 流程,再只跑 LIBERO smoke test;不要一开始碰 G1 真机链路。

最终评价

DiT4DiT 是一篇很强的世界模型/VLA 交叉论文。它最值得学习的不是“视频模型很强”这个泛泛结论,而是一个更具体的技术判断:

生成模型用于机器人控制时,最有价值的对象往往不是最终生成样本,而是生成过程中的中间状态。把这个中间状态接入 action sampler,才是从 world model 走向 robot policy 的关键。

自测题