跳到主要内容

加上时间维 — 视频、声音,和一份机器自己写的图注(InternVideo2)

这一章讲三件事: 视频比图片多出哪两件麻烦; 一个从零开始的模型怎么靠「同时拜两个师父」少走弯路; 以及为什么把模型从 10 亿加到 60 亿之后,有些成绩反而掉了。 它在全书链条里的位置是「把它做大」这条支线的第二篇—— 第 05 章往「更清楚」的方向推,这一篇往「更长」的方向推。 这一章还立起两个后面反复出现的机制:知识蒸馏(老师带学生)和掩码重建(遮住再补)。

1. 顶层全景:一段做菜视频的一生

本章的主走查: 一段做菜视频 + 一个问题「他先放的是什么?」

一段做菜视频
│ ① 按画面语义切成一个个镜头(不是按固定秒数切)

一个镜头片段
│ ② 均匀抽 8 帧,每帧压成 14×14 的格子,再加一个总代表和位置信息

一条时空 token 序列
│ ③ 【第一阶段】遮住其中 80%,只留 20%
│ 把完整视频同时喂给两个已经训好的「老师」
│ 要求学生在没被遮住的位置上,跟两个老师的输出对得上

一个懂画面也懂动作的视频编码器
│ ④ 【第二阶段】配上「三个描述器 + 一个语言模型」写出来的图注,做对比学习
│ 另外接上音频(有用)和语音(有害,最后没要)

一个能把视频和文字对齐的模型
│ ⑤ 【第三阶段】接上语言模型,训「往下写答案」

回答:「他先放的是蒜。」

图说:③ 的 80% 与 ② 的 8 帧、14×14 都是书里的真数;
三个阶段的训练量也是书里的:第一阶段 256 张 A100 卡 × 18 天,
第二阶段 256 张 × 14 天,第三阶段 64 张 × 3 天。

2. 先看现象:视频不是「很多张图」

多出来的两件事,每一件都很贵。

第一件:动作根本不在任何一帧里。 一张「手举在锅上方」的静止画面,你分不出他是在放蒜还是在拿走蒜—— 「放」这个动作只存在于帧与帧之间的差别里。 所以一个只会看单张图的模型,天然做不了动作识别。

第二件:token 数按帧数翻倍。 第 02 章算过:一张 224 的图切成 196 块。抽 8 帧就是八倍。

这篇论文的做法是把每帧压到 14×14 的格子(也就是 196 格), 8 帧 = 1568 个时空 token,还要再加一个总代表1—— 第 04 章第 ② 堵墙(开销随长度平方涨)在这里直接生效。

这两件麻烦决定了这一章后面所有的取舍: 想抓住动作,就必须一次看多帧;而一次看多帧就贵—— 所以每一步都在想办法省。

3. 第一阶段:让一个学生同时拜两个师父

先看问题:从零训一个视频模型,要多少数据?

图片那边有 4 亿对现成的图文数据,视频那边没有这个量级的干净数据。 从零开始训一个 60 亿参数的视频模型,数据根本不够。

做法:找两个已经训好的老师,让学生去模仿它们

这个套路的名字叫知识蒸馏。

知识蒸馏:让一个新模型(学生)去模仿一个已经训好的模型(老师)的输出, 而不是去对标注数据学。 好处是老师的输出比人工标注密集得多—— 每一个位置都有一个目标值,而不是整段视频只有一个标签。

这篇论文特别的地方是它请了两个老师,而且分工明确2:

老师它擅长什么学生要对齐它的哪一部分
一个图文模型(InternViT-6B,就是第 05 章那个)语义:画面里有什么东西它最后 6 层的输出
一个视频模型(VideoMAEv2-g)运动:帧与帧之间在怎么变它最后 4 层的输出

学生自己是随机初始化的,从零开始。 两个老师的输出各接一条可训练的小通道 (书里叫投影层)来对齐形状,训完之后这些小通道直接拆掉,只留学生本体2

为什么要两个老师: 书里在消融里给了答案—— 一个「多模态老师」加一个「运动老师」的组合效果最好, 在那种特别看重动作变化的数据集上差别尤其明显3

4. 遮住 80%:这里的「遮住再补」是为了省钱

第 03 章介绍过「遮住一部分让它补」这种出题法。这一章把它当省钱手段用。

做法

