feat: add person fusion screening variants
This commit is contained in:
@@ -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 批量提取、
|
||||
|
||||
@@ -22,8 +22,10 @@
|
||||
才实施。
|
||||
|
||||
实现状态(2026-09-02):F1 的 loader、head、train/infer 路径和回归测试已经加入代码,
|
||||
但尚未在远程 PyTorch/L20 环境完成 runtime smoke,不能写成已验证结果。F2--F6 和 D1
|
||||
仍然只是计划。
|
||||
但尚未在远程 PyTorch/L20 环境完成 runtime smoke,不能写成已验证结果。另加入两个仅用
|
||||
当前 sidecar 的 F5/F6 **screening** 模式:`audio-person-frame-set` 和
|
||||
`gated-person-state-adapter`。前者没有 F4 人物历史,后者位于 Thinker readout 之后;二者
|
||||
都不能写成完整 F5/F6。F2--F4、真正的 F5/F6 和 D1 仍然只是计划。
|
||||
|
||||
## 2. 不可改变的实验条件
|
||||
|
||||
@@ -214,6 +216,10 @@ G+A floor query 读取。
|
||||
F5 可增加一次 audio query 到人物 memory 的反向读取,形成单块双向 interaction。必须和
|
||||
参数匹配 MLP、单向 F4、modality dropout 做比较。若收益不稳定,保留 F4。
|
||||
|
||||
代码中的 `audio-person-frame-set` 只用当前帧人物集合和当前 pooled audio 做上述反向读取,
|
||||
并以零初始化 gate 从 F1 开始优化。它用于判断是否值得继续构建 F3/F4 历史,不满足本节
|
||||
完整 F5 的输入和对照要求。
|
||||
|
||||
F6 才把验证过的人物 memory 通过零初始化 gate 接入 Thinker 上层,并比较:
|
||||
|
||||
- 无人物 memory 的参数匹配 Thinker LoRA;
|
||||
@@ -222,6 +228,10 @@ F6 才把验证过的人物 memory 通过零初始化 gate 接入 Thinker 上层
|
||||
|
||||
若 F6 不优于旁路,不为追求端到端表述牺牲可解释性,论文采用更简单的旁路模型。
|
||||
|
||||
代码中的 `gated-person-state-adapter` 把当前人物 context 以零初始化 residual 加到已经保存
|
||||
的最终 Thinker state,只是 post-Thinker screening control。真正 F6 必须重新运行 Omni、
|
||||
在指定上层 transformer block 内注入 memory,并和参数匹配 LoRA 比较。
|
||||
|
||||
## 10. D1:实际在线检测与追踪
|
||||
|
||||
方法验证阶段先使用数据集提供的 bbox/track,隔离融合能力。最终再替换为在线人脸或人物
|
||||
|
||||
Reference in New Issue
Block a user