CameraBench
相机运动理解 benchmark,WorldFoundry 提供仓内结果聚合入口。
简介
CameraBench 评估视频模型是否真正理解相机运动,而不是只生成视觉上好看的片段。它关注 pan、tilt、roll、zoom、tracking、follow 等运动,并判断生成或检索到的视频是否匹配目标相机行为。
该 benchmark 来自 CameraBench 项目与论文 "Towards Understanding Camera Motions in Any Video"。公开版本包含 Hugging Face 上的 test split,以及用于相机运动判断的 fine-tuned Qwen2.5-VL 模型。WorldFoundry 不要求用户获取外部源码树:结果导入和指标聚合代码已经在仓内,路径是 worldfoundry/evaluation/tasks/execution/runners/camerabench/。
当前 WorldFoundry 覆盖的是可复现的聚合阶段。你需要提供官方 CameraBench 结果 JSON,或者已经生成好的 CameraBench score_dir,WorldFoundry 会输出统一的 scorecard。从视频生成原始 CameraBench score JSON 仍需要准备 CameraBench scorer 资产和下面列出的 fine-tuned VLM checkpoint。
官方参考
| 资源 | 链接 |
|---|---|
| 项目页 | linzhiqiu.github.io/papers/camerabench |
| 论文 | arXiv:2504.15376 |
| GitHub | github.com/sy77777en/CameraBench |
| HF 数据集 | syCen/CameraBench |
| 仓内 runner | worldfoundry/evaluation/tasks/execution/runners/camerabench/run_camerabench_official_runner.py |
需要准备什么
数据集
从 Hugging Face 下载公开测试资产:
hf download syCen/CameraBench \
--repo-type dataset \
--local-dir /path/to/datasets/CameraBench本地根目录应包含测试元数据和视频资产:
/path/to/datasets/CameraBench/
|-- test.jsonl
`-- videos_gif/
|-- *.gif
`-- ...运行时通过 WORLDFOUNDRY_CAMERABENCH_DATA_ROOT 或 --benchmark-data-root 指向这个目录。
Scorer Checkpoint
CameraBench 报告使用 fine-tuned Qwen2.5-VL camera-motion 模型。把 checkpoint 下载到你的模型缓存或共享 checkpoint 目录:
hf download chancharikm/qwen2.5-vl-7b-cam-motion --local-dir /path/to/checkpoints/qwen2.5-vl-7b-cam-motion
hf download chancharikm/qwen2.5-vl-32b-cam-motion --local-dir /path/to/checkpoints/qwen2.5-vl-32b-cam-motion
hf download chancharikm/qwen2.5-vl-72b-cam-motion --local-dir /path/to/checkpoints/qwen2.5-vl-72b-cam-motionWorldFoundry 的 worldfoundry/base_models/ 中已经有可复用的 Qwen/VQAScore 基础设施。checkpoint 建议放在源码树外,除非你正在制作本地发布包。
Score Directory
仓内 CameraBench runner 消费已经准备好的 JSON score 文件。文件名应符合:
/path/to/camerabench/score_dir/
|-- classification_scores_*.json
|-- vqa_retrieval_scores_*.json
`-- caption_results_*.json每个文件需要包含顶层 scores list,可选 metadata 字段包括 model_name、checkpoint、split_name。这些文件对应官方 CameraBench 的三个指标族:二分类相机运动判断、VQA/retrieval、caption matching。
运行评测
聚合已经准备好的 Score Directory
export WORLDFOUNDRY_CAMERABENCH_DATA_ROOT=/path/to/datasets/CameraBench
export WORLDFOUNDRY_CAMERABENCH_SCORE_DIR=/path/to/camerabench/score_dir
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/camerabench/run_camerabench_official_runner.py \
--score-dir "${WORLDFOUNDRY_CAMERABENCH_SCORE_DIR}" \
--benchmark-data-root "${WORLDFOUNDRY_CAMERABENCH_DATA_ROOT}" \
--task all \
--mode both \
--output-dir tmp/camerabench/score-dir \
--json只跑部分指标时,把 --task 改成 binary、vqa_retrieval 或 caption。Caption matching 如果要用 API-backed judge,可以传 --openai-api-key "$OPENAI_API_KEY";如果你的本地复现只覆盖 binary 和 VQA/retrieval,可以不跑 caption。
使用公开 CLI
worldfoundry-eval zoo benchmark-run \
--benchmark-id camerabench \
--mode official-validation \
--score-dir "${WORLDFOUNDRY_CAMERABENCH_SCORE_DIR}" \
--benchmark-data-root "${WORLDFOUNDRY_CAMERABENCH_DATA_ROOT}" \
--output-dir tmp/camerabench/score-dir-cli \
--json导入已有官方结果
worldfoundry-eval zoo benchmark-run \
--benchmark-id camerabench \
--mode official-validation \
--official-results-path /path/to/camerabench_results.json \
--benchmark-data-root "${WORLDFOUNDRY_CAMERABENCH_DATA_ROOT}" \
--output-dir tmp/camerabench/imported \
--json当你已经有一次 CameraBench 评测输出的 JSON,只需要把它转换成 WorldFoundry 统一 scorecard 时,使用这个路径。
指标
| Metric | 含义 |
|---|---|
camera_motion_average_precision | 二分类相机运动判断的 mean average precision。 |
camera_motion_roc_auc | 二分类相机运动判断的 ROC-AUC。 |
camera_vqa_accuracy | CameraBench yes/no 与 question-level VQA accuracy 的平均。 |
camera_retrieval_accuracy | text、image、group retrieval accuracy 的平均。 |
camera_caption_score | 已准备 CameraBench caption 输出中的 caption agreement 分数。 |
camerabench_average | 可用 CameraBench 指标族的平均值。 |
输出
runner 会写出:
scorecard.jsoncamera_predictions.jsonlraw_metric_table.jsonlupstream_stdout.logupstream_stderr.log
如果要做 leaderboard 级别复现,需要确认本地 dataset root 覆盖完整 test split,并且 score directory 包含你要报告的全部指标族。