书里的描述是:完整的视频序列同时喂给两个老师,而学生这边,每一帧有 80% 的 token 被遮住; 优化只在没被遮住的那些位置上进行,量的是学生和老师之间的均方误差2

「均方误差」一句话讲清:两串数逐位相减、各自平方、再取平均。 差得越远这个数越大,所以让它变小就等于让两串数变像。

为什么这是省钱而不是学本事

注意这里和常规「遮住再补」的差别:

常规的遮住再补这里的做法
遮的目的逼模型学会「根据上下文推断被挡住的东西」减少要算的 token 数
在哪算损失被遮住的位置上算(补得对不对)在没被遮住的位置上算(和老师像不像)

所以这一步的收益是直接的:学生这一侧只处理 20% 的 token, 而老师那一侧照常处理完整视频(老师不训练,只做前向计算,便宜得多)。

代价书里也写了:第二阶段的最后一轮不再遮—— 因为推理时不会遮,训练和推理的口径要对上4

5. 第二阶段:加声音有用,加语音反而有害

做法:再加两个模态

第二阶段除了视频和文字,还接了两个编码器5:

  • 音频编码器:12 层、9000 万参数,从一个现成的音频模型初始化; 输入是把 10 秒声音转成的频谱图(声音随时间怎么分布在高低音上,画成一张二维图);
  • 语音:把人说的话转成文字,再当成一路输入。

实测结果:一个有用,一个有害

书里的消融很干脆6:

加音频编码器、并且让它和视频、文字一起训,检索效果最好; 而加语音编码器,反而对整体表现有一点损害。

书里没有解释语音为什么有害。 照实写在这儿。

判断(我们的,不是书里的): 一个合理的猜测是, 人说的话和画面内容常常不是一回事——做菜视频里的人可能在聊天、在念广告词, 这些文字和「他在放蒜」这个画面事实无关,反而是噪声。 如果错,会错在: 如果换一批「说话内容和画面高度一致」的视频(比如教学视频), 语音这一路可能就变成有用的了——书里没有分数据类型做这个实验,所以我们无从判断。

6. 训练用的图注,是机器自己写的

先看问题:视频的图注从哪儿来?

网上的视频配文比图片配文更脏。 标题、字幕、推荐语,往往和画面没关系。

做法:三个描述器 + 一个语言模型融合

书里造了一条流水线,三个描述器各写各的,再让一个语言模型把三份合成一份7:

同一段视频
├─ 视频描述器 → 「一个人在灶台前翻炒」
├─ 音频描述器 → 「有油爆的滋滋声」
└─ 语音识别 → 「先把蒜末下锅」


一个语言模型融合

「一个人把蒜末下进热油锅里翻炒,发出滋滋声」

效果有多大?书里给了一个可对照的数8:

用什么图注训视频检索的命中率
只用视频描述器写的24.7
视频 + 音频26.6
视频 + 音频 + 语音(融合版)27.1

顺带一个容易被忽略的动作:怎么切镜头

他们没有按固定秒数切,而是用一个模型按「画面语义什么时候变了」来切。 书里说这样切出来的片段上下文连贯,不会把内容不一致的帧混在一起; 换成这种切法之后,检索命中率提高了将近 7 个点8

这两条合起来是一个很实在的教训: 在这类系统里,「数据怎么造」的收益,不比「模型怎么改」的收益小。 换切法值 7 个点,而下一节会看到,把模型从 10 亿加到 60 亿有些任务上是负收益。

7. 最反直觉的一条:60 亿版有些成绩不如 10 亿版

这是全章最该记住的发现。

书里的原话是:在几个和第一阶段训练数据分布接近的动作识别数据集上, 60 亿版本的成绩略低于 10 亿版本;作者给的解释是——

第二阶段那批更大的数据,可能让模型忘掉了一部分第一阶段学到的东西9

这件事有一个通用的名字:灾难性遗忘—— 模型在新任务上训练时,会把旧任务上学会的东西冲掉。 (第 04 章第 ⑨ 堵墙讲的「持续学习」,针对的就是这个现象。)

书里还有一条相关的消融,把这件事说得更清楚: 训练数据的规模要跟着模型规模一起涨—— 小模型配 66 万条视频、10 亿版配 110 万条、60 亿版配 200 万条, 否则效果会饱和3

