← 返回论文库
奠基 Groundwork EMNLP 2021 · 2021 arXiv:2109.14084 ↗

VideoCLIP: Contrastive Pre-training for Zero-shot Video-Text UnderstandingVideoCLIP:面向零样本视频-文本理解的对比预训练

用重叠片段+检索难负样本做视频-文本对比预训练,零样本超越多项有监督方法。

作者:Hu Xu, Gargi Ghosh, Po-Yao Huang, Dmytro Okhonko, Armen Aghajanyan, Florian Metze, Luke Zettlemoyer, Christoph Feichtenhofer
机构:—
发布:EMNLP 2021
时间:2021-09-28
视觉-语言基础视频理解对比学习零样本迁移时序建模
原文摘要 · English Abstract

We present VideoCLIP, a contrastive approach to pre-train a unified model for zero-shot video and text understanding, without using any labels on downstream tasks. VideoCLIP trains a transformer for video and text by contrasting temporally overlapping positive video-text pairs with hard negatives from nearest neighbor retrieval. Our experiments on a diverse series of downstream tasks, including sequence-level text-video retrieval, VideoQA, token-level action localization, and action segmentation reveal state-of-the-art performance, surpassing prior work, and in some cases even outperforming supervised approaches. Code is made available at https://github.com/pytorch/fairseq/tree/main/examples/MMPT.

概要

VideoCLIP 借鉴 CLIP 的对比预训练思路,但发现视频与文本天然缺乏精确的时序对齐(人说话与做动作往往不同步),若沿用「严格时间对齐」采样正样本会引入大量低相关配对。为此论文提出两项改动:一是采样时序重叠而非精确对齐的视频-文本片段对作为正样本,覆盖更长时间跨度并提升配对相关性;二是用检索增强训练动态挖掘跨视频的难负样本,替代传统batch内随机负样本。预训练在 HowTo100M 上完成,之后直接零样本迁移到文本-视频检索、视频问答、动作定位、动作分割四类任务,无需下游标签,部分任务甚至超过全监督方法。

「预训练+微调」在NLP和CV中取得成功后,GPT、CLIP等展示了「预训练+零样本迁移」无需下游标签也能取得强性能。但此前视频-文本预训练方法多假设视频与文本片段严格时间对齐,负样本仅来自同batch内随机组合。语音与画面常不同步,严格对齐会把不相关片段当正样本;随机负样本区分度不足,难学到细粒度关联,限制零样本迁移到检索、问答、片段级定位等任务。

关键贡献

  • 提出预训练一个统一模型即可零样本迁移到序列级检索、问答、片段级定位与分割等多种视频-文本任务。
  • 提出时序重叠(而非精确对齐)的视频-文本片段采样方法,显著提升正样本的语义相关性。
  • 提出检索增强预训练:交替进行视频聚类检索与对比训练,动态挖掘跨视频难负样本。
  • 在 Youcook2、MSR-VTT、DiDeMo、MSR-VTT QA、COIN、CrossTask 六个数据集上验证零样本与微调性能,多处超越有监督基线。

方法详解(完整做法)

总体思路

VideoCLIP 用一个双塔 Transformer 分别编码视频片段和文本片段,通过对比学习让语义相关的视频-文本对在嵌入空间中靠近、不相关的远离。与直接沿用「精确时间对齐」采样正样本的做法不同,VideoCLIP 先采样一个文本片段,再围绕其时间范围内的某个时刻生长出一个时长可变、与文本时序重叠但不必完全对齐的视频片段,以此获得语义上更相关的正样本对。同时,为了让负样本更具挑战性,模型交替执行「检索」和「训练」:先用当前模型给所有视频算全局特征并建立向量索引,再为每个训练batch检索出彼此邻近的视频簇,簇内不同视频的片段互为难负样本。预训练完成后,模型直接(不做任何微调)迁移到文本-视频检索、视频问答、动作分割、动作步骤定位四类任务。

双塔编码与池化

