恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
SANA-WM 80-Scene Benchmark 完整评测指南:数据下载、60 秒场景推理与四维指标体系
首页
资讯中心
/
SANA-WM 80-Scene Benchmark 完整评测指南:数据下载、60 秒场景推理与四维指标体系
SANA-WM 80-Scene Benchmark 完整评测指南:数据下载、60 秒场景推理与四维指标体系
发布时间:2026/9/16 11:07:38
SANA-WM 80-Scene Benchmark 完整评测指南数据下载、60 秒场景推理与四维指标体系【免费下载链接】SanaSANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformer项目地址: https://gitcode.com/GitHub_Trending/sana/Sana本文档系统讲解 Sana 仓库中 SANA-WM 的 80 场景世界模型基准SANA-WM-Bench评测全流程覆盖公开数据集的发布范围与目录结构、基于 Hugging Face 的数据下载、单场景与 Slurm 集群批量推理、以及 VBench / 重访一致性 / 相机姿态精度 / 时间退化四类指标的完整评估方法与结果聚合约定。读者按本文操作可复现 SANA-WM 双向精修bidirectional LTX-2 refiner管线在 60 秒、720p 场景上的完整评测并产出与基准对比表格式一致的量化结果。基准发布范围与两种评测 SplitSANA-WM-Bench 是用于世界模型 80 场景评测的公开基准其发布范围经过刻意收窄以保证评测口径的一致性与可比性场景固定为scene_set/kept_scenes.txt中的80 个场景只发布 60 秒轨迹60-second trajectories仅包含 Sana-WM 自身导出的轨迹文件sanawm_export_v2/*.npz不包含 24 秒配置、非 Sana-WM 导出物或基线模型输出公开场景 ID 按类别匿名化为category_001至category_020每类 20 个场景。基准包含两个 splitSplit目录轨迹集场景数帧数simple_60sbenchmark_v2_smooth_60ssimple平滑80961 16 fpshard_60sbenchmark_v2_hard_60shard困难80961 16 fps每个 Sana-WM 的.npz文件存储以下数组c2w形状(961, 4, 4)的相机到世界camera-to-world矩阵intrinsics形状(961, 3, 3)的相机内参以源图像像素为单位fps标量固定为16num_frames标量固定为961。961帧与 16 fps 对应约 60 秒视频60 × 16 960 1 首帧。评测脚本对帧索引的处理也以 16 fps 为参考基准eval_unified.py 中的_remap_frame_index会在生成视频实际帧率不一致时按时间映射重算帧索引time frame / ref_fps从而保证比较的是同一时刻。数据集目录布局公开数据集发布在 Hugging Face 的Efficient-Large-Model/SANA-WM-Bench仓库布局如下SANA-WM-Bench/ |-- README.md |-- images/ | -- scene_id.png |-- scene_set/ | -- kept_scenes.txt |-- benchmark_v2_smooth_60s/ | |-- scene_trajectories_v2.json | -- sanawm_export_v2/ | |-- run_manifest.jsonl | -- scene_id.npz |-- benchmark_v2_hard_60s/ | |-- scene_trajectories_v2.json | -- sanawm_export_v2/ | |-- run_manifest.jsonl | -- scene_id.npz上传到数据集的 manifestrun_manifest.jsonl使用数据集相对路径image_pathimages/scene_id.pngcamera_pathsplit_dir/sanawm_export_v2/scene_id.npz这两份文件是整个评测链路的数据中枢推理阶段从 manifest 读取场景 ID、提示词prompt与相机轨迹路径见下文的单场景准备脚本评估阶段又由 eval_benchmark_poses.py 依据 manifest 将生成的*_generated.mp4与对应的 GT 相机轨迹配对。下载公开基准数据使用huggingface-cli下载数据集huggingface-cli download Efficient-Large-Model/SANA-WM-Bench \ --repo-type dataset \ --local-dir data/SANA-WM-Bench本文后续命令统一假设BENCHdata/SANA-WM-Bench评测脚本同样默认该本地路径eval_unified.py 中按data/SANA-WM-Bench/bench_dir/scene_trajectories_v2.json自动探测基准元数据eval_benchmark_poses.py 也支持从结果目录的 split 名自动推断 manifest 路径。评估依赖安装在 Sana-WM 运行时环境中额外安装评测包python -m pip install vbench decord lpips pyiqa0.1.10 facexlib0.3.0相机姿态精度指标还要求 Pi3 可导入python - PY from pi3.models.pi3 import Pi3 print(Pi3 OK) PY注意事项如果推理环境对包版本有严格锁定建议把 VBench / LPIPS 等额外依赖放在独立的评估环境或用户级 site 中同时复用同一个仓库检出与结果目录这样method_info.json、eval/布局保持一致首次运行 VBench / LPIPS 会向用户缓存下载官方评估权重包括DINO、AMT、ViCLIP、AlexNet等检查点请确保评估任务有网络访问或已预填充缓存eval_unified.py 专门兼容了 PyTorch 2.6 的torch.load安全默认值weights_onlyTrue在加载官方 VBench 检查点时回退到旧行为避免序列化兼容问题。单场景推理从 manifest 到 60 秒生成视频将BENCH指向发布目录后先为单个场景准备输入从 manifest 提取相机轨迹与提示词BENCHdata/SANA-WM-Bench SPLITbenchmark_v2_smooth_60s SCENEgame_style_001 WORKresults/sana_wm_bench_inputs/$SPLIT/$SCENE mkdir -p $WORK export BENCH SPLIT SCENE WORK python - PY import json import os from pathlib import Path import numpy as np bench Path(os.environ[BENCH]) split os.environ[SPLIT] scene os.environ[SCENE] work Path(os.environ[WORK]) manifest bench / split / sanawm_export_v2/run_manifest.jsonl rows [json.loads(line) for line in manifest.read_text(encodingutf-8).splitlines() if line.strip()] row next(r for r in rows if r[id] scene) traj np.load(bench / row[camera_path]) np.save(work / f{scene}_c2w.npy, traj[c2w]) np.save(work / f{scene}_intrinsics.npy, traj[intrinsics]) (work / f{scene}.txt).write_text(row[prompt], encodingutf-8) PY随后调用双向推理脚本生成视频python inference_video_scripts/wm/inference_sana_wm.py \ --image $BENCH/images/$SCENE.png \ --prompt $WORK/$SCENE.txt \ --camera $WORK/${SCENE}_c2w.npy \ --intrinsics $WORK/${SCENE}_intrinsics.npy \ --num_frames 961 \ --fps 16 \ --step 60 \ --cfg_scale 5.0 \ --flow_shift 8.0 \ --sampling_algo flow_euler_ltx \ --seed 42 \ --refiner_seed 42 \ --no_action_overlay \ --output_dir results/sana_wm_bidirectional_refined/simple_60s \ --name $SCENE输出为results/sana_wm_bidirectional_refined/simple_60s/scene_id_generated.mp4关键参数说明结合 inference_sana_wm.py 的参数定义上述命令中每个开关的作用如下参数取值说明--image首帧 RGB 图像等比缩放并中心裁剪到固定输出分辨率 704×1280脚本内TARGET_HEIGHT704, TARGET_WIDTH1280见 inference_sana_wm.py--camera(F,4,4)的.npycamera-to-world 矩阵与--action互斥基准评测固定使用显式轨迹--intrinsics(F,3,3)的.npy建议显式传入省略时脚本会用 Pi3X 从图像估计且若估计 FOV 超出[25°, 120°]会中止见 inference_sana_wm.py--num_frames961对应 60 秒 16fps 的帧数--fps16输出 mp4 帧率--step60Stage-1 DiT 采样步数--cfg_scale5.0无分类器引导CFG强度--flow_shift8.0覆盖调度器的inference_flow_shift--sampling_algoflow_euler_ltx显式选择 LTX Flow Euler 采样器配合 LTX-2 refiner--seed/--refiner_seed42Stage-1 与 refiner 的随机种子保证可复现--no_action_overlay—跳过输出视频上的 WASD 摇杆叠加层保证评测视频干净LTX-2 refiner 默认开启基准评测场景切勿传入--no_refiner。refiner 只精修第 1..T-1 帧第 0 帧是输入图像的逐字拷贝这正是评估时需要通过--skip_first_frame auto去掉首帧的原因详见下文评估细节。用 Slurm 调度器批量跑完 80 个场景对 Slurm 集群以下示例每个任务处理一个场景--array0-79%8限制并发 8 个任务可按 GPU 容量调整并发度cat run_sana_wm_bench.sbatch EOF #!/usr/bin/env bash #SBATCH --job-nameswm_bench #SBATCH --accountaccount #SBATCH --partitiongpu-partition #SBATCH --gresgpu:1 #SBATCH --cpus-per-task16 #SBATCH --mem220G #SBATCH --time04:00:00 #SBATCH --array0-79%8 #SBATCH --outputlogs/%x_%A_%a.out set -euo pipefail REPO/path/to/Sana PY/path/to/python BENCHdata/SANA-WM-Bench METHODsana_wm_bidirectional_refined SPLIT_DIR${SPLIT_DIR:-benchmark_v2_smooth_60s} SPLIT_NAME${SPLIT_NAME:-simple_60s} export BENCH METHOD SPLIT_DIR SPLIT_NAME cd $REPO export PYTHONPATH$REPO:${PYTHONPATH:-} SCENE$($PY - PY import json import os from pathlib import Path bench Path(os.environ[BENCH]) split os.environ[SPLIT_DIR] idx int(os.environ[SLURM_ARRAY_TASK_ID]) rows [json.loads(line) for line in (bench / split / sanawm_export_v2/run_manifest.jsonl).read_text().splitlines() if line.strip()] print(rows[idx][id]) PY ) WORK$REPO/results/sana_wm_bench_inputs/$SPLIT_NAME/$SCENE OUT$REPO/results/$METHOD/$SPLIT_NAME mkdir -p $WORK $OUT export SCENE WORK OUT $PY - PY import json import os from pathlib import Path import numpy as np bench Path(os.environ[BENCH]) split os.environ[SPLIT_DIR] scene os.environ[SCENE] work Path(os.environ[WORK]) rows [json.loads(line) for line in (bench / split / sanawm_export_v2/run_manifest.jsonl).read_text().splitlines() if line.strip()] row next(r for r in rows if r[id] scene) traj np.load(bench / row[camera_path]) np.save(work / f{scene}_c2w.npy, traj[c2w]) np.save(work / f{scene}_intrinsics.npy, traj[intrinsics]) (work / f{scene}.txt).write_text(row[prompt], encodingutf-8) PY $PY inference_video_scripts/wm/inference_sana_wm.py \ --image $BENCH/images/$SCENE.png \ --prompt $WORK/$SCENE.txt \ --camera $WORK/${SCENE}_c2w.npy \ --intrinsics $WORK/${SCENE}_intrinsics.npy \ --num_frames 961 --fps 16 \ --step 60 --cfg_scale 5.0 --flow_shift 8.0 \ --sampling_algo flow_euler_ltx \ --seed 42 --refiner_seed 42 \ --no_action_overlay \ --output_dir $OUT \ --name $SCENE EOF mkdir -p logs sbatch --exportALL,SPLIT_DIRbenchmark_v2_smooth_60s,SPLIT_NAMEsimple_60s run_sana_wm_bench.sbatch sbatch --exportALL,SPLIT_DIRbenchmark_v2_hard_60s,SPLIT_NAMEhard_60s run_sana_wm_bench.sbatch每个 split 完成的标志是结果目录中出现80 个*_generated.mp4文件。脚本中的SLURM_ARRAY_TASK_ID直接作为 manifest 行索引行序即场景序与 eval_benchmark_poses.py 中按文件名scene_id_generated.mp4配对 manifest 的约定一致。指标家族与对比表列约定基准报告四类指标指标家族主输出说明VBencheval/split/vbench_scores.json及原始eval_*_eval_results.json基准表格使用 9 个 VBench 维度7 个质量维度加上overall_consistency与temporal_style重访一致性eval/split/revisit_consistency.json对轨迹重访帧对计算 PSNR、SSIM 与 LPIPS相机 / 姿态精度split/eval_poses.json用 Pi3X 估计姿态与基准相机路径对比聚合字段为RotErr、TransErr_rel、CamMC_rel时间退化eval/split/temporal_degradation.json按 10 秒窗口评估 VBench 质量衰减聚合Delta IQ为第一个窗口减去最后一个窗口的成像质量imaging quality对比表列约定务必照抄基准对比表的列定义有严格约定避免口径漂移VBench Overall取vbench_scores.json[quality_score] * 100。这是对可用质量维度做归一化后的视觉质量聚合值文档中79.55、81.10这类数值即来源于此VBench total_score仅作为 0-1 的原始诊断值保留。它包含了本次 9 维度运行中可用的语义维度不应作为表格的VBench Overall使用RotErr取eval_poses.json中平均RotErr单位度TransErr与CamMC分别取TransErr_rel与CamMC_rel的均值Delta IQ取temporal_degradation.json[trend][imaging_quality][degradation]。这些约定与源码实现一一对应VBench 的quality_score/total_score计算公式位于 eval_unified.py采用官方公式Total (4 × Quality 1 × Semantic) / 5其中dynamic_degree权重为 0.5见 eval_unified.py 的维度与权重定义姿态指标的聚合逻辑见 eval_benchmark_poses.py并按场景类型scene_type分类汇总。统一评估器VBench、重访一致性与时间退化评测使用仓库自带的 tools/metrics/sana_wm/ 目录下的评估脚本结果目录需符合如下布局results/sana_wm_bidirectional_refined/ |-- method_info.json |-- simple_60s/ | -- scene_id_generated.mp4 |-- hard_60s/ | -- scene_id_generated.mp4 -- eval/ |-- simple_60s/ -- hard_60s/务必用*_generated.mp4而非 overlay / 合成视频来跑指标。VBench 通过os.listdir发现视频目录中任何额外的 mp4 都会破坏“prompt 数与视频数匹配”的校验因此 eval_unified.py 会自动把_combined.mp4、_prompt.txt、_first_frame.png等副产物搬进_sidecars/子目录幂等操作。在仓库根目录运行统一评估器并显式传入基准元数据BENCHdata/SANA-WM-Bench METHOD_DIRresults/sana_wm_bidirectional_refined PYTHONPATH$PWD:${PYTHONPATH:-} python tools/metrics/sana_wm/eval_unified.py \ --method_dir $METHOD_DIR \ --split simple_60s \ --benchmark_meta $BENCH/benchmark_v2_smooth_60s/scene_trajectories_v2.json \ --metrics vbench revisit temporal \ --vbench_dims \ subject_consistency background_consistency temporal_flickering \ motion_smoothness dynamic_degree aesthetic_quality imaging_quality \ overall_consistency temporal_style \ --revisit_lpips \ --window_sec 10 \ --skip_first_frame auto PYTHONPATH$PWD:${PYTHONPATH:-} python tools/metrics/sana_wm/eval_unified.py \ --method_dir $METHOD_DIR \ --split hard_60s \ --benchmark_meta $BENCH/benchmark_v2_hard_60s/scene_trajectories_v2.json \ --metrics vbench revisit temporal \ --vbench_dims \ subject_consistency background_consistency temporal_flickering \ motion_smoothness dynamic_degree aesthetic_quality imaging_quality \ overall_consistency temporal_style \ --revisit_lpips \ --window_sec 10 \ --skip_first_frame auto各指标在源码中的实现要点--skip_first_frame auto因为 refiner 只精修第 1..T-1 帧、第 0 帧是输入图的拷贝若把首帧纳入评估会引入“闪烁/接缝”偏差令视觉指标虚高。eval_unified.py 中auto会读取method_info.json只要其中含refiner键就自动剔除首帧对结果在线处理不修改原始输出缓存于_stripped_videos/见 eval_unified.py重访一致性从scene_trajectories_v2.json的evaluation_pairs中按quality_score排序取每场景最多 5 对--max_pairs计算 PSNR / SSIM并支持--revisit_lpips用 AlexNet-LPIPS 就地升级缓存eval_unified.py。重访帧对本身不含第 0 帧因此该指标不受 skip-first-frame 影响时间退化按--window_sec 10把每段视频切成 10 秒窗口对每个窗口独立跑 VBench 的 4 个默认维度subject_consistency、background_consistency、temporal_flickering、imaging_quality见 eval_unified.py趋势trend[dim]记录首窗口、末窗口与差值degradationeval_unified.py断点续跑eval_unified.py对 VBench 的原始结果文件、重访一致性场景级缓存revisit_cache/均支持复用summary.json写入前还会合并磁盘上已有的指标块避免长时间运行的时间退化任务覆盖并发完成的 vbench 块eval_unified.py。相机姿态精度评估GPU 密集独立 8-GPU 任务相机精度由 GPU 承载应作为独立的 8-GPU Slurm 作业运行。从仓库根目录运行姿态脚本并指向已下载的基准 manifestcat run_sana_wm_pose_eval.sbatch EOF #!/usr/bin/env bash #SBATCH --job-nameswm_pose80 #SBATCH --accountaccount #SBATCH --partitiongpu-partition #SBATCH --gresgpu:8 #SBATCH --cpus-per-task64 #SBATCH --mem500G #SBATCH --time16:00:00 #SBATCH --outputlogs/%x_%j.out set -euo pipefail PY/path/to/python ACCEL/path/to/accelerate REPO/path/to/Sana BENCHdata/SANA-WM-Bench METHOD_DIR/path/to/results/sana_wm_bidirectional_refined cd $REPO export PYTORCH_CUDA_ALLOC_CONFexpandable_segments:True run_pose() { local split$1 local split_dir$2 $ACCEL launch --num_processes8 --mixed_precisionbf16 \ tools/metrics/sana_wm/eval_benchmark_poses.py \ --result_folder $METHOD_DIR/$split \ --manifest $BENCH/$split_dir/sanawm_export_v2/run_manifest.jsonl \ --interval 4 \ --batch_size 1 \ --output $METHOD_DIR/$split/eval_poses.json \ --skip_first_frame auto } run_pose simple_60s benchmark_v2_smooth_60s run_pose hard_60s benchmark_v2_hard_60s $PY tools/metrics/sana_wm/aggregate_results.py \ --results_root $(dirname $METHOD_DIR) \ --json_out $METHOD_DIR/metrics_80scene/aggregate_results.json \ --md_out $METHOD_DIR/metrics_80scene/aggregate_results.md EOF mkdir -p logs sbatch run_sana_wm_pose_eval.sbatch姿态评估的源码原理eval_benchmark_poses.py 的运行机制模型与精度默认加载yyfz233/Pi3权重--pi3_ckpt在 8 卡上通过accelerate的split_between_processes分发场景dtype 依据 GPU 算力自动选择 bf16算力 ≥ 8或 fp16eval_benchmark_poses.py帧采样--interval 4控制 Pi3 的帧采样间隔GT 轨迹按同样间隔子采样以对齐eval_benchmark_poses.py首帧处理与 VBench 同理--skip_first_frame auto会依据method_info.json中的refiner键决定是否剔除首帧frame 0 姿态平凡正确会乐观抬高分数并把模式标记写入每个场景记录skip_first_frame字段见 eval_benchmark_poses.py相对化与对齐估计姿态与 GT 姿态都先做 first-frame 相对化relative_pose(poses, left)再经 pose_utils.py 的metric()做 Umeyama 类姿态对齐估计尺度、SVD 旋转对齐后输出三组误差旋转测地误差RotErr度、平移误差TransErr_rel、相机运动误差CamMC_rel12 维位姿向量的二范数缓存与单位eval_poses.json支持缓存续跑且强制RotErr_unit deg旧缓存若以弧度记录会被判定失效剔除eval_benchmark_poses.py可选轨迹导出加--dump_trajectories可把相对化后的 Pi3 / GT 轨迹导出为 NPZresult_folder/trajectories/便于外部三维绘图不做额外对齐归一化。结果聚合与对比表生成最终聚合产物为metrics_80scene/aggregate_results.json与metrics_80scene/aggregate_results.md由 aggregate_results.py 生成。SANA-WM 自身行只应包含simple_60s与hard_60s两个 split。聚合脚本的核心逻辑aggregate_results.py逐方法 × split 收集VBench依次回退读取summary.json的vbench块 →vbench_scores.json→ 从原始eval_*_eval_results.json重算_recompute_vbench_from_raw保证即使summary.json被后续指标运行覆盖也能恢复aggregate_results.py重访一致性revisit_consistency.json的summary含 per-category 分解相机split/eval_poses.json按场景聚合均值并按scene_type分类输出每类的rot_err_deg/trans_err_rel/cam_mc_rel同样兼容旧弧度缓存_rot_errors_as_degrees时间退化temporal_degradation.json的trend记录imaging_quality的首窗口、末窗口与衰减量。生成的 Markdown 对比表每列带有方向箭头约定↑ 越高越好↓ 越低越好例如RotErr°↓、TransErr_rel↓、CamMC_rel↓、Temp IQ first | last | drop。注意聚合表默认把VBench Total展示为 0-1 的total_score诊断口径而对外对比表应遵循上一节“列约定”中的VBench Overallquality_score * 100口径。评测流程中的关键经验与注意事项视频必须干净只用*_generated.mp4参与评测overlay / 合成视频会污染 VBench 的 prompt-视频计数校验和视觉指标首帧效应是真实偏差源双向管线 LTX-2 refiner 只精修 1..T-1 帧frame 0 为输入图拷贝。VBench / 时间退化 / 姿态评估都要用--skip_first_frame auto或显式yes而重访帧对本身不含 frame 0无需处理结果目录与仓库根目录的关系eval_unified.py通过PROJECT_ROOT自动定位仓库根并插入sys.patheval_unified.py同时尝试从local_libs/VBench或 pip 安装位置解析VBench_full_info.json因此建议从仓库根目录运行并保证 VBench 可导入度量口径以文档约定为准VBench Overallquality×100与total_score0-1 诊断值是两个不同口径对比表中前者用于对外展示后者仅作内部诊断manifest 与元数据是评测的事实来源推理取 prompt 与相机路径、姿态评估取 GT 轨迹、VBench 取真实文本提示词全部来自run_manifest.jsonl与scene_trajectories_v2.json不要手工拼写场景文件路径避免与数据集发布范围80 场景、仅 60s、仅 Sana-WM 导出不一致。参考文档与源码入口基准主文档docs/sana-wm-bench.mdSANA-WM 总览与推理参数参考docs/sana_wm.md双向推理脚本inference_video_scripts/wm/inference_sana_wm.py流式推理脚本inference_video_scripts/wm/inference_sana_streaming.py与inference_video_scripts/wm/inference_sana_wm_streaming.py同目录族统一评估器tools/metrics/sana_wm/eval_unified.py相机姿态评估tools/metrics/sana_wm/eval_benchmark_poses.py姿态度量工具tools/metrics/sana_wm/pose_utils.py结果聚合tools/metrics/sana_wm/aggregate_results.py【免费下载链接】SanaSANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformer项目地址: https://gitcode.com/GitHub_Trending/sana/Sana创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考