Files
modeling_zhaocui/math

问题一模型对比

本目录实现问题一 PDF 第 4.8.3 节的 B0–B4 单因素对照。代码从附件一的 100 条原始视频和标签表开始,先生成统一的文本、语音、视觉特征,再在 0.1 秒主时间网格上进行五折 video_id 留组评估。

运行

在仓库根目录执行:

cd math
uv sync
uv run python compare_models.py

默认使用 CUDA(如果可用),需要可访问 Hugging Face 下载 BERT 与 Wav2Vec2 权重;MediaPipe Face Landmarker 权重会保存在 math/cache/。可用 --device cpu 指定 CPU。缓存保存在 math/cache/native/,中断后重跑会继续使用已完成样本。只有传入 --force-extract 才会重算全部原始特征。

对照定义

  • B0:冻结 BERT 词向量、冻结 CTC Viterbi 词边界、物理时间区间投影;训练折均值/标准差缩放。
  • B1:B0 加训练折中位数/MAD 稳健缩放,并对面部旋转使用 SO(3) 均值、对视线代理使用单位向量均值。
  • B2:B1 只替换文本时间投影,使用 CTC 固定转写状态图的前向–后向词占据后验。音频/视频的 PTS 不变。
  • B3:B1 加音频 log-F0/能量和面部 jaw-open/嘴部开合率的一、二阶时间增广路径签名。缺测处会断开路径。
  • B4:B1 加冻结 Wav2Vec2-base-960h 最后四层的时间投影表示。

每个模型以相同的五段时间池化探针评价极性和强度。分类器为固定 C=0.05 的逻辑回归,回归器为固定 alpha=25 的 Ridge;参数不按留出折调节。归一化器只使用训练折观测值。95% 差值区间以 video_id 为单位做 2,000 次配对 Bootstrap。

文本维度为 768(BERT 最后四层、词内子词平均);语音为 74 维(40 log-Mel、13 MFCC、13 ΔMFCC、8 韵律/谱量);视觉为 35 维(17 个 MediaPipe blendshape 代理、6 维头姿、6 维近似视线、6 维面部比例几何)。MediaPipe blendshape 分数不等于 OpenFace AU 强度,视线为基于虹膜偏移的代理量;本次实现记录了实际所用索引与定义,没有将代理量称为 OpenFace 特征。

硬边界质量由 CTC 发射分数得到,但不视为校准概率。聚合时按样本内有效词的中位分数归一化,并截断到 [0.25, 4],仅作为相对质量权重。物理覆盖率仍以实际区间交叠计算。B2 的文本后验占据率是期望词活动质量,不能与物理覆盖率互换。

没有人工词边界标注,因此结果不报告边界误差、IoU/MATE 或后验经验校准率。情感探针分数只检查当前特征视图保留标签信息的程度,不是对齐正确性的真值。

结果文件

完整结果在 results/model_comparison/:

  • report.md:实验设置、主要结果和限制。
  • comparison_summary.csv、fold_metrics.csv:总体和分折指标。
  • group_bootstrap_deltas.csv:相对 B1 的视频组配对 Bootstrap 区间。
  • oof_predictions.csv:100 条留组预测。
  • sample_alignment_summary.csv、modality_summary.csv:100 行样本汇总与 300 行模态明细。
  • word_alignment_posterior.csv:逐词硬边界、未校准对齐分数、实际相对质量权重与模型内部边界区间。
  • split_assignments.csv、run_manifest.json:折号、文件哈希、模型 revision、运行环境和参数。
  • comparison.png:OOF 指标图。