课程进度 课程大纲 已发布 34/34 课
第 0 部分——先拿到地图
第 1 部分——为什么简单目标会学会看视频
第 2 部分——把一段视频送进单编码器
第 3 部分——会读实验,才算读懂论文
第 4 部分——从官方仓库到自己的实验
第 5 部分——把表征接回世界模型路线
附录——随用随查的技术背包
先分开“家人”,再切成短片
- 先分组人物与视频不串门
- 冻住 encoder只读,不改
- 训练小探针量表征可读性
- 做负对照排除作弊
- 报告协议平均值、方差、失败例
把同一场长视频切成许多相邻片段,再随机分进训练和测试,成绩往往漂亮得不真实。原因很简单:测试题可能只是训练题的下一秒,人物、墙面和水印都没有换。先按原视频、场景、人物或拍摄日期分组,再在各组里切 clip,才能真正隔开相似来源。
四种问题,各用一把尺
先固定 preprocessing(预处理)、模型 revision 与帧率。对 [B,3,16,224,224] 输入,冻结 encoder,并验证所有参数 requires_grad=False。最小 **linear probe(线性探针)**用 [CLS] 的 [B,1024] 特征训练一个线性层;除 accuracy 外,类别不平衡时再报告 balanced accuracy 或 macro-F1。论文的 **attentive probe(注意力探针)**让一枚可学习 query 交叉注意全部 3,137 tokens,再将结果与 query 作残差相加,经过两层 MLP、GELU、LayerNorm 和线性分类器。它的容量更大,因此与 linear probe 的名称和分数都要分开记。
检索时先对 [CLS] 做 L2 归一化,以 cosine similarity 排名,报告 Recall@1/5 与 mAP。密集任务应去掉 [CLS],把 out.last_hidden_state[:,1:] reshape 为 [B,16,14,14,1024];可做 query-patch 相似度、轻量分割头或跟踪头,并报告 mIoU、J&F 或点跟踪误差。注意:块因果约束属于逐帧 patch token;汇总 [CLS] 看完整个 clip,不能拿它冒充任意时刻的在线状态。
一个可复用的特征函数是:
@torch.inference_mode()
def features(model, raw_bcthw):
mean = raw_bcthw.new_tensor([.485,.456,.406])[None,:,None,None,None]
std = raw_bcthw.new_tensor([.229,.224,.225])[None,:,None,None,None]
out = model(pixel_values=(raw_bcthw - mean) / std)
cls = torch.nn.functional.normalize(out.pooler_output, dim=-1)
patches = out.last_hidden_state[:, 1:].reshape(-1, 16, 14, 14, 1024)
return cls.cpu(), patches.cpu()
这里假定 raw_bcthw 已在 [0,1] 且裁成 224;其他输入要先显式转换。
来源先隔离,窗口随后再抽
先按 source group(同源组)切 train/validation/test,再在各 split 内抽窗口。标准化器和类别权重只从 train 拟合或计算,超参数由 train/validation 选择,test 全程封存。至少加入三项负对照:打乱训练标签后应回到机会水平;重复单帧可以测试模型是否只靠外观;倒序或打乱帧则检查指标对时间是否敏感。还应与随机初始化的同架构模型,或简单颜色/运动基线比较。
最小 linear probe 可把所有 train 特征先落盘,再只优化 torch.nn.Linear(1024, n_classes);每轮都断言 encoder 的参数摘要不变。超参数在 validation 选定后,只对 test 运行一次。至少跑三个 seed,报告均值、标准差、每类样本数和混淆矩阵;小测试集可加 bootstrap(自助重采样)置信区间。若同一主体重复出现,应使用 group split 而非普通 stratified split;类别平衡解决不了身份泄漏。
让捷径自己暴露出来
时间任务再做“外观配对”检查:让正反顺序包含完全相同的帧,只改变排列;若 probe 仍不能胜过机会水平,它可能只读物体外观。检索任务要从 gallery 移除同源近邻,密集评估要在预先固定的标注帧上计分,而不是挑 PCA 看起来最漂亮的片段。将帧率、窗口秒数、crop、probe 参数和模型 revision 一并写入结果表。
论文的 69.5、55.0 是作者在特定 frozen attentive-probing 协议下的报告。换了自己的数据、切分或 probe,做的便是新实验;它可以很有价值,却不能自动称为超过或复现这两个数字。
评估协议的原始出处
一次干净评估应留下什么
- 先按原视频、人物或场景切分,再切 clip,才能挡住近邻泄漏。
- linear、attentive、检索和密集 probe 回答不同问题。
[CLS]汇总整段;因果逐帧状态要看对应 patch tokens。
查一遍有没有泄漏
- 为什么不能把相邻两秒窗口随机分到 train 与 test?
- 打乱标签仍远高于机会水平说明什么?
[B,3137,1024]去掉[CLS]后如何恢复时空网格?
泄漏从哪里进来
- 它们几乎重复,会泄漏背景、人物和运动。
- 切分、缓存或评估管线很可能泄漏。
- reshape 为
[B,16,14,14,1024]。