PhysJEPA · 09-16 → 09-22 · 新立项
PhyCo 和 Physion 全是渲染出来的,模型到 Physics-IQ 真实视频上就崩:光流预测 17.97 分,连"不喂光流"的 34.83 都不如。本周立项:把训练视频的 RGB 换成真实感画面,运动/几何/mask 一个像素都不动。调研了闭源 API、开源可控生成模型和四十余篇论文(80 个代理两轮事实核查),定下路线,代码与集群基建已就绪,等 Phase 0 诊断放行。
H3(官� API 名 "Hailuo-03",07-31 发布、08-03 开源 33B 权重)是 MiniMax 唯一接受视频输入的模型,但只有 reference_video 的语义再生成模式:它把参考视频当"角色/运动/镜头/风格"的提示,从噪声重新生成一段新视频。没有 depth / segmentation / flow / mask 控制,没有 video-to-video 编辑端点(base_video 只用于 768P→2K 升清),没有贴合度参数。物体轮廓、位置、时序可以漂几个到几十像素,构图也会变——我们的 GT 光流和 mask 就对不上了,而"运动形式不变"是硬要求。价格 $0.64 / 4 s 片(输入视频按输出价再计一次),40k 片 ≈ $25.6k。Kling O3、Runway Aleph 2、Seedance 2.0、Grok Imagine、Wan2.7-videoedit 全是同一范式;Sora 2 API 09-24 停服;Veo 3.1 无视频输入。
做 sim2real 的人(NVIDIA Cosmos-Transfer、Seeing Realism from Simulation、DriveCtrl、RoboTransfer、EmbodieDreamer、Mask2Real-WM)全部收敛到同一配方:depth + segmentation + edge 控制视频(+ 源视频部分加噪)。segmentation 是防止物体在碰撞/遮挡时变形消失的关键(有/无 mask FVD 176 vs 423);edge 贴合最紧但会把 CG 平面着色"烤"进去;depth/seg 更真实但会幻觉结构。推荐分区权重:物体区 edge+depth、背景区 seg/depth。我们的数据自带这些控制图:PhyCo 有 depth.mp4 + segmentation.mp4,Physion HDF5 有 _id 逐帧实例通道。
已发表的对齐指标只有 mask mIoU 0.63–0.72、Edge F1 0.14–0.28、depth si-RMSE ~0.47。我们要的 1–2 px 门槛必须自己在 pilot 里量,而且默认参数大概率达不到(mIoU 0.72 ≪ 0.9)——所以计划里每一条产物都要过逐条门禁,不合格换 seed 重试一次再剔除。
这一条把主成本从"周"压到"天"。
cache_stage1_flowdit.py::read_first_frame 是 Stage-1 训练缓存里唯一读 RGB 的地方:取第 0 帧,Wan VAE 编成 image_cond_latent,再缩成 160² 的 first_frame 给解码器;监督信号 flow_latent 全来自 GT 光流。Stage-1 训练时从未见过第 1…N 帧的像素。Physics-IQ 上失效的恰是 Stage-1(真实首帧→光流),Stage-2 的 zero 臂 34.83 ≈ 公开 base。所以:
read_first_frame 原生支持 PNG)。--source-fps 12 读即可,GT 锚点不变。| 用途 | 模型 | 控制 | 要点 | 状态 |
|---|---|---|---|---|
| 首帧 | FLUX.1-dev + ControlNet-Union-Pro-2.0 | depth + edge(双控制),可 img2img 保留源帧 | 秒级/张;FLUX dev 非商用许可(研究可用) | pilot 首选 |
| 首帧 | Cosmos-Transfer2.5 Image2Image | depth + seg + edge + 权重 | 与视频版同控制集;走其自带 CLI | pilot |
| 首帧 | Qwen-Image-Edit-2511 | 指令式,无硬控制 | Apache-2.0;靠门禁筛 | 第三臂 |
| 视频 | Cosmos3-Nano 16B(2026-05-31) | edge/blur/depth/seg 控制视频,480p,fps 可配 | 与我们 24 fps 数据最匹配;A100 时延未知 | 2b 首选 |
| 视频 | Cosmos-Transfer2.5-2B | depth/seg/edge/blur + 时空 mask | 65.4 GB 只能 80G 卡;480 分辨率有运动幻觉 issue → 720p 跑再降采样 | 2b |
| 视频 | Wan2.1-VACE-14B / 1.3B | depth / flow 可视化 + 参考图 | Apache-2.0,diffusers 原生;1.3B 是唯一能几天内跑完 40k 片的 | 2b |
| 视频 | Wan2.2-VACE-Fun-A14B | depth/canny/pose | 与 Stage-2 同一 Wan2.2 潜空间;需社区转换权重 | 备选 |
| 叠加 | NeuralRemaster φ-PD | 相位保持噪声 | 零开销,Wan2.2-14B 上验证过 | 加固 |
| 否决 | MiniMax H3 / Kling / Runway / Seedance | 无结构控制 | 只在报告里给结论,默认不做付费 pilot | 不用 |
吞吐(8×A100 单卡数据并行):VACE-1.3B@480p×81 帧 ≈ 4 min/片 → 40k ≈ 14 天,4 步蒸馏 LoRA ≈ 1 min/片;14B 级 6–12 周(蒸馏后 1–2 周);Cosmos-2.5 base ≥ 1 个月。所以全视频只做子集,首帧全量。
诊断门禁:用现有 checkpoint 在三组输入上测 EPE——Physics-IQ 原样 / Physics-IQ"合成化"(降采样+平面化)/ 封存集"真实化"(噪声+模糊+JPEG+色偏)。真实化恶化 ≥30% 且合成化改善 ≥15% 才算"外观差成立",否则降级为增广对照、预算转真实域伪标。
评审员意见采纳为门禁:PhyCo、PhysAlign 都是纯合成微调却在 Physics-IQ 上涨分,我们的 17.97 是"预测运动场被强注入 Stage-2"的特有现象,先分清外观差和内容差再烧卡。
基建:镜像、权重落 PVC、PhyCo 源数据、控制图导出(PhyCo 12 fps×49 帧 + 24 fps×97 帧;Physion 20 fps×33 帧覆盖训练用的 0,10,…,150 帧),Cosmos 约定的深度/分割编码。
首帧 pilot:每语料每场景 50 条 = 750 条 × 3 变体,三个后端 bake-off。门禁:SAM2 质心分割 vs GT mask IoU ≥ 0.85(必需)、edge recall、depth si-RMSE、DINO 结构距离、真实感探针(真实池与 Physics-IQ 不相交)。
首帧全量 45k × 3 → Stage-1 训练臂 A1(restyled)/ A2(50/50 混合)/ A3(原版+重光度增广,零成本对照)vs A0 → 主指标:Physics-IQ 198 帧上 Stage-1 光流 vs RAFT 伪 GT 的 rel_to_zero(基线 2.083)与方向误差(87.3°);成功线 rel_to_zero 相对下降 ≥25% 且方向下降 ≥15°,域内退化 ≤5%。
全视频子集 ~18.5k 片给 Stage-2,后端由 Phase 2b 的 300 条视频 pilot 决定。
PhyCo 仿真代码公开(phyco-sim,vendored Kubric + Blender 3.4):先 10 帧 Cycles 基准,可行则渲 1k 片新片段,打开 forward_flow 得精确 GT 光流(优于现在的 RAFT 伪 GT),作为"重渲染 vs 重绘"对照臂。
| 文件 | 作用 |
|---|---|
| scripts/restyle/common.py | 分片 / 原子写 / sidecar;Cosmos 约定的控制图编码(逆深度整段 min-max、按面积降序随机色实例、"干净边" = 实例边界 ∪ Canny(depth)) |
| scripts/restyle/export_controls.py | PhyCo / Physion 控制包导出(CPU) |
| scripts/restyle/restyle_frame0.py | 三个首帧后端封装;diffusers 类名与参数已对源码核实 |
| scripts/restyle/gate_frame0.py | 静态门禁(SAM2 / Depth-Anything / DINOv2),阈值全是 CLI 参数 |
| scripts/restyle/build_restyled_manifests.py | 保 sample_id、去颜色词、val/test 不动;每样本 hash 选一个通过变体 |
| scripts/restyle/phase0_make_degraded.py · score_stage1_physicsiq.py | Phase 0 退化链与打分 |
| scripts/cache_stage1_flowdit.py | 新增 --video-override-manifest,payload 记 first_frame_source |
| k8s/restyle/* | Dockerfile、Indexed Job(80G-only affinity、忽略抢占)、pod 驱动(burn.py 到 MODEL_READY 即停)、权重下载、运行手册 |
| jobs/restyle_driver.sh | 本机驱动:configmap / sync-code / submit / count / merge-gates |
| docs/preregistration_restyle_20260922.md | 预注册:假设、门禁阈值、主指标与成功线、污染红线 |
sample_id 键控——同一样本的 K 个变体会互相覆盖,所以 manifest 每样本只选一个变体(跨样本仍有多样性);真正的多变体增广是 Phase 5 的缓存格式改动。_depth 未证实(_flow 就缺)——需 h5py 实测,退路是用项目已有的网格 z-buffer 光栅化出深度。docs/restyle_phase0_diagnostic.md)。