视频片段先经过冻结的预训练 CNN 视频编码器 fθCNNf_{\theta_{\text{CNN}}} 提取特征,再用一个可训练 MLP 投影为与词嵌入同维度的视频 token:

xv=fθMLP(stopgrad(fθCNN(cv)))\bm{x}_v = f_{\theta_{\text{MLP}}}(\texttt{stopgrad}(f_{\theta_{\text{CNN}}}(\bm{c}_v)))

视频 token 和文本 token 分别送入两个独立的可训练 Transformer 得到隐状态 hv=fθv(xv), ht=fθt(xt)\bm{h}_v = f_{\theta_v}(\bm{x}_v),\ \bm{h}_t = f_{\theta_t}(\bm{x}_t),再对序列做平均池化(而非用 [CLS] token)得到全局特征 zv, ztz_v,\ z_t,平均池化是为了让每个 token 的隐状态本身也能承担片段级(动作定位/分割)任务,而不只是servece于全局表征。视频 CNN 冻结让模型能突破单个 CNN 通常仅约 3 秒的时间窗口限制,建模长达约 32 秒的视觉-文本对应关系。

对称 InfoNCE 对比损失

对一个批次 BB 内的视频-文本对,损失是「视频→文本」和「文本→视频」两个方向对比损失之和:

L=−∑(v,t)∈B(log⁡NCE(zv,zt)+log⁡NCE(zt,zv))\mathcal{L}=-\sum_{(v, t)\in B}\Big(\log\text{NCE}(z_v, z_t)+ \log \text{NCE}(z_t, z_v)\Big)

其中视频到文本方向的对比项定义为:

NCE(zv,zt)=exp⁡(zv⋅zt+/τ)∑z∈{zt+,zt−}exp⁡(zv⋅z/τ)\text{NCE}(z_v, z_t) = \frac{ \exp\left({z_v \cdot z_t^+ / \tau}\right)}{ {\sum_{z \in \{z_t^+, z_t^-\}}} {\exp\left({z_v \cdot z / \tau}\right)} }

τ\tau 是温度超参数(实验中固定为 1.0),zt+z_t^+ 是与该视频片段时序重叠的正文本嵌入,{zt−}\{z_t^-\} 是同一批次内其他文本片段隐式构成的负样本;文本到视频方向的损失对称定义。

时序重叠的正样本采样

构造正样本对的具体步骤是:先采样一个文本片段(因为先采样视频片段可能附近没有对应文本),再在文本片段时间范围内随机选一个时间点作为视频片段的中心,最后以该中心生长出时长随机(最长约32秒)的视频片段。这样做的动机是:人说话和做动作通常不同步,严格按时间戳对齐的视频-文本片段实际语义相关性可能很低(例如一句话「我来教你做炒饭」对齐的画面可能只是「说话的人」,而「饭在锅里」的画面稍后才出现却语义更贴切);若把这类低相关对当作正样本、把语义更贴切的片段当作负样本,会削弱对比学习信号。允许时序重叠而非精确对齐后,一个视频(或文本)片段有更大机会被邻近的高相关片段监督,从而学到更细粒度的视频-文本关联。

检索增强预训练

每个 epoch 交替执行检索与训练两个阶段:先用当前模型为每个视频计算全局特征 zV=12∣BV∣∑(v,t)∈BV(zv+zt)z_V=\frac{1}{2|B_V|}\sum_{(v,t)\in B_V}(z_v+z_t)(对该视频所有片段对的嵌入取平均),并对全部视频建立稠密向量索引;然后从 2k2k 个最近邻视频中采样出 kk 个视频组成一个「簇」cc,而不是直接取最近的 kk 个——这是为了让簇内视频彼此都足够接近,而不只是都接近锚点视频 VV;最后从各簇采样时序重叠的视频-文本对组成训练批次,簇内不同视频的片段互为难负样本。之所以要跨视频挖掘难负样本,是因为已有工作大多只在同一视频内采样多个片段做对比,而作者发现跨视频挖掘出的负样本明显更具挑战性、更能推动模型学习细粒度区分能力。

零样本迁移到片段级任务

