feat: add person fusion screening variants

This commit is contained in:
Xin Wang
2026-09-06 21:48:32 +08:00
parent 8e70281330
commit b91a24f308
8 changed files with 447 additions and 47 deletions
+34
View File
@@ -195,6 +195,40 @@ F1 用融合后的 G 和直接局部音频 A 构造一个 query,读取当前
正式比较需要重新训练同 split、seed 和优化设置的 pooled AV 对照,不能直接把不同开发
协议的旧 checkpoint 当作唯一基线。
## 5. F5/F6 screening variants
当前 local sidecar 没有 F3/F4 所需的逐 track 人物历史,预计算的 `states` 也已经位于
Thinker readout 之后。因此下面两项是用于快速筛选的旁路实验,不是路线文档中完整的
F5/F6:
- `audio-person-frame-set`:在 F1 前增加一个 audio-only query 对当前人物集合的读取,
通过零初始化标量 gate 加到 G+A floor query;初始函数与 F1 相同。这是 F5 的
current-frame screening,不含 person-conditioned 5 Hz audio/Omni history。
- `gated-person-state-adapter`:F1 先选择当前人物证据,再通过零初始化标量 gate 将
residual 加到最终 frozen Thinker state。它位于 Thinker **之后**,只能叫 F6 screening,
不能叫 Thinker internal adapter 或 end-to-end Omni adaptation。
两项都继续使用当前 `persons`、audio、5 Hz cutoff 和 NULL-person 合约,无需重新提取
局部特征。训练会逐 epoch 打印 `person_gates`,checkpoint/metrics 会记录明确的
`local_fusion_scope`。运行入口:
```bash
export FEATURE_ROOT=/data1/yfzx/wangx/Datasets/easycom/omni_features/open_stream_2fps_8s_last4_stack
export TARGET_ROOT=/data1/yfzx/wangx/Datasets/easycom/easycom_target_frame
export LOCAL_ROOT=/data1/yfzx/wangx/Datasets/easycom/omni_features/local_qwen_1s_encoded_tf4576
# F1、F5 screening、F6 screening;每项 seed 0/1/2,前台顺序执行。
CUDA_VISIBLE_DEVICES=0 bash run_easycom_person_fusion_screening.sh all 0 1 2
# 也可把互不重复的 variant/seed 分配到不同 GPU。
SUMMARIZE=0 CUDA_VISIBLE_DEVICES=1 bash run_easycom_person_fusion_screening.sh f5-screen 0
```
脚本固定 Session 4--11 训练、Session 12 开发选 checkpoint,并输出 Session 1--3 的
exploratory dense mAP 与 `pred/valid`。事件协议冻结前,不能按现有 timing proxy 选择这些
模块;完整 F5 仍需 causal person history,完整 F6 仍需进入 Thinker 上层并与 LoRA 控制
比较。
## Ego4D 接口
完整命令见 [Ego4D 四组局部增强实验](ego4d_local_baselines.md):新增 manifest 批量提取、