判断(我们的,不是书里的): 这一条和第 05 章那个「同质假设」正好构成一对。 第 05 章赌的是「换一个更大的部件,原有的对齐还能用」;这一章测出来的是 「换一批更大的数据,原有的能力会掉一块」两件事的共同前提是:阶段之间的衔接是有损耗的,而这个损耗书里都没有量化过。 如果错,会错在: 60 亿版掉分也可能只是那几个数据集恰好和第一阶段的训练分布重合度高 ——书里自己也是这么解释的,但它没有做「换一批分布更远的数据集」的对照。

8. 作者的判断与证据

书里给了证据的:

说法证据
双老师比单老师好消融表:多模态老师 + 运动老师的组合最好,在看重动作的数据集上尤其明显
加音频有用、加语音有害消融表:四种组合各跑一遍
融合图注比单一图注好24.7 → 26.6 → 27.1 三档
按语义切镜头比按固定规则切好检索命中率提高将近 7 个点
60 亿版在某些集上不如 10 亿版实测表格,而且作者主动写了出来

属于作者的推断:

  • 「第二阶段的大数据把第一阶段的知识冲掉了」——这是对现象的解释, 书里用的是「可能(might)」,没有做实验去证实。

作者自陈的局限(书里第 3.6 节写得很直接)10:

  • 「这篇工作没有提出根本性的新架构」——它是把已有技术往上堆规模、并精修数据;
  • 固定的输入分辨率、固定的采样率、高度压缩的 token,限制了它表达丰富视频信息的能力;
  • 它不保证有一个前后一致的隐式世界模型——换句话说, 它能答对很多题,但你不能指望它对世界的理解是自洽的。

9. 边界与局限

① 这一章的所有结论都在「几百张卡」这个前提下。 三个阶段合计:256 张卡 × 18 天 + 256 张 × 14 天 + 64 张 × 3 天11这是全书唯一一处把训练成本写得这么完整的地方,值得记住这个量级。

② 它在零样本动作识别上输给了一个对手,而作者把原因归给了数据。 书里说对方那个模型的预训练语料包含 3.11 亿条带文字的视频和 3610 万条人工标注视频, 分布上更接近那个评测集12这是一句很诚实的话:成绩差距未必来自方法差距。

③ 合成图注的偏见,作者自己统计并公布了。 见下一节。

④ 语音为什么有害、遗忘怎么避免,书里都没有答案。

10. 一个应该被单独拿出来的诚实:合成图注的偏见

这一章的训练图注是机器自己写的。作者对这批图注做了一次偏见统计,并把结果公布了13:

维度分布
年龄成人 86.99%,儿童 12.87%,老年人 0.04%
性别男性 62.04%,女性 37.96%
种族亚裔 56.19%,黑人 23.04%,白人 14.55%,中东 3.78%,拉美 2.43%

作者自己加了一句很关键的免责声明:这些合成图注未必真实反映视频内容, 所以这份统计和真实情况之间可能有出入13

这段值得单独记住,理由和数字本身无关: 「老年人 0.04%」这个数摆在那里,任何人都能立刻判断出这个模型会在什么地方失灵。 第 04 章第 ⑪ 堵墙(数据偏向)全书没有一篇论文正面处理, 但至少这一篇把自己的偏斜量出来了。

11. 可带走的

  1. 视频多出两件麻烦:动作只存在于帧与帧之间;token 数按帧数翻倍;
  2. 知识蒸馏 = 让新模型去模仿已训好模型的输出,好处是每个位置都有目标值,比人工标注密集;
  3. 两个老师分工:一个管「有什么」(语义),一个管「在怎么动」(运动),组合效果最好;
  4. 这里的「遮住 80%」是省钱手段,不是学本事——损失算在没被遮住的位置上;
  5. 加音频有用,加语音有害,书里没有解释为什么;
  6. 训练图注是机器写的:三个描述器分头写,再由一个语言模型融合,检索命中率 24.7 → 27.1;
  7. 换一种切镜头的办法值 7 个点——数据怎么造的收益,不比模型怎么改小;
  8. 60 亿版在某些集上不如 10 亿版,作者归因于第二阶段的大数据冲掉了第一阶段的知识 (这个现象的通名是灾难性遗忘);
  9. 数据规模要跟着模型规模涨,否则效果饱和;
  10. 训练成本的量级要记住:256 张卡 × 18 天 + 256 张 × 14 天 + 64 张 × 3 天;
  11. 作者自陈:这篇没有新架构,靠的是规模与数据精修,而且不保证有自洽的世界模型;
  12. 合成图注的偏见被量了出来:成人 86.99%、男性 62.04%、亚裔 56.19%、老年人 0.04%。