对于动作分割这类需要拒识「Outside」标签(预训练阶段不存在的类别)的任务,模型对每个视频 token uu 的隐状态 huh_u 与各标签文本嵌入 ztz_t 做点积,若最大相似度超过阈值 γ\gamma 则取相似度最高的标签,否则判为 Outside:

y^u={arg⁡max⁡t∈L(huzt⊤)if max⁡t∈L(huzt⊤)>γOutsideotherwise\hat{y}_u=\begin{cases}\arg\max_{t\in L}(h_u z_t^{\top}) & \text{if } \max_{t\in L}(h_u z_t^{\top})>\gamma\\ \text{Outside} & \text{otherwise}\end{cases}

由于零样本设置下没有验证集可调阈值,γ\gamma 直接估计为标签间两两点积的最大值 γ=max⁡(ztzt′⊤)\gamma=\max(z_t z_{t'}^{\top}),用标签自身的可分性代替人工调参。动作步骤定位任务没有 Outside 类别,直接对各步骤文本嵌入做 softmax 得到分布。

小结

VideoCLIP 的关键不是换了更大的模型或数据,而是重新设计了对比学习的「正样本怎么配」(时序重叠而非精确对齐)与「负样本怎么找」(跨视频检索而非batch内随机),这两点共同决定了零样本迁移的细粒度区分能力。

完整流程。 预训练:从 HowTo100M 采样时序重叠的视频-文本对 → 双塔 Transformer 编码并池化 → 对称 InfoNCE 损失训练;每个 epoch 先用当前模型给所有视频建索引并检索邻近视频簇,再从簇内采样难负样本训练。推理:直接用预训练好的视频/文本编码器计算相似度,按任务需要做检索排序、答案排序、阈值化标签匹配或 softmax 分布预测,全程不使用下游标签。

实验与关键数据

预训练数据为 HowTo100M(约110万条教学视频,平均6.5分钟/条)。零样本评测覆盖 Youcook2、MSR-VTT、DiDeMo(检索)、MSR-VTT QA、COIN(分割)、CrossTask(定位)六个数据集,均不用目标标签,结果显示多数据集上零样本逼近甚至超过全监督基线。

关键数据

Youcook2 文本→视频检索 R@1(零样本)
22.7%
vs MIL-NCE 15.1%(+7.6)
MSR-VTT 文本→视频检索 R@1(零样本)
10.4%
vs MIL-NCE 9.9%(+0.5)
MSR-VTT VideoQA 准确率(零样本)
73.9%
COIN 动作分割帧准确率(零样本)
58.9%
vs MIL-NCE(有监督)61.0%(-2.1)
COIN 动作分割帧准确率(微调)
68.7%
vs ActBERT(有监督)57.0%(+11.7)
CrossTask 动作步骤定位平均召回(微调)
47.3%
vs UniVL(有监督)42.0%(+5.3)

影响与局限

VideoCLIP 是把 CLIP 式对比预训练+零样本迁移范式从图像扩展到视频-文本领域的早期代表工作,其「时序重叠采样」与「检索增强负样本挖掘」两个思路被后续视频-语言预训练与长视频理解工作广泛借鉴,也为之后基于大规模视频-文本对比学习的基础模型提供了方法论参照。

局限与不足

论文依赖冻结的预训练 S3D 视频编码器和 BERT 初始化的文本编码器,视频端本身的时序建模能力受限于 CNN 提取器每秒1个token的粗粒度采样,难以刻画更细的动作时序结构;检索增强训练需要每个epoch重建全部视频的稠密索引,带来额外的计算与工程开销,且聚类簇大小(k)、检索邻域大小(2k)等超参数需要经验调优;零样本在 MSR-VTT 上明显弱于 Youcook2,作者指出这是预训练语料(HowTo100M 教学视频的口语转写)与下游数据集(更具描述性的字幕)之间的领域偏移导致,说明方法的零样本泛化能力对预训练数据分布仍较敏感;动作分割中 Outside 阈值靠标签间点积的启发式估计,并非针对具体数据集校准,精度有限。