基于 microsoft/AnthropomorphicIntelligence/Proact-VL (MIT) 的验证/评估实现, 以及一个 Colab 可直接运行的 notebook。
anthro_test/
├── ProactVL_validation_colab.ipynb # Colab 版 (上传即跑)
├── proactvl_stream_infer.py # 开源 VLM 流式生成 (Proact-VL 行为近似, 输出官方 pred jsonl)
└── proactvl_eval/ # 本地验证代码包 (官方评估脚本的独立移植)
├── f1_only.py # F1 (说话秒重合度), 无需 API
├── f1_timediff.py # F1 + Time-Diff (时序偏差), 无需 API
├── llm_score.py # LLM Score (LiveU/FinalQ), 需 judge API
├── llm_judge.py # CC win-rate (对 baseline A/B), 需 judge API
├── pauc.py # PAUC 渐进式 AUC, 需 judge API
├── label_streaming2standard.py # 长视频逐秒结果 -> 30s 段
├── summary_llm_score.py # llm_score 输出按 tag 汇总
├── gpt_client_utils.py # GPT 客户端 (OPENAI_AUTH_MODE=api_key)
├── multiprocessor.py # local_mt (官方 proactvl.utils 移植)
└── run_validation.py # 一站式验证入口 + 汇总表
pip install openai tqdm # F1/TimeDiff 零依赖 (纯标准库)
# 本地: 逐秒流式分析自己的视频 (衣物投放计数)
python proactvl_stream_infer.py --video my.mp4 --task count --scene "衣物投放" \
--begin 0 --end 60 --gt_count 3 --out count.jsonl
# 一站式验证: 自动跑 F1 + TimeDiff; 有 API key 时追加 LLM 指标
OPENAI_AUTH_MODE=api_key OPENAI_API_KEY=sk-... OPENAI_API_BASE=... \
python -m proactvl_eval.run_validation \
--pred pred.jsonl \
--reference anns/all_in_one_val_proactive.jsonl \
--asr_jsonl anns/all_in_one.jsonl \
--baseline_id gemini2.5-pro --baseline_jsonl baseline/captions/gemini-2.5-pro.jsonl \
--judge_model gpt-4o --judge_limit 50 --out_dir eval_out
环境变量: OPENAI_AUTH_MODE=api_key, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_JUDGE_MODEL。
数据: hf download oaaoaa/proactvl_results --repo-type dataset (标注 anns + 官方 baseline 预测), 视频集 oaaoaa/LiveGamingBenchmark。
上传 ProactVL_validation_colab.ipynb 到 Colab, 顺序运行:
MODE='baseline'): 官方 baseline 预测 + 全部指标。F1/TimeDiff 无 key 也可跑; 填 OpenAI 兼容 key 后追加 LLM Score / CC / PAUC。MODE='generate'): 挂 GPU, 用 proactvl_stream_infer.py (内嵌在 notebook 中) 以 Qwen2.5-VL-3B 对 LiveGamingBenchmark 逐秒生成 Proact-VL 风格主动解说, 再跑同一套指标。MODE='custom'): 上传自己的视频逐秒流式分析 (notebook 内置 files.upload() 弹框上传, 或把视频放进 Colab 左侧 Files / Drive)。MY_TASK='count' 统计投放事件数 (如"用户投了几件衣服"), 可填 MY_GT_COUNT 自动核对。前置: HuggingFace 自动授权数据集需先在网页接受条款, 配置任意有效 HF token。
{"video_id": "major2024_game_11.mp4", "dataset_name": "CSGO",
"begin": 0, "end": 30, "idx": 0, "tag": "Solo commentators",
"model_id": "...", "pred": {"3": "解说文本", "7": "..."}}
pred: 仅含"说话秒", 缺失秒 = 沉默 (f1_only 按 dict 键统计; 与官方 quickstart 语义一致)。*_val_proactive.jsonl): 同键 + label (逐秒 dict)。all_in_one.jsonl): video_path/video_begin/video_end/dataset_name/idx/active_speaker/annotations/history, llm_score/llm_judge 按 basename(video_path)_begin_end_dataset_idx 与预测对齐。oaaoaa/proactvl_base_*) 处于合规审查期, 公开渠道不可下载; 本地/Colab 的"生成"路径均为开源 VLM 近似, 指标结果只能作横向对比, 非官方成绩。--task count 是逐秒事件检测 + 客户端去重合并, 对小物体/遮挡场景可能漏计; 可调 --merge_gap 0 (不合并)、--fps 4 (更密采样) 或换 7B 模型 (--load_in_4bit)。OPENAI_JUDGE_MODEL 覆盖)。