# 可训练的多人 AV 融合:从视觉证据到 wearer 开口预测 日期:2026-08-28。状态:研究方案,尚未实现、训练或验证。 本文扩展[逐人 Thinker 与事件评测计划](speaker_aware_thinker_plan_2026-08-28.md),不再限定 train-free。 本轮只检查本地代码及公开一手文献,没有访问远程 GPU、下载模型、改变训练配置或提交 Git。 ## 1. 研究目标与需要区分的变量 目标:在相同 wearer 开口事件召回率下,正确视觉降低第三方交谈期间的错误开口预测;同时,对 wearer 讲话的片段中,接话召回及提前量不退化。 这是离线行为预测目标,不等于已经证明 agent 会礼貌地选择不插话。 不要把以下四个轴混为一次实验: 1. 信息结构:人物平均,还是保留逐人身份、空间位置和时间。 2. 时序模型:单帧 MLP,还是有限历史 GRU/TCN/因果 attention。 3. 融合位置:最终 head,还是 Thinker 内部。 4. 监督:三路未来活动,还是额外的逐人活动、讲话对象及 wearer onset。 “换成 RNN”不自动找回已经被人物平均抹掉的信息;“放入 Thinker”也不自动获得 AV 对齐。 主要问题应是 **speaker/addressee-conditioned forecasting**,而不是预先指定必须由大模型胜出。 ## 2. 已有实现与资产 - `extract_turn_local_features.py::extract_local`:`persons.features` 保存逐张 crop 的 2048D 空间池化向量;另有 `frame_times/frame_offsets/records`。可以先复用,不必重新提取全部局部特征。 - 现有 `visual` 又经过人物平均与最近 1s 时间平均;当前 `TurnPredictionHead` 是投影、拼接、MLP,没有逐人 RNN。 - `audio` 是最近 1s **混合音频**的编码器池化,每 200ms 更新;不是每人独立麦克风或分离音源。 - G 已经包含全局音视频。G+A 不是 audio-only;G+A+V 对 G+A 只能证明额外局部视觉的价值。 - `train_omni_turn_lora.py` 已有 PEFT、末 N 层 LoRA、gradient checkpointing、torchrun/DDP、冻结 Thinker 对照;`omni_cached_av.py` 可重建 pre-Thinker AV 序列。 - 该入口尚不包含本文提出的逐人 memory adapter、addressee loss 或事件评测。代码存在不代表已完成 L20 验证。 - 最终 G 状态 `.pt` 不能用来反向训练生成它的 Thinker。需要 pre-Thinker AV 缓存或在线编码;缓存的 encoder 若要训练,就必须重新在线计算。 现有单 seed 结果:G+A wearer AP 85.06554,G+A+V 85.08583,仅差 0.02029 个百分点;不能据此证明视觉社会理解。详见[完整记录](../results/easycom_encoder_only_1s_4ep_2026-08-28/README.md)。 ## 3. 直接相关文献及其适用边界 各独立笔记在[文献目录](../literature_notes/README.md),均标明阅读深度。以下是研究设计所用的证据,不是对我们数据集效果的承诺。 | 方法 / 发表信息 | 借鉴点 | 不应直接搬用的条件 | |---|---|---| | [MuVAP](https://arxiv.org/html/2606.16731),作者仓库标注 Interspeech 2026 | 单路混合音频、逐人视觉、因果多人预测;最接近的结构性相关工作 | 官方仓库仍为 code coming soon;外部 ASD/VAP 预训练;第三人称可见人物设定,不直接覆盖不可见 wearer | | [SICNet](https://www.amazon.science/publications/long-term-social-interaction-context-the-key-to-egocentric-addressee-detection),ICASSP 2024 | 第一视角 talking-to-me 与较长社会上下文 | 使用转写、提供的 diarization/框;在话语结束处分类,不是连续提前预测 | | [AV-Dialog](https://aclanthology.org/2026.acl-long.1954/),ACL 2026 主会 | 将视觉目标人跟踪、流式理解和轮次事件共同训练 | 指定目标人的干扰对话不等同于自由多人分配;大规模预训练不适合作为本项目起点 | | [FLoRA](https://www.isca-archive.org/interspeech_2024/palaskar24_interspeech.html),Interspeech 2024 | 模态适配器、缺失模态处理;固定拒绝率报告误接受率 | BART/T5 和私有 device-directed 数据;不是 Qwen 插件或 wearer 事件预测 | | [Whisper-Flamingo](https://www.isca-archive.org/interspeech_2024/rouditchenko24_interspeech.html),Interspeech 2024 | 在强音频模型内部通过零初始化门控 cross-attention 学习视觉增量 | 原任务是 AVSR/翻译;不是已验证的在线接话模型 | | [LoCoNet](https://arxiv.org/html/2301.08237),CVPR 2024 | 逐人时间结构与跨人互动;可用作专门 ASD 编码路线 | 原模型整段预测不等于流式因果;需要审计/修改 temporal conv 和 attention | | [MBT](https://proceedings.neurips.cc/paper/2021/hash/76ba9f564ebbc35b1014ac498fafadd0-Abstract.html),NeurIPS 2021;[LAVISH](https://openaccess.thecvf.com/content/CVPR2023/html/Lin_Vision_Transformers_Are_Parameter-Efficient_Audio-Visual_Learners_CVPR_2023_paper.html),CVPR 2023 | 少量 latent token 限制融合成本、保留各模态支路 | 分类任务结构启发,不是接话预测证据 | | [InfoReg](https://openaccess.thecvf.com/content/CVPR2025/html/Huang_Adaptive_Unimodal_Regulation_for_Balanced_Multimodal_Information_Acquisition_CVPR_2025_paper.html),CVPR 2025;[InfoBridge](https://openaccess.thecvf.com/content/ICCV2025/html/Li_InfoBridge_Balanced_Multimodal_Integration_through_Conditional_Dependency_Modeling_ICCV_2025_paper.html),ICCV 2025 | 模态竞争、过度对齐及互补信息保护 | 不能因我们 A 强就断言发生了优化失衡;冻结特征头与端到端 encoder 调节不同 | 另外筛选了 triadic VAP、gaze-enhanced turn-taking、噪声下视觉接话、3M-Transformer 和 LoRA-adapted MM-VAP。逐人麦克风、眼动仪、多视角以及非因果窗口均必须作为额外条件列明,而不能冒充单路 AV 基线。 ### 最重要的新颖性限制 MuVAP 已经涉及单路音频、逐人视觉和多人未来活动;MSA 已有 speaker-aware attention。 因此“局部 crop + cross-attention/LoRA”本身不足以成为完整贡献。 我们的待验证差异是:不可见 wearer 的第一视角、对 wearer / 对第三方的关系、真实提前量,以及召回受约束的误开口评测。 是否达到某会议发表标准仍取决于实验质量、泛化和新颖性复核。 ## 4. 路线 A:逐人因果时序旁路,优先实施 ### 输入和结构 对每个时刻 t,读取截至 t 的 `persons`,按连续片段内的 local track 整理为人物序列,保留缺失 mask、框坐标和观测年龄。 使用同一组权重编码各人物,避免把 Session_4 的某个身份编号学成固定说话倾向。 ```text 逐人 crop 向量 + bbox + 有效性/观测年龄 → 共享的有限历史 GRU / causal TCN → 当前及历史人物 token 近期混合音频 + 全局 G → query → 对人物 token 的 cross-attention → 逐人发声 / 对 wearer 讲话的辅助预测 → gated residual → 未来活动与 wearer onset/offset ``` 建议第一版 d=256、1 层 GRU 或 2 层小型 attention、8s 有限历史。它们是工程初值,不是已调优配置。 GRU 必须从每个有限窗口起点重建状态,或另行标注持续记忆条件;仅 detach 梯度并不会把推理记忆限制在 8s。 第一轮仅把当前 G(t) 作为全局 query,不再对过去一串 G 做 RNN,否则每个 G 自带的历史会扩大有效上下文。 局部音频向量本身含 1s 历史;选择过去向量时要检查其原始波形起点,而非只看向量的结束时间。 必须另做相同有效历史的 G+A temporal 基线,防止把额外音频历史收益误归因于视觉。 2Hz 视觉在 5Hz 输出间使用最近可用观测及 age/mask,不能将重复的画面称为新的 200ms 视觉信息。 音频每人分支可以共享同一混合表示,但不能把它说成多个分离音源。 保持 G+A 基线作为残差起点: `logits(t) = logits_GA(t) + gate(t) * delta_relation(t)` gate 由输入预测,不由测试真值决定;增量可正可负。不能写成“别人讲话则禁止 wearer 开口”,因为真实对话有 overlap 和 backchannel。 先固定 G+A 分支训练增量,随后将联合训练作为单独消融。零初始化增量能保持初始基线,但不保证训练后的不退化。 ### 训练目标 第一阶段只改变表示/结构,保持现有活动 loss。 第二阶段按顺序加入监督,而不是一次叠加多个新项: 1. 逐人当前活动 BCE:教会视觉与混合音频关联;overlap 是多标签。 2. 讲话对象监督:wearer / another participant / group / none,未知标注 mask;不要把 group 或缺失合并为负例。 3. wearer 专属 onset/offset:只针对 wearer 变化,区别于 R1/R2 的任意三路标签变化。 可用 `L_activity + λ_asd L_asd + λ_addr L_addr + λ_event L_event`,逐项 ablate、在训练侧确定系数。 不沿用“pos_weight=3 一定合适”的假设,先统计各监督的正例率与有效覆盖。 事件 head 可预测未来 K 个 200ms bin 内“第一次 onset”的 K+1 分类(含窗口内不开口),或离散 hazard。 “未来某点正在说话”和“未来发生开口”不是同一标签。onset 在当前静默的风险集训练/评测,offset 则相反。 这些真值风险集只用于监督/分析;实际系统不能查询未来/当前标注来触发决策。部署时需要预测状态或已知的 agent 自身发声状态。 ### 何时放弃复杂化 若逐人分支对 ASD/讲话对象都没有可用预测能力,先查身份/时刻对齐、裁剪范围和视觉表示。 若辅助任务可行但 wearer 不改善,则应检查这些关系是否真正提供额外预测信息,而不是继续增加模型参数。 ## 5. 路线 B:把局部证据放进 Thinker,作为主方法候选 ### B1:有限 local memory + 门控 cross-attention 保留全局 AV 输入,把最近逐人向量组成独立 local memory,经共享投影与小型 resampler 压缩成有限 token。 保持人物身份边界;例如每人 4 个 latent,4 人约 16 个,加一组近期音频 token。 最初可用已有 pooled 向量;更细版本才重新缓存空间 token。可训练投影能适配 pooled 特征,但无法还原被池化丢失的信息。 在 Thinker 最后若干层加入: `h' = h + tanh(alpha) * CrossAttention(LN(h), local_memory)` alpha 初值为 0,先只训练 local adapter 和输出 head。 优先尝试仅作用于临时 readout query 的版本,让局部记忆影响本次读出,不回写历史 media KV;与“所有 token 都融合”分列实验。 memory 使用独立时间/track 编码及可用性 mask,不伪装成原视频网格位置。借鉴 Flamingo/Whisper-Flamingo 的结构,不声称这是原生 Qwen 功能。 ### B2:adapter + 末层 LoRA B1 有效后,再对最后 4 层 q/v 投影做 rank=8 LoRA;rank=16、最后 8 层为预算允许时的扩展。 额外必要基线:相同 LoRA、不输入局部人物特征。否则无法判断收益来自普通任务微调还是局部 AV。 训练只使用同一时刻的历史前缀,不在权重更新后复用旧权重产生的 Thinker KV。 冻结 AV encoder 可用现有 pre-Thinker cache;最终状态 cache 不可替代。 另可试输入端局部 prefix/mosaic + LoRA,作为较少改 transformer 的对照。 它需要更新媒体 token 组织、parser、TMRoPE 和预算审计;不应将多个同时刻人物串成不同视频时刻。 ### 必须与路线 A 公平比较 固定原始输入、8s 历史、人物数、2FPS 起始采样、活动监督以及事件标签。 比较三条:G+A+person temporal branch;同输入的 Thinker adapter;adapter+LoRA。 报告参数、token 数、训练 GPU-hours、峰值显存、端到端每步 P50/P95 延迟及实际可用提前量。 仅最终 AP 更高但无法及时输出,不能称为更好的实时接话系统。 ## 6. 路线 C:专门 AV 编码器 / 蒸馏,独立实验家族 Qwen 图像 encoder 的单帧语义并非为唇动、gaze 或 ASD 专门训练。 若路线 A 的表示诊断不理想,可引入 causalized TalkNet/LoCoNet 风格 AV 分支,保留逐人唇动时间结构,再与 G 融合。 首先用原始视频小规模对照 2、5/10、原模型所需高帧率;低帧率不应插值成所谓真实高帧率。 专门模型的 temporal conv、双向网络、全片归一化、未来 tracking 都须审计,不能直接把离线 ASD 特征作为因果特征。 这条路线改变了编码器/预训练数据,应与“只用 Qwen 编码器”分表;全局语义/长期历史与近期声学视觉运动可能互补,但需要验证。 不要一开始就声源分离:分离引入额外模型、时延、伪影和信号权限;在混合表示上先做人物归属更容易控制变量。 蒸馏属于后续加速:在相同过去前缀下由有效的 Thinker+local 教师给时序小模型软目标;额外完整未来教师只能作为 privileged teacher 协议。 未经验证的教师推断不能变成“真实社交意图”标签。 ## 7. 把“不退化”落实为评测,而非口头保证 ### 时间与事件 - 保存 input cutoff、源帧/音频最大时间、输出可用时刻、目标物理时间、segment ID。 - 旧特征 row i 的 cutoff=(i+1)/5;若标签 row j 的时间为 j/5,旧 i+1 对齐的真实 lead=0,不是 0.2s。须逐数据集审计,原标称指标保留,不混成新提前量。 - 事件预测提前窗口使用严格正 lead,例如预先指定 0.2/0.6/1.0s;合并连续告警并一对一匹配真值 onset。提前量按可用时刻计算,另报只按输入 cutoff 的理想值。 - 训练和评测窗口都不能跨原始缺片拼接断点。仅重置新分支还不足以保证已有 G 未跨断点;需要审计全局 cache 或排除受影响窗口。 ### 分层定义 1. 第三方交谈:可见他人 A/B 有交替发言,讲话对象明确为对方或其他非 wearer,wearer 当前静默;如果预测窗口内真实开口,不算误报。 2. Addressed-to-wearer:当前/最近他人话语明确对 wearer,单独统计有真实 wearer onset 的事件召回、提前量,以及没有回应时的误报。 3. Group / Unknown:单列;不要挑掉难例后只汇报容易的子集。 两个人可见、others=1 或两个人同时发声,都不足以证明 A↔B 交谈。切片规则先根据训练侧冻结,测试侧不按预测效果挑选。 ### 主要指标 - wearer onset 事件 AP、offset 事件 AP;保留原 10-horizon 活动 AP。 - `third_party_false_entries_per_minute @ wearer_onset_recall=r`,r 如 0.7/0.8/0.9 预先指定;达不到的目标召回应报告不可达。 - 同一阈值下 addressed-to-wearer 子集的 onset recall、提前量/延迟。 - 预设不退化容限 epsilon,报告配对差及区间;不能仅因 p>0.05 就宣称不退化。 - 按 session/连续对话块聚类 bootstrap,另报逐 session 结果。EasyCom 仅 3 个测试 session,区间稳定性有限,不能把相邻 5Hz 样本当独立重复。 固定全局召回仍可能牺牲 addressed 子集,所以两条约束必须同时报告。 测试集上完整预定义曲线的插值可用于描述匹配召回比较,但不能选出部署阈值再称独立验证。 继续保留原 4 epoch、无 dev 的对照;要确定实际阈值,用训练集内部交叉拟合/校准并明确协议,不能使用 Session_1–3 挑阈值、epoch 或 loss 权重。 可以后续研究训练侧约束优化:最小化第三方负例风险,同时约束 onset 总召回与 addressed 召回。 但权重/拉格朗日训练并不保证测试集满足约束;先验证表示与指标,不把它包装成已有有效 RL。 ### 视觉对照与因果表述 - 同模型正确局部视觉、缺失局部视觉、仅使用更早的局部视觉、破坏跨时刻身份对应的局部视觉。 - 缺失/错配可能是分布外扰动,因此还要有从头训练的无局部视觉与匹配预算控制。 - 同步重排人物槽位应不影响 permutation-equivariant 模型;这种重排不是错误视觉。应破坏时间—身份或 AV 对应,并记录具体扰动。 - 若 G 固定,仅检验新增局部 V;要检验全部视觉,必须同步重算 G 的视觉输入,不能只删除旁路。 - 不从测试集选择最有利案例;案例按预定分层抽样,同时显示成功/失败与完整时间线。 - 上述输入干预支持模型是否利用视觉的证据,不证明人类未开口的心理因果动机。 ## 8. 标注供给:先 EasyCom,再审计 Ego4D [EasyCom 官方](https://github.com/facebookresearch/EasyComDataset#speech-transcriptions-and-voice-activity)提供逐人发声和 `Target_of_Speech`。可以作为训练辅助监督及评测分层;禁止作为测试模型输入。 Optitrack、独立参与者麦克风或人工转写作为输入,均须另列 privileged 条件。 本轮新确认:[Ego4D Social](https://ego4d-data.org/docs/benchmarks/social/)包含 LAM/TTM,并在 AV schema 中定义 `social_segments_talking` / `social_segments_looking` 和 `is_at_me`。 这修正了此前“尚未确认可用 addressee”的信息状态,但**没有确认远程 433 个 clip 的字段覆盖**。 下一步需按 clip_uid/source_clip_uid、时间和 split 对齐,统计已标注/缺失范围;字段缺失不能填作 negative,TTM=false 也不自动指出具体在对哪位第三方说话。 官方 TTM benchmark 包含 speaker-status 条件;本研究主模型只能用预测的逐人活动,不可直接拿 GT VAD 作输入。 本项目 346/87 EgoSpeak split 与官方 TTM split 不等价,监督预训练时检查 video/session/participant 重叠,避免把本项目测试 clip 用作辅助任务训练。 ## 9. 8×L20 实施顺序与资源边界 以下是工程预算判断,不是实测吞吐。按每卡约 48GB 规划,执行前以 nvidia-smi 核实;DDP 复制模型,不将 8 张显存自动合并成一块。 | 实验 | 起步资源 | 可复用资产 | 优先级 | |---|---|---|---| | matched-recall 事件评测、字段覆盖审计 | CPU | 原预测、原始标注 | P0 | | pooled-GRU vs person-GRU/cross-attention | 预期单卡可训;多卡分配独立 seed/消融 | 已有 G、A、persons | P1 | | 加逐人活动、addressee、onset 监督 | 同上 | 同一输入;新增训练标签 | P1 | | local memory adapter | 先单卡 microbatch=1 profiling,再 DDP | 冻结 AV 编码缓存;必要时重存局部 token | P2 | | adapter + 最后 4 层 rank-8 LoRA | 同上;梯度累积/checkpointing | 现有 LoRA trainer 的基础设施 | P2 | | 专门高帧率 ASD / AV encoder 适配 | 先 1 卡小样本,合适后分布式 | 原视频/框、外部预训练 | P3 | | 从头复现 AV-Dialog 全流程、Omni 全参大规模预训练 | 不列为当前主线 | 数据/训练规模超出低成本验证 | 暂缓 | [AV-Dialog 附录](https://arxiv.org/html/2511.11124)报告 stage 1 用 128×A100、stage 2 用 32×A100;这不是说 8 卡数学上无法训练,而是完整重现所需成本不适合本项目当前优先级。 先用现成 Qwen3B 做任务适配,不能把“训练参数少”当作“激活显存一定少”。 第一轮建议矩阵: | ID | 设置 | 回答的问题 | |---|---|---| | A0 | G+A,原 MLP | 已有参考 | | A0t | G+A temporal,无局部视觉、匹配有效历史及容量 | 音频时序增强能解释多少收益? | | A1 | G+A+pooled V,有限历史 GRU | 时序建模本身是否足够? | | A2 | G+A+person GRU/cross-attention,相同历史/容量 | 人物身份结构是否有价值? | | A3 | A2 + 逐人活动监督 | 是否学到 AV 人物对应? | | A4 | A3 + 讲话对象监督 | 交互关系是否降低第三方误报? | | A5 | A4 + wearer 事件监督 | 是否改善事件而非仅活动 AP? | | B0 | 无局部 memory 的相同 Thinker LoRA | 普通任务微调收益 | | B1/B2 | local adapter / adapter+LoRA,同监督 | 内部融合是否优于强旁路? | 每项先 seed0 做数据/接口 smoke test;正式主比较至少相同 seeds 0/1/2,不按 seed0 测试提升挑方法。 8 卡优先分配独立消融与 seed;只有实测单次训练需要时再用全部 DDP。记录失败实验和计算成本。 ## 10. 后续代码落点(尚未创建) - 先扩展 `local_turn_features.py` 的读取契约,整理 track-level 序列;保留旧 pooled 接口不变。 - 拟新增 person temporal head;训练/推理配置显式保存 history、缺失处理、track 策略和监督覆盖。 - 复用 `derive_easycom_interaction_events.py` 的时刻/人物映射,新增讲话对象与 wearer 专属评测;不要复用 generic transition 指标名称。 - Ego4D 先新增 social coverage 审计,再决定是否共用 addressee loss。 - 内部融合在 `train_omni_turn_lora.py` / `omni_cached_av.py` 的基础上单独实现和测试;不先改全局提取结果的含义。 - 必测:未来媒体扰动不改变过去输出;有限历史/断点重置;人物排列等变;缺失与全空;overlap;时间匹配;阈值只用训练侧;adapter=0 与基线一致;更新权重后旧 KV 不复用。 推荐决策:先完成 A 路线和评测,确认视觉对应/讲话对象信号存在,再投入 B。若 A 的强基线已经实现目标,论文也不必强行要求 Thinker 内部融合。