🔥 CLIP4Caption:CLIP for Video Caption
原文链接:https://arxiv.org/abs/2110.06615
本文为个人CLIP4Caption精读笔记及其注解
欢迎点赞收藏
文章目录
📚2021 ACM MM CLIP4Caption核心Method速读
🔥 CLIP4Caption方法精读:视频-文本双模态预训练的视频字幕生成
核心方法(METHODOLOGY)
CLIP4Caption采用两阶段训练策略,通过视频-文本匹配预训练获得强文本相关的视频表示,然后微调生成字幕。
2.1 视频-文本匹配预训练(VTM)
特征提取
使用预训练的CLIP (ViT-B/32)提取视频帧特征:
f i = { f i 1 , f i 2 , . . . , f i ∣ v i ∣ } \mathbf{f}_i = \{f_i^1, f_i^2, ..., f_i^{|v_i|}\} fi={fi1,fi2,...,fi∣vi∣}
其中:
- v i = { v i 1 , v i 2 , . . . , v i ∣ v i ∣ } v_i = \{v_i^1, v_i^2, ..., v_i^{|v_i|}\} vi={vi1,vi2,...,vi∣vi∣}:视频 i i i的帧序列
-
f
i
j
f_i^j
fij:第
j
j
j帧的特征表示,shape:
[512]
- ∣ v i ∣ |v_i| ∣vi∣:视频帧数
相似度计算
平均池化后计算视频-文本相似度:
s ( f ^ i , t j ) = t j ⊤ f ^ i ∥ t j ∥ ∥ f ^ i ∥ s(\hat{f}_i, t_j) = \frac{t_j^{\top}\hat{f}_i}{\|t_j\|\|\hat{f}_i\|} s(f^i,tj)=∥tj∥∥f^i∥tj⊤f^i
其中:
-
f
^
i
\hat{f}_i
f^i:平均帧嵌入,shape:
[512]
-
t
j
t_j
tj:文本嵌入,shape:
[512]
对比学习损失
使用InfoNCE损失进行自监督训练:
L v 2 t = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ i , t j ) ) \mathcal{L}_{v2t} = -\frac{1}{N}\sum_{i}^{N}\log\frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N}\exp(s(\hat{f}_i, t_j))} Lv2t=−N1i∑Nlog∑jNexp(s(f^i,tj))exp(s(f^i,ti))
L t 2 v = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ j , t i ) ) \mathcal{L}_{t2v} = -\frac{1}{N}\sum_{i}^{N}\log\frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N}\exp(s(\hat{f}_j, t_i))} Lt2v=−N1i∑Nlog∑jNexp(s(f^j,ti))exp(s(f^i,ti))
L = L v 2 t + L t 2 v \mathcal{L} = \mathcal{L}_{v2t} + \mathcal{L}_{t2v} L=Lv2t+Lt2v
【图1】展示整体框架:预训练阶段(下半部分)和微调阶段(上半部分)
2.2 视频字幕生成微调
模型架构
- 视频编码器:单层Transformer编码器(TE)
- 解码器:三层Transformer解码器(TD)
动态视频特征处理:
F v = ViT ( v i ) ∈ R n × 512 F_v = \text{ViT}(v_i) \in \mathbb{R}^{n \times 512} Fv=ViT(vi)∈Rn×512
其中 n n n是可变帧数,形成动态特征矩阵。
生成过程
f v e = TE ( F v ) f_{ve} = \text{TE}(F_v) fve=TE(Fv)
t = TD ( f v e ) t = \text{TD}(f_{ve}) t=TD(fve)
交叉熵损失:
L c e = − ∑ t = 1 L log p t ( S t ) \mathcal{L}_{ce} = -\sum_{t=1}^{L}\log p_t(S_t) Lce=−t=1∑Llogpt(St)
其中:
- L L L:最大句子长度
- p t p_t pt:时刻 t t t的词概率分布
- S t S_t St:已生成的部分句子
2.3 集成策略
重要性评分
使用多个指标评估候选字幕:
S i = metric ( ref = [ T 1 , . . . , T i − 1 , T i + 1 , . . . , T n ] , hyp = T i ) S_i = \text{metric}(\text{ref} = [T_1, ..., T_{i-1}, T_{i+1}, ..., T_n], \text{hyp} = T_i) Si=metric(ref=[T1,...,Ti−1,Ti+1,...,Tn],hyp=Ti)
多指标归一化
metric overall = 1 M ( metric 1 metric 1 b + metric 2 metric 2 b + . . . + metric M metric M b ) \text{metric}_{\text{overall}} = \frac{1}{M}\left(\frac{\text{metric}_1}{\text{metric}_{1b}} + \frac{\text{metric}_2}{\text{metric}_{2b}} + ... + \frac{\text{metric}_M}{\text{metric}_{Mb}}\right) metricoverall=M1(metric1bmetric1+metric2bmetric2+...+metricMbmetricM)
其中:
- M M M:指标数量
- metric i b \text{metric}_{ib} metricib:第 i i i个指标的最佳值(用于归一化)
核心Tips
- TSN采样策略:将视频分成 K K K段,每段随机采样一帧,增加训练时的随机性
- 动态特征:保留时序信息的 n × 512 n \times 512 n×512矩阵,而非固定维度向量
- 权重初始化:使用Uni-VL预训练权重初始化编码器和解码器
- 基于指标的集成:不是简单平均,而是选择综合评分最高的字幕
📚2021 ACM MM CLIP4Caption全文精读
摘要(ABSTRACT)
【任务描述】视频字幕生成是一项具有挑战性的任务,因为它需要生成描述各种多样且复杂视频的句子。
【任务背景:现有不足】现有的视频字幕生成模型由于忽视了视频和文本之间存在的差距,缺乏充分的视觉表示。
【本文方法】为了弥合这一差距,本文提出了一个CLIP4Caption框架,该框架基于CLIP增强的视频-文本匹配网络(VTM) 改进视频字幕生成。该框架充分利用视觉和语言的信息,并强制模型学习与文本强相关的视频特征用于文本生成。
【与传统方法额外的不同点】此外,与大多数使用LSTM或GRU作为句子解码器的现有模型不同,我们采用Transformer结构的解码器网络来有效学习长程视觉和语言依赖关系。另外,我们为字幕生成任务引入了一种新颖的集成策略。
【取得成果】实验结果证明了我们方法在两个数据集上的有效性:1)在MSR-VTT数据集上,我们的方法取得了新的最先进结果,在CIDEr指标上显著提升了高达10%;2)在私有测试数据上,我们的方法在ACM MM 2021多媒体大挑战赛:视频理解预训练挑战赛中排名第2。值得注意的是,我们的模型仅在MSR-VTT数据集上训练。
CCS概念(CCS CONCEPTS)
- 计算方法论 → 神经网络。
关键词(KEYWORDS)
视频字幕,视频-文本匹配,预训练,transformer
1 引言(INTRODUCTION)
【任务背景,应用领域】为视频内容添加描述对人类来说是一项劳动密集型任务。因此,计算机科学家投入了大量努力来连接人类语言与视觉信息,以开发一个使用自然语言句子自动描述视频的系统。视频字幕生成的进步增强了现实中的各种应用,例如自动视频字幕制作、视觉障碍人士辅助、人机交互以及改进在线视频搜索或检索 [1] 。
【现状调研】早期的视频字幕生成研究使用基于模板的方法 [8, 27, 36] ,将预测的词与预定义模板对齐。S2VT [31] 提出了基于LSTM [9] 的序列到序列(sequence-to-sequence)模型用于视频字幕生成。从那时起,引入了许多序列学习方法,这些方法采用编码器-解码器架构来灵活生成字幕 [13, 19, 20, 33, 37, 38] 。 [37] 提出了一种基于注意力的方法,考虑视频的局部和全局时间结构来生成描述。RecNet [33] 提出了一个重建网络,利用视频到文本和文本到句子的流程进行视频字幕生成。近年来的研究中,一些研究人员也成功地将视觉-语言(VL)预训练用于VL理解,在图像字幕生成的下游任务中取得了重大进展 [11, 12, 40] 。
上述所有方法都使用基于CNN的网络构建视频编码器,由于它们仅利用视觉模态的信息,缺乏充分的视觉表示。在本文中,我们引入了一个由经过良好预训练的CLIP [26] 模型赋能的视频-文本匹配网络,以学习充分利用视觉和语言模态的视频嵌入。
根据PDF中的参考文献和现状调研内容,我整理了以下视频字幕生成方法的发展历程表格:
年份 参考文献 方法名称 主要技术特点 类别 1997 [9] LSTM 长短期记忆网络 基础模型 2013 [8] Youtube2text 使用语义层次结构和零样本识别识别和描述任意活动 基于模板的方法 2013 [27] - 将视频内容翻译为自然语言描述 基于模板的方法 2015 [36] - 在统一框架中联合建模深度视频和组合文本以连接视觉和语言 基于模板的方法 2015 [31] S2VT 基于LSTM的序列到序列(Sequence to Sequence)视频到文本模型 序列学习方法 2015 [37] - 基于注意力机制,利用视频的时间结构(局部和全局)生成描述 序列学习方法 2016 [19] - 联合建模嵌入和翻译以连接视频和语言 编码器-解码器架构 2016 [38] - 使用分层循环神经网络的视频段落字幕生成 序列学习方法 2017 [20] - 带有转移语义属性的视频字幕生成 编码器-解码器架构 2018 [13] - 联合定位和描述事件用于密集视频字幕生成 序列学习方法 2018 [33] RecNet 重建网络,利用视频到文本和文本到句子的双向流程 编码器-解码器架构 2020 [11] Oscar 对象-语义对齐的视觉-语言任务预训练 VL预训练方法 2020 [40] Uni-VL 用于图像字幕和VQA的统一视觉-语言预训练 VL预训练方法 2021 [12] - 解耦编码器-解码器网络的视觉-语言预训练中的计划采样 VL预训练方法 2021 [26] CLIP 从自然语言监督中学习可迁移的视觉模型 VL预训练方法 技术演进总结:
- 早期阶段(2013-2015) :基于模板的方法,需要预定义模板来对齐预测词汇
- 序列学习阶段(2015-2018) :引入LSTM和序列到序列模型,采用编码器-解码器架构灵活生成字幕
- 注意力机制阶段(2015-2018) :引入注意力机制,考虑视频的局部和全局时间结构
- VL预训练阶段(2020-2021) :视觉-语言预训练方法兴起,在下游任务中取得重大进展
关键问题: 前期方法都使用基于CNN的网络构建视频编码器,仅利用视觉模态信息,缺乏充分的视觉表示。本文通过CLIP增强的视频-文本匹配网络,充分利用视觉和语言双模态信息。
具体来说,我们首先预训练一个视频-文本匹配模型以获得文本相关的视频嵌入,然后将这些增强的视频嵌入作为输入,在一个经过良好预训练的Transformer解码器网络中进行微调。值得注意的是,我们的Transformer解码器由预训练的Uni-VL [15] 模型的部分权重初始化。大量实验表明,我们的方法在MSR-VTT数据集 [35] 上优于最先进的视频字幕生成方法 [28] 。此外,我们的方法在ACM MM 2021大挑战赛:视频理解预训练挑战赛的第一赛道视频字幕生成预训练中排名第2。
本工作的主要贡献总结如下:
- 我们利用CLIP增强的视频-文本匹配网络来强制我们的模型学习用于文本生成的强相关视频和文本特征。
- 我们利用经过良好预训练的视频和语言模型Uni-VL的权重,同时大大简化其结构以更好地适应视频字幕生成任务。
- 我们为视频字幕生成设计了一种新颖的集成机制。
- 我们在最广泛使用的MSR-VTT数据集上广泛验证我们的模型。结果表明,我们的框架在视频字幕生成方面优于多种最先进的方法,展示了我们框架在这项具有挑战性任务上的巨大潜力。
2 方法论(METHODOLOGY)
图1展示了我们提出的用于视频字幕生成的CLIP4Caption框架。我们分两个阶段训练系统。首先,我们在MSR-VTT数据集上预训练一个视频-文本匹配网络以获得更好的视觉表示(图1下半部分)(2.1)。其次,我们将预训练的匹配网络作为微调阶段的视频特征提取器(图1上半部分)。帧嵌入序列被输入到视频编码器,与生成文本的解码器连接(2.2)。对于集成,我们训练具有不同编码器和解码器层数的多个字幕模型,并集成所有生成的字幕文本以获得最终的强结果(2.3)。详细内容将如下阐述。
1、预训练,视频-文本匹配
2、冻结上一个网络,作为视频特征提取器,进入微调模型
2.1 视频-文本匹配预训练(Video-text matching pre-training)
由于从CLIP [26] 转换而来的CLIP4Clip模型在视频-文本检索任务中表现出色,我们基于CLIP4Clip预训练我们的视频-文本匹配网络(VTM)。CLIP4Clip以1 FPS从视频中提取图像帧,每个epoch的输入视频帧来自视频的固定位置。我们将帧采样方法改进为TSN采样[34] ,它将视频分成K个片段,并在每个片段中随机采样一帧,从而在有限数据集上增加采样的随机性。经过TSN采样后,输入帧由预训练的CLIP (ViT-B/32) 视频编码器 [7] 编码,该编码器有12层,补丁大小(patch_size)为32,因为CLIP足以胜任图像-文本检索任务。将视频的输入视频帧记为 v i = { v i 1 , v i 2 , . . . , v i ∣ v i ∣ } v_i = \{v_i^1, v_i^2, ..., v_i^{|v_i|}\} vi={vi1,vi2,...,vi∣vi∣},视频帧嵌入可以表示为 f i = { f i 1 , f i 2 , . . . , f i ∣ v i ∣ } f_i = \{f_i^1, f_i^2, ..., f_i^{|v_i|}\} fi={fi1,fi2,...,fi∣vi∣}。
v i j v_i^j vij是视频 i i i的第 j j j帧
f i j f_i^j fij嘶视频 i i i的第 j j j帧的特征表示
使用一个12层512维、具有8个注意力头的Transformer [29] 编码器作为文本编码器,其权重源自预训练的CLIP文本编码器。遵循CLIP和CLIP4Clip,transformer最高层的 [EOS] 标记的激活被用作输入文本的特征表示。对于输入文本 s j s_j sj,相应的文本嵌入记为 t j t_j tj。
视频编码后,我们使用平均池化层来聚合所有帧的嵌入并获得平均帧嵌入。然后,可以为视频-文本匹配定义相似度函数。与CLIP4Clip类似,我们采用余弦相似度来衡量联合视频帧嵌入 f ^ i \hat{f}_i f^i和文本嵌入 t j t_j tj之间的相似度,公式如下:
s ( f ^ i , t j ) = t j ⊤ f ^ i ∥ t j ∥ ∥ f ^ i ∥ (1) s(\hat{f}_i, t_j) = \frac{t_j^{\top} \hat{f}_i}{\|t_j\| \|\hat{f}_i\|} \tag{1} s(f^i,tj)=∥tj∥∥f^i∥tj⊤f^i(1)
视频-文本匹配以自监督方式训练。给定一批N个视频-文本对,VTM生成N × N个相似度,优化目标是最大化配对视频-文本之间的相似度,并最小化未配对文本的相似度。因此,损失函数定义如下:
这里的译文我进行了更正,原文或存在小问题
原文内容:
“the optimization goal is to maximize the similarity between paired video-text and maximize the similarity of unpaired text”
这里确实存在问题! 原文第二部分"maximize the similarity of unpaired text"应该是作者的笔误。
正确的理解应该是:
- ✅ 最大化配对的视频-文本相似度(正样本对)
- ✅ 最小化未配对的视频-文本相似度(负样本对)
从损失函数可以验证:
L v 2 t = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ i , t j ) ) \mathcal{L}_{v2t} = -\frac{1}{N} \sum_{i}^{N} \log \frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N} \exp(s(\hat{f}_i, t_j))} Lv2t=−N1i∑Nlog∑jNexp(s(f^i,tj))exp(s(f^i,ti))
这是标准的InfoNCE损失(对比学习损失):
- 分子 exp ( s ( f ^ i , t i ) ) \exp(s(\hat{f}_i, t_i)) exp(s(f^i,ti)):正确配对的相似度
- 分母 ∑ j N exp ( s ( f ^ i , t j ) ) \sum_{j}^{N} \exp(s(\hat{f}_i, t_j)) ∑jNexp(s(f^i,tj)):包含1个正样本和N-1个负样本
最小化这个损失等价于:
- 增大分子 → 提高正确配对(i,i)的相似度 ✅
- 减小分母中其他项 → 降低错误配对(i,j≠i)的相似度 ✅
这就是对比学习的核心思想:
- 将语义相关的视频-文本对拉近
- 将语义无关的视频-文本对推远
所以你的判断是对的,原文这里应该是笔误。这是CLIP和所有对比学习方法的基本原理:同时优化正负样本对的距离。
L v 2 t = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ i , t j ) ) (2) \mathcal{L}_{v2t} = -\frac{1}{N} \sum_{i}^{N} \log \frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N} \exp(s(\hat{f}_i, t_j))}\tag{2} Lv2t=−N1i∑Nlog∑jNexp(s(f^i,tj))exp(s(f^i,ti))(2)
L t 2 v = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ j , t i ) ) (3) \mathcal{L}_{t2v} = -\frac{1}{N} \sum_{i}^{N} \log \frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N} \exp(s(\hat{f}_j, t_i))}\tag{3} Lt2v=−N1i∑Nlog∑jNexp(s(f^j,ti))exp(s(f^i,ti))(3)
L = L v 2 t + L t 2 v (4) \mathcal{L} = \mathcal{L}_{v2t} + \mathcal{L}_{t2v}\tag{4} L=Lv2t+Lt2v(4)
其中 L v 2 t \mathcal{L}_{v2t} Lv2t和 L t 2 v \mathcal{L}_{t2v} Lt2v分别表示视频到文本和文本到视频的损失函数。
我们使用ViT视频编码器的输出,即帧嵌入序列,作为我们的视频视觉表示。每帧被映射到512维视觉特征,对于每个视频产生 n × 512 n \times 512 n×512动态特征 F v i = V i T ( v i ) F_{v_i} = ViT(v_i) Fvi=ViT(vi),其中n是帧数。
VTM是什么?
VTM是什么?
VTM = Video-Text Matching,即视频-文本匹配网络。这是本文提出的一个关键组件,用于学习视频和文本之间的对应关系。训练目标的理解
这里我的翻译有误,应该更正为:
优化目标是最大化配对视频-文本之间的相似度,并最小化未配对视频-文本之间的相似度。
具体训练过程:
假设有一批N=3的视频-文本对:
- (视频1, 文本1) ✅ 配对
- (视频2, 文本2) ✅ 配对
- (视频3, 文本3) ✅ 配对
VTM会生成一个3×3的相似度矩阵:
文本1 文本2 文本3 视频1 s11 s12 s13 视频2 s21 s22 s23 视频3 s31 s32 s33
其中:
- 对角线元素 (s11, s22, s33) 是正确配对的相似度 → 希望最大化
- 非对角线元素 (s12, s13, s21等) 是错误配对的相似度 → 希望最小化
损失函数解读:
看公式(2)的视频到文本损失:
L v 2 t = − 1 N ∑ i N log exp ( s ( f ^ i , t i ) ) ∑ j N exp ( s ( f ^ i , t j ) ) \mathcal{L}_{v2t} = -\frac{1}{N} \sum_{i}^{N} \log \frac{\exp(s(\hat{f}_i, t_i))}{\sum_{j}^{N} \exp(s(\hat{f}_i, t_j))} Lv2t=−N1i∑Nlog∑jNexp(s(f^i,tj))exp(s(f^i,ti))
这实际上是一个softmax交叉熵损失:
- 分子: exp ( s ( f ^ i , t i ) ) \exp(s(\hat{f}_i, t_i)) exp(s(f^i,ti)) 是正确配对的相似度
- 分母:所有可能配对的相似度之和
通过最小化这个损失,实现:
- ✅ 增大分子 → 提高正确配对的相似度
- ✅ 减小分母中的其他项 → 降低错误配对的相似度
这就是对比学习!
这种方法叫做对比学习(Contrastive Learning) ,是CLIP的核心思想:
- 将配对的视频-文本拉近(提高相似度)
- 将未配对的视频-文本推远(降低相似度)
这样训练后,VTM就能学会识别哪些视频和文本是相关的,从而提取出强文本相关的视频特征,用于后续的字幕生成任务。
为什么说是动态特征?
这里称为 “动态特征” 有以下几个原因:
1. 序列性和时序性
- 这些特征来自视频的多个帧,形成一个序列 (n个帧的序列)
- 不同于静态图像的单一特征向量,这是一个时序特征序列
- 能够捕捉视频中的时间动态变化和运动信息
2. 长度可变性
- n是可变的 - 不同视频的帧数不同
- 有的视频可能提取10帧,有的可能20帧
- 所以特征维度是 n × 512,其中n是动态变化的
3. 对比"静态特征"
静态特征 动态特征 单张图像 → 1×512向量 视频序列 → n×512矩阵 固定维度 可变长度 无时序信息 包含时序信息 表示瞬间状态 表示连续变化 4. 视频的本质属性
视频 = 图像序列 + 时间维度 ↓ 动态特征 = 空间特征 + 时序关系
5. 实际例子
假设一个5秒的视频:
- 提取20帧 → 20×512的特征矩阵
- 每一行(512维):某一时刻的空间特征
- 所有行组合:视频的时空动态特征
- 可以表示:人物走动、物体运动、场景变化等动态信息
所以"动态特征"强调的是这些特征能够表示视频中的运动、变化和时序关系,而不仅仅是静态的视觉信息。
2.2 视频字幕生成微调(Fine-tune on video captioning)
在微调阶段,我们利用经过良好预训练的模型Uni-VL,并在MSR-VTT数据集上微调**Uni-VL的编码器-解码器架构用于视频字幕生成。Uni-VL是一个双流视频和语言预训练模型。在Uni-VL的预训练期间,文本和视频分别输入到文本编码器和视频编码器,交叉编码器对齐文本嵌入和视频嵌入。在我们的微调阶段,我们丢弃文本编码器和交叉编码器,因为我们数据集的输入视频没有相关转录**。在所有预训练的Uni-VL层上进行微调阶段是困难的,因为MSR-VTT数据集(用于微调阶段)相对于Uni-VL的预训练数据集HowTo100M [17] 来说相对较小。因此,CLIP4Caption通过减少Transformer层数来轻松训练并防止过拟合。
如上所述,我们的字幕生成模型由基于Transformer的视频编码器和解码器组成,强文本相关的视频特征 F v F_v Fv被输入到单层Transformer视频编码器(TE) 以获得增强特征 f v e = T E ( F v ) f_{ve} = TE(F_v) fve=TE(Fv),然后输入到三层Transformer解码器(TD) 为每个视频生成字幕 t = T D ( F v e ) t = TD(F_{ve}) t=TD(Fve)。我们使用在Uni-VL中预训练的权重初始化TE和TD,并仅使用交叉熵损失训练模型:
L c e = − ∑ t = 1 L log p t ( S t ) (5) \mathcal{L}_{ce} = -\sum_{t=1}^{L} \log p_t(S_t)\tag{5} Lce=−t=1∑Llogpt(St)(5)
其中L是字幕句子的最大长度, p t p_t pt是时间t时预测词的概率, S t S_t St是时间t时已生成的句子。
2.3 集成策略(Ensemble strategy)
单个模型不足以获得出色的预测结果。为了获得更强大的字幕结果,我们为字幕生成任务设计了一种新颖的基于指标的投票策略。我们利用字幕评估指标,如BLEU4、CIDEr、SPICE等,作为生成句子的"重要性分数",并选择得分最高的句子组成最终结果。
数学上,将来自n个不同模型的一个视频的预测字幕视为 T i T_i Ti,使用单个指标的第 i i i个字幕 S i S_i Si的重要性分数可以通过假设其余预测字幕 [ T j ] j ≠ i [T_j]_{j \neq i} [Tj]j=i作为"真实"字幕来计算:
S i = m e t r i c ( r e f = [ T 1 , . . . , T i − 1 , T i + 1 , . . . , T n ] , h y p = T i ) (6) S_i = metric(ref = [T_1, ..., T_{i-1}, T_{i+1}, ..., T_n], hyp = T_i)\tag{6} Si=metric(ref=[T1,...,Ti−1,Ti+1,...,Tn],hyp=Ti)(6)
其中 i ∈ [ 1 , n ] i \in [1, n] i∈[1,n], m e t r i c ( ⋅ ) metric(\cdot) metric(⋅)是字幕生成指标。选择得分 S S S最大的预测字幕作为最终输出。由于字幕生成任务通常使用多个指标,并且每个指标的值范围不一致,我们使用每个指标的最大值对其进行归一化 [5] 。考虑多个指标,总体指标可以计算为:
m e t r i c o v e r a l l = ( m e t r i c 1 m e t r i c 1 b + m e t r i c 2 m e t r i c 2 b + ⋯ + m e t r i c M m e t r i c M b ) / M (7) metric_{overall} = (\frac{metric_1}{metric_{1b}} + \frac{metric_2}{metric_{2b}} + \cdots + \frac{metric_M}{metric_{Mb}})/M\tag{7} metricoverall=(metric1bmetric1+metric2bmetric2+⋯+metricMbmetricM)/M(7)
分母是对应不用指标的最大值,这里进行了归一化
其中M表示用于计算 m e t r i c o v e r a l l metric_{overall} metricoverall的指标数量, m e t r i c i b metric_{ib} metricib表示特定指标 m e t r i c i metric_i metrici的最佳数值(best)。多个指标的重要性分数为:
S ^ i = m e t r i c o v e r a l l ( r e f = [ T 1 , . . . , T i − 1 , T i + 1 , . . . , T n ] , h y p = T i ) (8) \hat{S}_i = metric_{overall}(ref = [T_1, ..., T_{i-1}, T_{i+1}, ..., T_n], hyp = T_i)\tag{8} S^i=metricoverall(ref=[T1,...,Ti−1,Ti+1,...,Tn],hyp=Ti)(8)
“集成策略 (Ensemble strategy)”公式和符号捋清楚。之所以感觉混淆,是因为文中用了多层次的 metric(单指标、多指标),有点跳跃。
1. 单指标情况下(公式 6)
他们有 n 个不同模型,每个模型生成一句候选字幕 T i T_i Ti。
想评价候选 T i T_i Ti 的质量,就把其他模型生成的字幕当作“伪参考”(reference)。S i = m e t r i c ( r e f = [ T 1 , … , T i − 1 , T i + 1 , … , T n ] , h y p = T i ) S_i = metric\big(\,ref=[T_1,\dots,T_{i-1},T_{i+1},\dots,T_n],\; hyp=T_i \big) Si=metric(ref=[T1,…,Ti−1,Ti+1,…,Tn],hyp=Ti)
- S i S_i Si:第 i i i 个候选字幕的评分(得分越高越好)。
- m e t r i c ( ⋅ ) metric(\cdot) metric(⋅):一个自动评测指标,比如 BLEU4、CIDEr、SPICE。
- r e f ref ref:参考字幕(这里不是人工标注,而是剩下 n − 1 n-1 n−1 个模型的预测)。
- h y p hyp hyp:候选字幕(就是当前 T i T_i Ti)。
👉 意思:在一堆模型输出中,假设“群体智慧”≈参考,然后评判单个模型的字幕。
2. 多指标综合(公式 7)
问题:不同指标的数值范围不同(CIDEr 常是百位,BLEU4 在 0–1)。
所以作者先把每个指标按“最大值”归一化:m e t r i c o v e r a l l = 1 M ( m e t r i c 1 m e t r i c 1 b + m e t r i c 2 m e t r i c 2 b + ⋯ + m e t r i c M m e t r i c M b ) metric_{overall} \;=\; \frac{1}{M}\left(\frac{metric_1}{metric_{1b}} + \frac{metric_2}{metric_{2b}} + \dots + \frac{metric_M}{metric_{Mb}}\right) metricoverall=M1(metric1bmetric1+metric2bmetric2+⋯+metricMbmetricM)
- M M M:使用的指标数量。
- m e t r i c i b metric_{ib} metricib:第 i i i 个指标的最佳分数(best,用来做归一化分母)。
- 这样处理后,所有指标都缩放到 0–1 区间,最后取平均。
👉 相当于把 BLEU、CIDEr、SPICE 等指标拉到同一量纲后,合并成一个“总体分数”。
3. 综合指标下的重要性分数(公式 8)
再把归一化之后的综合指标 m e t r i c o v e r a l l metric_{overall} metricoverall 用在公式 (6) 的框架里:
S ^ i = m e t r i c o v e r a l l ( r e f = [ T 1 , … , T i − 1 , T i + 1 , … , T n ] , h y p = T i ) \hat S_i = metric_{overall}\big(\,ref=[T_1,\dots,T_{i-1},T_{i+1},\dots,T_n],\; hyp=T_i \big) S^i=metricoverall(ref=[T1,…,Ti−1,Ti+1,…,Tn],hyp=Ti)
- S ^ i \hat S_i S^i:候选 T i T_i Ti 在多个指标加权后的最终分数。
- 选分数最高的 T i T_i Ti 作为 ensemble 的最终输出。
✅ 所以对应关系是这样的:
- (6):单指标,算单个候选的得分。
- (7):把不同指标归一化并平均,得到综合指标函数。
- (8):用 (7) 的综合指标再算每个候选字幕的分数。
也就是说,(7) 本身不是对字幕算分,而是定义一个新的综合指标;(8) 才是把这个综合指标用到候选字幕上。
文中说Si字幕,然后又放在公式左边代表分数,有点混淆
你抓得很对 👍
其实作者在表述上有点“偷懒”,导致符号 S i S_i Si 有点让人误会。我们来拆开:
1. 文中写法
- 文本说「将来自 n 个不同模型的一个视频的预测字幕视为 T i T_i Ti」
- 接着又写「第 i 个字幕的重要性分数可以通过 … 来计算:
S i = m e t r i c ( r e f = { T j ∣ j ≠ i } , h y p = T i ) S_i = metric(ref=\{T_j|j \neq i\},\; hyp=T_i) Si=metric(ref={Tj∣j=i},hyp=Ti)所以严格讲:
- 字幕本身 应该是 T i T_i Ti(候选句子)。
- S i S_i Si 不是字幕,而是候选字幕的评分(重要性分数) 。
2. 可能的原因
作者为了节省符号,直接用 S i S_i Si 表示“第 i 个字幕对应的得分”。
这就容易让人以为 S i S_i Si 是“字幕”,但其实它是个数值分数。也就是说:
- 真正的字幕 → T i T_i Ti
- 评价指标算出来的分数 → S i S_i Si
3. 更清晰的改写(如果是我写的话)
我会写成:
s c o r e ( T i ) = m e t r i c ( r e f = { T j ∣ j ≠ i } , h y p = T i ) score(T_i) = metric\big(ref=\{T_j|j \neq i\},\; hyp=T_i\big) score(Ti)=metric(ref={Tj∣j=i},hyp=Ti)这样就避免了把 S i S_i Si 当成“字幕”的歧义。
✅ 总结:
文中把 S i S_i Si 叫“字幕”是不严谨的,它应该是“第 i 个候选字幕 T i T_i Ti 的重要性分数”。
真正的字幕始终是 T i T_i Ti,不是 S i S_i Si。
Q:所以 这里的整体思想是什么,取所有模型各自在擅长指标上的最好值?那这个多个模型在文中是咋来的?不同的encoder和decoder层的集成吗?
你理解得已经很接近了 👍 我帮你把 CLIP4Caption 的 ensemble 思路完整梳理一下:
1. 整体思想
论文里的集成(ensemble)和常见的“平均概率”不一样,它是 基于评测指标的投票机制:
- 每个模型会生成一条候选字幕 T i T_i Ti。
- 它们彼此之间互相作为“伪参考”,用 BLEU、CIDEr、SPICE 等指标来算分。
- 通过 (6)(7)(8),算出每个候选字幕的 综合得分 S i S_i Si。
- 最终只选择得分最高的那条字幕,作为该视频的输出。
👉 所以不是取“各指标的最好值拼起来”,而是:在多个模型输出的候选字幕中,找一条最可能全面优秀的。
(有点像“模型互评,众人选一”。)
2. 多个模型是怎么来的?
文中提到,他们训练了很多模型(几十个),来源是 改变 encoder 和 decoder 的层数、数据划分:
- Encoder:尝试 1 层、3 层、6 层的 Transformer video encoder。
- Decoder:尝试 1 到 6 层不等的 Transformer decoder。
- 数据划分:用 MSR-VTT 的不同 split(6K, 9K, 10K)来训练。
这样就得到了一批“不同配置”的 caption 模型,每个模型生成的字幕风格略有差异。
👉 这些模型的输出合在一起,就是 ensemble 的候选集 { T 1 , T 2 , … , T n } \{T_1, T_2, \dots, T_n\} {T1,T2,…,Tn}。
3. 为什么这样有效?
不同模型可能在不同指标上表现好:
- 某些模型句子更流畅(BLEU 高),
- 某些模型用词更丰富(CIDEr 高),
- 某些模型语义更贴近(SPICE 高)。
直接平均不一定合理,因为生成结果是离散文本。
所以作者设计了一个 基于指标的投票/打分方法,让不同模型的优势通过“互评”体现出来。
✅ 一句话总结:
CLIP4Caption 的集成策略是:训练一堆不同配置的模型 → 让它们都生成字幕 → 把这些字幕互相当作参考来算评测分数 → 选综合分最高的那一句作为结果。
3 结果(RESULTS)
作者明确写了:
- 预训练阶段(VTM)就在 MSR-VTT 上做的。 (arXiv)
- 论文还特别说明“我们的模型只在 MSR-VTT 数据集上训练”。 (arXiv)
- 具体用了 Training-6K 和 Training-9K 两种划分做预训练;微调也在 MSR-VTT(含 6K/9K/10K 三种划分)。 (arXiv)
(他们在 ACM MM 2021 的“Pre-training for Video Understanding Challenge”上报告了私有测试集成绩,但训练仍只用 MSR-VTT。) (arXiv)
3.1 数据集划分(Dataset split)
考虑到视频理解挑战赛预训练数据集Auto-captions on GIF (ACTION) [18] 与MSR-VTT数据集之间的显著差异,我们仅使用MSR-VTT作为训练数据集。MSR-VTT数据集涵盖了广泛的视频内容类别,总视频时间约50小时,10000个视频,每个视频20个描述。对于表1和表2中的预训练结果,我们报告了在CLIP4Clip中使用的MSR-VTT Training-9K[16] 划分上的结果。对于表3中的微调结果,我们使用了MSR-VTT的标准划分(MSR-VTT Training-6K),即6,512、498和2,990个片段分别用于训练、验证和测试,以与最先进的方法进行比较。我们还使用了整个MSRVTT(MSR-VTT Training-10K) 来训练更多模型用于表4中的集成结果,并在视频理解挑战赛测试集上评估我们的集成机制。
数据集划分 视频数量 用途 对应结果表 MSR-VTT Training-9K 9,000 训练 + 1,000 验证 用于预训练(Video-Text Matching, VTM) 表1、表2 MSR-VTT Training-6K 6,512 训练 + 498 验证 + 2,990 测试 用于微调(Video Captioning) 表3 MSR-VTT Training-10K 全部 10,000 视频 训练更多模型以供集成 表4 视频理解挑战赛测试集 官方测试集(无标注) 评估集成机制效果 表4
3.2 预训练结果(Pre-training result)
视频-文本匹配预训练在8个NVIDIA Tesla P40 GPU上完成,批量大小设置为512,最大epoch数设置为5。
【表1】
【表2】
我们使用标准检索指标:排名K的召回率,记为R@K,来评估我们预训练网络的性能。我们报告了文本到视频检索和视频到文本检索的R@1、R@5、R@10指标。具有不同TSN分割的VTM结果如表1和表2所示。我们的VTM优于原始CLIP4Clip,具有3个分割的TSN采样在R@1和R@5上表现更好。鉴于此,我们使用具有3个TSN分割的VTM作为我们的特征提取器,并在微调阶段在MSR-VTT Training-6K上重新训练VTM以获得更好的视觉表示。
Q:所谓的TSN分割,是不是K断,然后每段随机抽帧
短答:是的,TSN 的核心就是把视频按时间均匀切成 K 段,每段内采样一个“片段(snippet)”,训练时通常随机,测试时常用中心点或多次采样;再把各段预测做一致性聚合(一般取平均)。
3.3 微调结果(Fine-tuning result)
在微调阶段,我们使用在MSR-VTT Training-6K上预训练的VTM作为特征提取器。为了与Uni-VL保持一致,我们将最大帧长度设置为20。字幕微调在4个GPU上完成,批量大小为1024,总epoch数为30。
在表3中,我们报告了我们提出的CLIP4Caption和其他最先进的视频字幕生成方法在MSR-VTT数据集上的标准字幕生成指标,BLEU-4 [21] 、ROUGE-L [14] 、METEOR [3] 、CIDEr [30] 、SPICE [2] 。如表3所示,我们的预训练阶段学习了用于文本生成的强大文本相关视觉表示,在Uni-VL的基础上显著改进了所有指标。CLIP4Caption取得了新的最先进结果,在CIDEr分数上显著提升了高达10%。
【表3】
3.4 集成结果(Ensemble result)
我们改变数据集划分和Transformer的层数来训练更多模型。我们在预训练阶段使用了两种划分,标准数据集划分MSR-VTT Training-6K,以及另一个数据集划分MSR-VTT Training-9K,其中9000个视频用于训练,1000个视频用于验证。结果,获得了两个VTM特征:VTM-6K-feature和VTM-9K-feature。
我们在微调阶段采用了三种划分,在预训练阶段使用的MSR-VTT Training-6K和MSR-VTT Training-9K,以及使用整个MSR-VTT数据集的MSR-VTT Training-10k。同时,我们还组合了不同层数的Transformer层。对于视觉编码器,我们尝试了1层、3层和6层Transformer编码器。至于解码器,我们尝试了从1到6的Transformer层数。这些组合产生了大量字幕生成结果。我们消除了一些在MSR-VTT验证数据集上效果不佳的结果,并在其他结果中应用集成策略。
【表4】
我们在视频理解挑战赛测试数据集上验证了我们提出的策略。用于集成的指标是SPICE和BLEU-4,因为使用其他指标的性能较差。实验结果如表3所示。与单个模型的最佳结果相比,我们的集成策略在测试数据集上显著改进了指标,并在视频理解挑战赛中排名第2。此外,结果与我们使用的结果数量呈正相关,这意味着我们可以通过持续训练足够的模型来使用这种集成策略改进我们的结果。
4 结论(CONCLUSION)
在这项工作中,我们专注于学习更好的视觉表示用于文本生成,并使用视频和语言预训练模型改进视频字幕生成。我们提出了CLIP4Caption,一个基于两阶段语言和视频预训练的视频字幕解决方案。为了获得更好的视觉表示,我们采用预训练阶段来学习强文本相关的视频特征。此外,为了改进视频字幕生成,我们利用Uni-VL预训练权重来初始化我们基于编码器-解码器的字幕生成架构,并在MSR-VTT数据集上微调模型。此外,我们引入了一种新颖的集成策略,通过使用字幕生成指标来集成多个模型的字幕生成结果。大量实验表明,我们提出的CLIP4Caption显著优于当前最先进的方法,并在视频理解挑战赛测试数据集中排名第2。
本文为个人CLIP4Caption精读笔记及其注解,个人水平有限
原文参考链接:https://arxiv.org/abs/2110.06615
如对您有帮助,欢迎点赞收藏
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2503_92010587/article/details/151589599