12. 原文地图

主题原书章原文位置
三阶段总览3.1 Introductiontext/18-ch03-01-3-1-introduction.txt:7(搜「three-stage progressive learning」)
8 帧、14×14 格、总代表与位置信息3.3 Methodtext/20-ch03-03-3-3-method.txt:9(搜「extracting eight frames」)
双老师、遮 80%、只在未遮位置算均方误差3.3 Methodtext/20-ch03-03-3-3-method.txt:15(搜「80% of the tokens masked」) · text/20-ch03-03-3-3-method.txt:21(搜「final six layers of InternVL」)
第二阶段:音频编码器与文本编码器的配置3.3 Methodtext/20-ch03-03-3-3-method.txt:25(搜「12-layer transformer (90M」)
最后一轮不再遮3.3 Methodtext/20-ch03-03-3-3-method.txt:57(搜「masking is omitted」)
按语义切镜头、三个描述器 + 语言模型融合3.4 Training Datatext/21-ch03-04-3-4-training-multimodal-data-overview.txt:91(搜「AutoShot」) · text/21-ch03-04-3-4-training-multimodal-data-overview.txt:95(搜「VidCap」)
三个阶段各用多少卡、多少天3.5 Experimentstext/22-ch03-05-3-5-experiments.txt:7(搜「256 NVIDIA A100」)
60 亿版不如 10 亿版、对手语料更大3.5 Experimentstext/22-ch03-05-3-5-experiments.txt:587(搜「slightly lower than that of InternVideo2-1B」)
数据规模要跟模型规模、双老师组合最好3.5 Experimentstext/22-ch03-05-3-5-experiments.txt:1753(搜「pretraining data scale should increase」)
加音频有用、加语音有害3.5 Experimentstext/22-ch03-05-3-5-experiments.txt:1905(搜「inclusion of a speech encoder has a somewhat detrimental effect」)
融合图注 24.7 → 27.1、切镜头 +7 点3.5 Experimentstext/22-ch03-05-3-5-experiments.txt:1935(搜「from 24.7 to 27.1」)
自陈局限:没有新架构、不保证自洽世界模型3.6 Conclusiontext/23-ch03-06-3-6-conclusion-and-discussion.txt:7(搜「does not introduce a fundamentally new architectural design」) · text/23-ch03-06-3-6-conclusion-and-discussion.txt:11(搜「consistent implicit world model」)
合成图注的偏见统计3.6 Conclusiontext/23-ch03-06-3-6-conclusion-and-discussion.txt:15(搜「86.99%」)

Footnotes

  1. 出处:「3.3 Method」第 9 段(text/20-ch03-03-3-3-method.txt:9,搜「extracting eight frames」)。原文:先按固定间隔抽 8 帧,再在空间上降采样到 14×14 的网格;得到的时空 token 加上一个 class token,并与三维位置编码结合。「8 帧 × 196 = 1568」这个乘法是我们算的,书里没有直接给这个数。

  2. 出处:「3.3 Method」第 13、15、21 段(text/20-ch03-03-3-3-method.txt:13,搜「two specialized expert networks」;text/20-ch03-03-3-3-method.txt:15,搜「80% of the tokens masked」;text/20-ch03-03-3-3-method.txt:21,搜「final six layers of InternVL」)。原文明确:完整视频序列同时喂给两个老师网络,学生这边每帧遮 80%;优化「只针对未被遮住的 token」,用均方误差;对齐的位置是 InternVL 的最后 6 层、VideoMAEv2 的最后 4 层,以及 InternVL 的最终 token 输出;训练结束后投影层被移除,只留核心编码器。 2 3

  3. 出处:「3.5 Experiments」第 1753 段(text/22-ch03-05-3-5-experiments.txt:1753,搜「pretraining data scale should increase」)。原文两条结论:(a) 预训练数据规模应随模型规模增大,否则性能饱和——66 万条适合 ViT-L、110 万条适合 10 亿版、200 万条适合 60 亿版;(b) 多模态老师(如 CLIP 一类)与运动感知老师(如 MAE 一类)组合会显著提升表现,在 SthSthV2 这种看重动作的数据集上尤其明显。 2

  4. 出处:「3.3 Method」第 57 段(text/20-ch03-03-3-3-method.txt:57,搜「masking is omitted」)。原文:这一阶段保持视觉编码器固定,优化音频–视觉–文本的对齐;为了保持推理时的一致性并维持下游表现,这一阶段不再做遮挡

  5. 出处:「3.3 Method」第 25 段(text/20-ch03-03-3-3-method.txt:25,搜「12-layer transformer (90M」)。原文:音频处理用一个 12 层、9000 万参数的 Transformer,从 BEATs 初始化,输入是 10 秒片段经 25 毫秒汉明窗算出的 64 维对数梅尔频谱;语言部分用 BERT-Large,前 19 层当文本编码器,后 5 层加上交叉注意力当多模态解码器。「频谱图是声音随时间怎么分布在高低音上的二维图」这句是补充(不在书里,来自通用知识)。

  6. 出处:「3.5 Experiments」第 1905 段(text/22-ch03-05-3-5-experiments.txt:1905,搜「inclusion of a speech encoder has a somewhat detrimental effect」)。原文:表 3.18 显示,加音频编码器并让它与视频、文本编码器一起训练,带来的检索提升最大;相比之下,加入语音编码器对整体表现有一定的负面影响书里没有给出原因。

  7. 出处:「3.4 Training Multimodal Data Overview」第 95 段(text/21-ch03-04-3-4-training-multimodal-data-overview.txt:95,搜「VidCap」)。原文:这套系统包含视频、音频、语音三个描述器,外加一个用于整合的语言模型;语音那一路用的是一个语音转文字模型,融合用的是一个开源对话模型。

  8. 出处:「3.5 Experiments」第 1935 段(text/22-ch03-05-3-5-experiments.txt:1935,搜「from 24.7 to 27.1」)。原文:融合了视频、音频、语音三路文字之后,零样本文本检索视频的命中率从 24.7 提到 27.1;另外,用按语义切镜头的方法替代固定规则的切法,命中率提高了将近 7 个点 2

  9. 出处:「3.5 Experiments」第 587 段(text/22-ch03-05-3-5-experiments.txt:587,搜「slightly lower than that of InternVideo2-1B」)。原文:在 Kinetics、UCF101、HMDB51 这些分布更接近第一阶段预训练数据的集合上,60 亿版的表现略低于 10 亿版;这表明第二阶段更大的预训练数据集可能导致了对第一阶段所学内容的一定遗忘。「灾难性遗忘」这个通名是补充(不在书里,来自通用知识)。

  10. 出处:「3.6 Conclusion and Discussion」第 7 段(text/23-ch03-06-3-6-conclusion-and-discussion.txt:7,搜「does not introduce a fundamentally new architectural design」)与第 11 段(text/23-ch03-06-3-6-conclusion-and-discussion.txt:11,搜「consistent implicit world model」)。原文:它「没有引入根本性的新架构设计」,而是在已有学习技术上做规模化,重点放在数据处理的精修上;固定的输入分辨率、采样率和高度压缩的 token 限制了它表达丰富视频信息、捕捉细粒度细节的能力;它也不保证在视觉推理上有一个前后一致的隐式世界模型。

  11. 出处:「3.5 Experiments」第 7 段(text/22-ch03-05-3-5-experiments.txt:7,搜「256 NVIDIA A100」)。原文给了三阶段各自的配置:第一阶段 256 张 A100 训 18 天,第二阶段同样 256 张训 14 天,第三阶段 64 张训 3 天。

  12. 出处:「3.5 Experiments」第 587 段(text/22-ch03-05-3-5-experiments.txt:587,搜「311 million videos with text」)。原文:与对手在某个动作识别集上的明显差距,「可能说明其预训练语料的重要性」——那个语料包含 3.11 亿条带文字的视频和 3610 万条人工标注视频。

  13. 出处:「3.6 Conclusion and Discussion」第 15、17、19 段(text/23-ch03-06-3-6-conclusion-and-discussion.txt:15,搜「86.99%」;:17,搜「62.04%」;:19,搜「56.19%」)。原文在给出统计之前先写了一句:这些合成图注可能没有完全反映视频的真实内容,因此这份分析与真实场景之间可能存在偏差。 2