sequoia 8e8c1297b0 init 3 週間 前
..
proactvl_eval 8e8c1297b0 init 3 週間 前
ProactVL_validation_colab.ipynb 8e8c1297b0 init 3 週間 前
README.md 8e8c1297b0 init 3 週間 前
proactvl_stream_infer.py 8e8c1297b0 init 3 週間 前

README.md

Proact-VL 验证代码 (anthro_test)

基于 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。

Colab 使用

上传 ProactVL_validation_colab.ipynb 到 Colab, 顺序运行:

  • Mode A (MODE='baseline'): 官方 baseline 预测 + 全部指标。F1/TimeDiff 无 key 也可跑; 填 OpenAI 兼容 key 后追加 LLM Score / CC / PAUC。
  • Mode B (MODE='generate'): 挂 GPU, 用 proactvl_stream_infer.py (内嵌在 notebook 中) 以 Qwen2.5-VL-3B 对 LiveGamingBenchmark 逐秒生成 Proact-VL 风格主动解说, 再跑同一套指标。
  • Mode C (MODE='custom'): 上传自己的视频逐秒流式分析 (notebook 内置 files.upload() 弹框上传, 或把视频放进 Colab 左侧 Files / Drive)。MY_TASK='count' 统计投放事件数 (如"用户投了几件衣服"), 可填 MY_GT_COUNT 自动核对。

前置: HuggingFace 自动授权数据集需先在网页接受条款, 配置任意有效 HF token。

数据格式 (官方 pred jsonl, 每行一段视频)

{"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 语义一致)。
  • reference (*_val_proactive.jsonl): 同键 + label (逐秒 dict)。
  • ASR 标注 (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 与预测对齐。

已知限制

  • 官方 Proact-VL 权重 (oaaoaa/proactvl_base_*) 处于合规审查期, 公开渠道不可下载; 本地/Colab 的"生成"路径均为开源 VLM 近似, 指标结果只能作横向对比, 非官方成绩。
  • --task count 是逐秒事件检测 + 客户端去重合并, 对小物体/遮挡场景可能漏计; 可调 --merge_gap 0 (不合并)、--fps 4 (更密采样) 或换 7B 模型 (--load_in_4bit)。
  • LLM 指标与 judge 模型强相关 (官方流水线用 gpt-5.1 系列, 可用 OPENAI_JUDGE_MODEL 覆盖)。