文章目录
前言
来源:CVPR 2022
相关设置
行
为
识
别
{
l
i
n
e
a
r
:
视
频
编
码
器
参
数
冻
结
,
只
有
线
性
分
类
器
被
优
化
f
i
n
e
−
t
u
n
e
:
视
频
编
码
器
用
线
性
分
类
器
进
行
微
调
z
e
r
o
−
s
h
o
t
:
通
过
使
用
类
别
名
称
作
为
文
本
描
述
进
行
视
频
文
本
的
检
索
(
训
练
时
的
类
别
与
测
试
时
不
相
同
)
行为识别 \begin{cases} linear:视频编码器参数冻结,只有线性分类器被优化\\ fine-tune:视频编码器用线性分类器进行微调\\ zero-shot:通过使用类别名称作为文本描述进行视频文本的检索(训练时的类别与测试时不相同) \end{cases}
行为识别⎩⎪⎨⎪⎧linear:视频编码器参数冻结,只有线性分类器被优化fine−tune:视频编码器用线性分类器进行微调zero−shot:通过使用类别名称作为文本描述进行视频文本的检索(训练时的类别与测试时不相同)
视
频
文
本
检
索
{
f
i
n
e
−
t
u
n
e
:
利
用
预
训
练
好
的
模
型
进
行
微
调
z
e
r
o
−
s
h
o
t
:
将
预
训
练
好
的
模
型
直
接
应
用
于
另
一
个
数
据
集
视频文本检索 \begin{cases} fine-tune:利用预训练好的模型进行微调\\ zero-shot:将预训练好的模型直接应用于另一个数据集 \end{cases}
视频文本检索{fine−tune:利用预训练好的模型进行微调zero−shot:将预训练好的模型直接应用于另一个数据集
一、Introduction
本文在保持高效率的情况下进行视频文本检索,训练一个模型BridgeFormer来使用视频特征回答文本特征构造的问题。具体来说,文中显式的利用文本特征(如动词,名词)来构建问题,使用一个视频编码器捕捉区域和时间特征。通过问题构建和回答的形式,视频文本间的语义关系能被建立。BridgeFormer在测试时能够移除,作为一个高效的模型(只有两个编码器)进行视频检索。
目前的视频文本检索分为两类,如下图所示,一类是双编码器(Dual encoder)方法,使用两个独立的编码器分别提取视频文本特征,但是这丢失了两种模态的关系信息以及模态内的细节信息。另一种是联合编码器(Joint-encoder)方式,将文本和视频拼接作为输入,这样可以学到更细粒度的特征但是牺牲了检索效率(推理时每个视频文本对都需要放入网络中)。
本文提出了MCQ(Multiple Choice Questions)方法来保证高效检索的同时能够进行视频与文本信息的交互。这里使用一个BridgeFormer网络来实现MCQ方法。BridgeFormer利用视频特征回答文本特征构建的问题,保证了两个模态间的交互。该网络在推理时能够被移除来保证高效性。
BridgeFromer在全部的特征层次(低、中、高)上连接视频和文本特征。正则化(而非拼接)直接加在视频和文本特征上,因此该网络在推理时能够直接移除。文章贡献如下:
介绍了MCQ,它结合了双编码器和两个编码器的优点。
提出了BridgeFormer模型来实现MCQ,保证视频和文本特征之间进行交互
在5个视频文本检索的数据集上取得了好的结果。
二、Method
1.双编码器结构
如下图所示,本文使用双编码器结构为基础,双编码器包括一个视频编码器和一个文本编码器。他们分别得到视频和文本的特征
f
v
f_v
fv ,
f
t
f_t
ft 。通过计算
f
v
f_v
fv和
f
t
f_t
ft 的点积来得到相似度。使用对比损失来最大化正样本对间的相似度,最小化负样本对间的相似度。双编码器只要求视频和文本间的点积运算,保证了高效运行。
2.Multiple Choice Questions(MCQ)
MCQ通过一个BridgeFormer实现,它将来自视频和文本编码器的多层级tokens联系起来回答一个多选问题。随机删除文本中一个名词或动词短语,BridgeFormer应能够在视频特征的帮助下从多个选项中(一个batch中删除的多个短语)选出被删除的内容。
以名词短语为例,给一个视频和相应的文本,随机选择一个名词短语删除。如上图所示,名词问题(删除一个名词短语后的文本)放入文本编码器得到文本表示 { z } n o u n _ q \{z\}_{noun\_q} {z}noun_q,视频表示由视频编码器提取得到 { z } v \{z\}_v {z}v,将前者作为q,后者作为k,v放入BridgeFormer。
之后通过一个跨模态注意力得到名词的回答表示,删除的短语放入文本编码器后得到短语表示,然后这两个特征被映射到一个公共空间得到 f n o u n _ a f_{noun\_a} fnoun_a, f n o u n f_{noun} fnoun。使用点积计算它们的相似度。训练时,利用对比损失最大化正样本 f n o u n _ a f_{noun\_a} fnoun_a, f n o u n f_{noun} fnoun的相似度,最小化负样本 f n o u n _ a f_{noun\_a} fnoun_a, f n o u n f_{noun} fnoun相似度。训练BridgeFormer使用视频表示选择出正确的被删除短语,让视频与文本进行内容上的对齐。动词短语的过程和名词短语类似。
3.目标函数
使用对比损失Noise-Contrastive Estimation (NCE)作为目标函数,整体目标函数如下:
L
=
L
v
a
n
i
l
a
+
L
n
o
u
n
+
L
v
e
r
b
L=L_{vanila}+L_{noun}+L_{verb}
L=Lvanila+Lnoun+Lverb
L_{vanila}是视频表示和文本表示
f
v
f_v
fv ,
f
t
f_t
ft间的NCE损失。L_{noun}是名词回答表示
f
n
o
u
n
_
a
f_{noun\_a}
fnoun_a和名词表示
f
n
o
u
n
f_{noun}
fnoun间的NCE损失,L_{verb}是动词回答表示
f
v
e
r
b
_
a
f_{verb\_a}
fverb_a和名词表示
f
v
e
r
b
f_{verb}
fverb间的NCE损失。
NCE损失表示如下:
N
C
E
(
x
i
,
y
i
)
=
−
l
o
g
e
x
p
(
x
i
T
y
i
/
τ
)
∑
j
=
1
B
e
x
p
(
x
i
T
y
j
/
τ
)
NCE(x_i,y_i)=-log\frac{exp(x_{i}^{T}y_i/\tau)}{\sum_{j=1}^{B}exp(x_{i}^{T}y_j/\tau)}
NCE(xi,yi)=−log∑j=1Bexp(xiTyj/τ)exp(xiTyi/τ)
B是batchsize的大小,
τ
\tau
τ 被设置为0.05
4.模型结构
网络模型如下图
4.1视频编码器
输入:使用一个M帧的视频 V ∈ R M × 3 × H × W V\in R^{M\times 3\times H\times W} V∈RM×3×H×W作为输入,首先被分为 M × N M\times N M×N个patches,之后使用线性映射得到一系列的tokens { z } v ∈ R M × N × D \{z\}_v\in R^{M\times N\times D} {z}v∈RM×N×D,D是嵌入维度。另外,在序列前面,一个[CLS]token也被加入。最终输入为 { z } v 0 ∈ R ( 1 + M × N ) × D \{z\}_v^0\in R^{(1+M\times N)\times D} {z}v0∈R(1+M×N)×D。
VideoBlock:视频输入放入一个包含多个VideoBlock的编码器中,在ViT的基础上进行了修改,能够进行变化长度的输入。
4.2文本编码器
输入:文本编码器有三种输入形式:完整的文本,删除某个短语的文本,被删除的短语。[CLS]token也被添加。
TextBlock:使用多层双向transformer编码器作为TextBlock。
4.3BridgeFormer
输入:将来自文本编码器的问题(删除某个短语后的文本)作为q,来自视频编码器的的视频tokens作为k,v,通过跨模态注意力获得答案表示。
BridgeBlock:给定一个问题文本 { z } q l − 1 ∈ R L × D \{z\}_q^{l-1}\in R^{L\times D} {z}ql−1∈RL×D(不包含[CLS])作为q,视频tokens为 { z } v l − 1 ∈ R M × ( N × D ) \{z\}_v^{l-1}\in R^{M\times (N\times D)} {z}vl−1∈RM×(N×D)(不包含[CLS])作为k和v,通过多头注意力机制得到两个模态交互的tokens为 { z } q v l \{z\}_{qv}^l {z}qvl ,它表示问题文本与每帧图像的patch间的注意力。 { z } q v l \{z\}_{qv}^l {z}qvl 和上一层的输出 { z } a l − 1 \{z\}_{a}^{l-1} {z}al−1 相加得到本层输出 { z } a l \{z\}_{a}^{l} {z}al 。最终的结果由最后一层的[CLS]token表示。
三、实验
1.数据集
预训练:模型在CC3M图像文本数据集上和WebVid-2M视频文本数据集上预训练。
视频文本检索:在MSR-VTT(10k个视频,200k个描述),MSVD(1970个视频,80k个描述),LSMDC(118081个视频),DiDeMo(10k个视频,40k个描述),HowTo100M(1.22M个视频和136M个描述)五个数据集上进行测试。一个视频的所有描述被拼接在一起作为单个描述。这是首次在HowTo100M上进行视频文本的检索,两种设置(zero-shot 和fine-tune)被用来进行评估。
行为识别:在HMDB51(包含6766个视频,51个类)和UCF101(包含13320个视频,101个类)进行评估。三种设置用于评估,包括linear:视频编码器参数冻结,只有线性分类器被优化;fine-tune:视频编码器用线性分类器进行微调;zero-shot:通过使用类别名称作为文本描述进行视频文本的检索(训练和测试用的类别不同)。
2.实现细节
视频缩放为 224 × 224 224\times 224 224×224,将一个视频分为M段,训练时每段随机取一帧,测试时每段统一取一帧。视频编码器包含12个block,patch size设为16,序列维度为768,使用ImageNet-21k上预训练的ViT权重初始化。文本编码器使用在English Wikipedia和Toronto Book Corpus上预训练的DistilBERT框架,特征维度设为256.对比损失的超参数为0.05。BridgeFormer包含12个block,首先在CC3M和WebVid-2M上预训练(每个视频取一帧,训练10个epoch,batch-size为2048,学习率为 1 × 1 0 − 4 1\times 10^{-4} 1×10−4。然后在WebVid-2M上预训练(每个视频取4帧,训练4个epoch,batch-size为800,学习率 3 × 1 0 − 5 3\times 10^{-5} 3×10−5。下游任务中,视频文本检索每个视频取4帧,行为识别每个视频取16帧。
3.主要结果
3.1视频文本检索
下表为在MST-VTT上的表现,上半部分为zero-shot,下半部分是fine-tuning。从表中可以看出,该模型明显优于之前的工作(无论是zero-shot还是fine-tuning)。它可以在较小数据集上预训练并产生较好的结果。
在MSVD,DiDeMo,LSMDC上的结果如下表所示,也取得了最优结果。
在大规模数据集HowTo100M上也优于目前最好的方法Frozen
3.2行为识别
在HMDB51和UCF101上进行zero-shot的行为识别,这可以看作一个视频文本检索任务。如下表所示,最终结果优于其他方法。
为了评估模型的视频特征表达能力,这里在linear和fine-tuning设置下进行了实验,如下表所示,文中的方法优于大部分的行为识别方法,尽管MMV在使用语音信息和更长的视频帧序列后要优于本文方法,但是它需要的计算量明显更大。