Hybrid Space Learning for Language-based Video Retrieval
目录
- Hybrid Space Learning for Language-based Video Retrieval
1. Motivation
通过文字检索为标记的视频。
dual encoding 的方式和心理学的双重编码理论相统一。双重编码理论指出,词语和视频的信息是通过不同渠道处理的,在大脑中的表示形式也是分开的。随后,这些表示被用来检索之前存储在大脑中的信息。
latne space是不可解释的,到底哪个模型可以真正学习到也是不得而知的。
2. Contribution
- 提出dual network,该网络对查询的语句或视频通过同样的方式进行编码,显示并逐步的学习视频和句子中全局,局部和时间模式。同时编码部分和公共空间的学习是正交的,以便于以后使用最新的公共空间的学习方法。
- 提出了一种新的混合空间学习,该方法继承了潜在空间的高性能和概念空间的可解释性。
3. Method
Overview:
3.1 Video-side Multi-level Encoding
首先,对于视频,每0.5s提取一帧。使用与训练的ImageNet CNN来提取帧的特征 { v 1 , . . . v n } \{v_1,...v_n\} {v1,...vn}。当认为每帧是独立的时候,可以使用3D CNNs来提取特征。
3.1.1 Level 1. Global Encoding by Mean Pooling
使用Mean Pooling来捕获视频帧中的特征,因为在视频帧中重复出现的内容趋向于全局的特征(作者认为)。
f v 1 = 1 n ∑ t = 1 n v t (1) f_{v}^{1}=\frac{1}{n} \sum_{t=1}^{n} v_{t}\tag{1} fv1=n1t=1∑nvt(1)
3.1.2 Level 2. Temporal-Aware Encoding by biGRU
使用biGRU可以更好的捕捉视频和文本中的时序信息,同时该结构有着更少的参数(和biLSTM比起来)。
h ⃗ t = G R U ‾ ( v t , h ⃗ t − 1 ) h ← t = G R U ← ( v n + 1 − t , h h t − 1 ) (2) \begin{aligned} \vec{h}_{t} &=\overline{G R U}\left(v_{t}, \vec{h}_{t-1}\right) \\ \overleftarrow{h}_{t} &=\overleftarrow{G R U}\left(v_{n+1-t}, \stackrel{h}{h}_{t-1}\right) \end{aligned}\tag{2} htht=GRU(vt,ht−1)=GRU(vn+1−t,hht−1)(2)
然后将前向和反向的结构concatenate到一起,从而得到 h v t = [ h ⃗ t , h ← t ] h_{v}^{t}=\left[\vec{h}_{t}, \overleftarrow{h}_{t}\right] hvt=[ht,ht],GRU的隐层参数设置为512,因此 h v t h_v^t hvt的大小是1024。所以可以得到1024 × \times × n的特征 H v = { h v 1 , h v 2 , … , h v n } H_{v}=\left\{h_{v}^{1}, h_{v}^{2}, \ldots, h_{v}^{n}\right\} Hv={hv1,hv2,…,hvn}。biGRU的编码可以定义为 f v ( 2 ) f_v^{(2)} fv(2),同时在行上做mean pooling:
f v 2 = 1 n ∑ t = 1 n h v t (3) f_{v}^{2}=\frac{1}{n} \sum_{t=1}^{n} h_{v}^{t}\tag{3} fv2=n1t=1∑nhvt(3)
3.1.3 Level 3. Local-Enhanced Encoding by biGRU-CNN
之前对于biGRU的每步输出都认为是相同的,为了在局部上区分细微的差异,在biGRU上构建CNN。使用1-d CNN。输出CNN的是之前biGRU的释出 H v H_v Hv。使用 C o n v 1 d k , r Conv1d_{k,r} Conv1dk,r表示 r = 512 r=512 r=512个卷积核,大小为 k k k, k ≥ 2 k\geq2 k≥2。使用ReLU作为激活函数,得到 n × r n\times r n×r的特征图。因为 n n n由视频决定,所以使用max pooling将输出 c k c_k ck的长度变为 r r r。以上的描述可以定义为:
c v k = max − p o o l i n g ( ReL U ( Conv 1 d k , r ( H v ) ) ) (4) c_{v}^{k}=\max -\mathrm{pooling}\left(\operatorname{ReL} U\left(\operatorname{Conv} 1 d_{k, r}\left(H_{v}\right)\right)\right)\tag{4} cvk=max−pooling(ReLU(Conv1dk,r(Hv)))(4)
卷积核个数 k k k的含义是,有多少个相邻的行做信息交互。了得到更多维度表示,对1d-Conv分别使用 k = 2 , 3 , 4 , 5 k=2,3,4,5 k=2,3,4,5,将他们的结果concatenate到一起:
f v 3 = [ c v 2 , c v 3 , c v 4 , c v 5 ] (5) f_{v}^{3}=\left[c_{v}^{2}, c_{v}^{3}, c_{v}^{4}, c_{v}^{5}\right] \tag{5} fv3=[cv2,cv3,cv4,cv5](5)
将得到的三个特征concatenate到一起:
ϕ ( v ) = [ f v 1 , f v 2 , f v 3 ] (6) \phi(v)=\left[f_{v}^{1}, f_{v}^{2}, f_{v}^{3}\right]\tag{6} ϕ(v)=[fv1,fv2,fv3](6)
3.2 Text-side Multi-level Encoding
对于一个给定的文本序列 s s s,长度为 m m m,其中的每个词都被表示为一个one-hot向量 { w 1 , . . . w m } \{w_1, ... w_m\} {w1,...wm}。其中 w t w_t wt表示第 t t t个词。对序列中的每个vector使用average即可得到 f s 1 f_s^1 fs1,该方法等同于传统的bag-of-words的表示。
对于biGRU编码,每个词首先通过乘一个word embedding matrix被转化为dense vector(one-hot mul matrix)。该矩阵是预训练的一个word2vec模型。剩下的和video encoder相同。(这层的输出表示为 f s 2 f_s^{2} fs2)
对于biGRU-CNN的编码层表示为 f s 3 f_s^3 fs3,但是在这里使用 k = 2 , 3 , 4 k=2,3,4 k=2,3,4的1-d Conv。
多层特征也是通过concatenate到一起:
ϕ ( s ) = [ f s 1 , f s 2 , f s 3 ] (7) \phi(s)=\left[f_{s}^{1}, f_{s}^{2}, f_{s}^{3}\right]\tag{7} ϕ(s)=[fs1,fs2,fs3](7)
此时得到的 ϕ ( v ) \phi(v) ϕ(v)和 ϕ ( s ) \phi(s) ϕ(s)是没有联系的,所以不同直接比较。所以将要映射到common space。
3.3 Hybrid Space Learning
混合空间包含:latent space和concept space,其中latent space旨在有着更好的结果,concept space意味着更好的解释性。
3.3.1 Learning a Latent Space
3.3.1.1 Network
仿射变换(affine transformations)其实就是一个Fully Connected(FC) layer。对于FC Layer使用BN是一个trick。所以在latent space中的视频特征 f ( v ) f(v) f(v)和句子特征 f ( s ) f(s) f(s)由:
f ( v ) = B N ( W 1 ϕ ( v ) + b 1 ) f ( s ) = B N ( W 2 ϕ ( s ) + b 2 ) (8) \begin{array}{l} f(v)=\mathrm{BN}\left(W_{1} \phi(v)+b_{1}\right) \\ f(s)=\mathrm{BN}\left(W_{2} \phi(s)+b_{2}\right) \end{array}\tag{8} f(v)=BN(W1ϕ(v)+b1)f(s)=BN(W2ϕ(s)+b2)(8)
得到。
使用余弦相似度(cosine similarity)来衡量video-text的相似度:
sim lat ( v , s ) = f ( v ) ⋅ f ( s ) ∥ f ( v ) ∥ ∥ f ( s ) ∥ (9) \operatorname{sim}_{\text {lat}}(v, s)=\frac{f(v) \cdot f(s)}{\|f(v)\|\|f(s)\|}\tag{9} simlat(v,s)=∥f(v)∥∥f(s)∥f(v)⋅f(s)(9)
作者表示,之前尝试过Manhattan distance和Euclidean distance,但是都不如余弦相似度。
3.3.1.2 Loss Function
使用增强的triplet ranking loss。该loss在一个mini-batch中,使用negative examples在作为惩罚项。
L lat ( v , s ) = max ( 0 , m + sim lat ( v , s − ) − sim lat ( v , s ) ) + max ( 0 , m + sim lat ( v − , s ) − sim lat ( v , s ) ) (10) \begin{aligned} \mathcal{L}_{\text {lat}}(v, s) &=\max \left(0, m+\operatorname{sim}_{\text {lat}}\left(v, s^{-}\right)-\operatorname{sim}_{\text {lat}}(v, s)\right) \\ &+\max \left(0, m+\operatorname{sim}_{\text {lat}}\left(v^{-}, s\right)-\operatorname{sim}_{\text {lat}}(v, s)\right) \end{aligned}\tag{10} Llat(v,s)=max(0,m+simlat(v,s−)−simlat(v,s))+max(0,m+simlat(v−,s)−simlat(v,s))(10)
其中, m m m是margin,是一个常数, s − s^- s−和 v − v^- v−表示sentence和video的反例(negative sample)。注意,这个反例不是随机选择的,而是在当前的mini-batch中,选择和正例最像的反例。
3.3.2 Learning a Concept Space
学习一个concept space可以看作是一个多分类问题。
3.3.2.1 Network
使用和Learning a Latent Space相似的网络将 ϕ ( v ) \phi(v) ϕ(v)和 ϕ ( s ) \phi(s) ϕ(s)映射到Concept Space:
g ( v ) = σ ( B N ( W 3 ϕ ( v ) + b 3 ) ) g ( s ) = σ ( B N ( W 4 ϕ ( s ) + b 4 ) ) (11) \begin{array}{l} g(v)=\sigma\left(B N\left(W_{3} \phi(v)+b_{3}\right)\right) \\ g(s)=\sigma\left(B N\left(W_{4} \phi(s)+b_{4}\right)\right) \end{array}\tag{11} g(v)=σ(BN(W3ϕ(v)+b3))g(s)=σ(BN(W4ϕ(s)+b4))(11)
注意和公式(8)不同的是,此处的激活函数 σ \sigma σ使用的是sigmoid(因为是个分类问题嘛),对于一个concept的索引序列 i = 1 , . . . K i=1,...K i=1,...K, g ( v ) i g(v)_i g(v)i表示concept和视频 v v v的相关性。(对于文本,也有同样的定义,可以得到 g ( s ) i g(s)_i g(s)i)
3.3.2.2 Loss Function
由于余弦相似度是计算向量之间的距离,对于concept space的标量来说,这不是最佳的选择。所以作者使用Jaccard similarity来计算video-text的相似度:
sim con ( v , s ) = ∑ i = 1 K min ( g ( v ) i , g ( s ) i ) ∑ i = 1 K max ( g ( v ) i , g ( s ) i ) (12) \operatorname{sim}_{\operatorname{con}}(v, s)=\frac{\sum_{i=1}^{K} \min \left(g(v)_{i}, g(s)_{i}\right)}{\sum_{i=1}^{K} \max \left(g(v)_{i}, g(s)_{i}\right)}\tag{12} simcon(v,s)=∑i=1Kmax(g(v)i,g(s)i)∑i=1Kmin(g(v)i,g(s)i)(12)
注意,这里的 g ( v ) g(v) g(v)和 g ( s ) g(s) g(s)没有归一化。
3.3.2.3 Concept-level annotations
假设每个视频有p个描述
{
s
1
,
.
.
.
s
p
}
\{s_1,...s_p\}
{s1,...sp}。有人提出过,“出现在多个句子中的概念要比仅出现一次的概念更重要”,因此使用基于概念频率(concept frequency)的labels来代替二分类的labels。使用
K
K
K维的向量
y
y
y作为
v
v
v的真值。其第
i
i
i个维度
y
i
y_i
yi的值定义为第
i
i
i个概念出现的频率除以句子
p
p
p中所有概念的最大值。例如:
3.3.2.4 Loss Function
对于多分类问题,二值交叉熵(binary cross-entropy)是常用的损失函数。该论文的损失函数如下:
L
b
c
e
(
v
,
s
,
y
)
=
−
(
1
K
∑
i
=
1
K
[
y
i
log
(
g
(
v
)
i
)
+
(
1
−
y
i
)
log
(
1
−
g
(
v
)
i
)
]
+
1
K
∑
i
=
1
K
[
y
i
log
(
g
(
s
)
i
)
+
(
1
−
y
i
)
log
(
1
−
g
(
s
)
i
)
]
)
(13)
\begin{aligned} \mathcal{L}_{b c e}(v, s, y)=&-\left(\frac{1}{K} \sum_{i=1}^{K}\left[y_{i} \log \left(g(v)_{i}\right)+\left(1-y_{i}\right) \log \left(1-g(v)_{i}\right)\right]\right.\\ &\left.+\frac{1}{K} \sum_{i=1}^{K}\left[y_{i} \log \left(g(s)_{i}\right)+\left(1-y_{i}\right) \log \left(1-g(s)_{i}\right)\right]\right) \end{aligned}\tag{13}
Lbce(v,s,y)=−(K1i=1∑K[yilog(g(v)i)+(1−yi)log(1−g(v)i)]+K1i=1∑K[yilog(g(s)i)+(1−yi)log(1−g(s)i)])(13)
作者希望concept space不仅仅用于可解释性,同时也希望能够提高video-text matching。因此对于concept space使用triplet ranking loss:
L con,rank ( v , s ) = max ( 0 , m + sim con ( v , s − ) − sim con ( v , s ) ) + max ( 0 , m + sim con ( v − , s ) − sim con ( v , s ) ) (14) \begin{aligned} \mathcal{L}_{\text {con,rank}}(v, s) &=\max \left(0, m+\operatorname{sim}_{\operatorname{con}}\left(v, s^{-}\right)-\operatorname{sim}_{\operatorname{con}}(v, s)\right) \\ &+\max \left(0, m+\operatorname{sim}_{\operatorname{con}}\left(v^{-}, s\right)-\operatorname{sim}_{\operatorname{con}}(v, s)\right) \end{aligned}\tag{14} Lcon,rank(v,s)=max(0,m+simcon(v,s−)−simcon(v,s))+max(0,m+simcon(v−,s)−simcon(v,s))(14)
所以,在concept space上最重的loss是:
L con ( v , s , y ) = L bce ( v , s , y ) + L con,rank ( v , s ) (15) \mathcal{L}_{\text {con}}(v, s, y)=\mathcal{L}_{\text {bce}}(v, s, y)+\mathcal{L}_{\text {con,rank}}(v, s)\tag{15} Lcon(v,s,y)=Lbce(v,s,y)+Lcon,rank(v,s)(15)
可以看到,在公式(15)中,如果没有 L b c e \mathcal{L}_{bce} Lbce,那么仅存的 L r a n k \mathcal{L}_{rank} Lrank机会退化为latent space的loss。
3.3.3 Joint Learning of the Two Spaces
整个网络的损失函数如下:
argmin θ ∑ ( v , s , y ) ∈ D L lat ( v , s ) + L con ( v , s , y ) (16) \underset{\theta}{\operatorname{argmin}} \sum_{(v, s, y) \in \mathcal{D}} \mathcal{L}_{\text {lat}}(v, s)+\mathcal{L}_{\text {con}}(v, s, y)\tag{16} θargmin(v,s,y)∈D∑Llat(v,s)+Lcon(v,s,y)(16)
除了提取视频特征的image CNNs,整个网络是使用端到端的方式训练的。
3.4 Video-Text Similarity Computation
video和text的相似度计算方式如下:
sim ( v , s ) = α ⋅ sim lat ( v , c ) + ( 1 − α ) ⋅ sim con ( v , c ) (17) \operatorname{sim}(v, s)=\alpha \cdot \operatorname{sim}_{\text {lat}}(v, c)+(1-\alpha) \cdot \operatorname{sim}_{\operatorname{con}}(v, c)\tag{17} sim(v,s)=α⋅simlat(v,c)+(1−α)⋅simcon(v,c)(17)
其中 α \alpha α是一个超参数,用来平衡两个空间的重要性,取值范围是[0,1]。需要注意的是 s i m l a t ( v , s ) sim_{lat}(v,s) simlat(v,s)和 s i m c o n ( v , s ) sim_{con}(v,s) simcon(v,s)的原始值位于不同的标度之中。(啥意思?)所以在组合之前需要对两者使用min-max normalization。还需要注意的是,在inference阶段,video encoder部分可以单独编码。所以,对于大量的视频数据集,他们的混合空间特征是可以预先计算出来的。所以可以及时回答ad-hoc查询。
4. Experiments
有两种实验,首先是在三个数据集(MSR-VTT,TRECVID AVS 2016-2018,VATEX和MPII-MD)上和SOTA的模型进行对比;后者是进行ad-hoc查询。在介绍实验之前,作者介绍了实验的配置和预处理。
对于文本的预处理,将文本转化为小写,在训练集上,将出现次数小于5次的,都替换为一个特殊的token。
对于视频的预处理,在VATEX上,采用1024维的I3D特征。对于其他数据集,采用ResNeXt-101和ResNet-152,这两种特征concatenate到一起,得到4096维的CNN特征,称作ResNeXt-ResNet。
对于概念词汇,在训练集上采用NLTK的词性标注工具包进行标注,保留名词,动词和形容词。同时对于单词进行词素化(lemmatize the words),即dog和dogs是相同的概念。最后,将前K = 512个常用词选为最终概念词汇。
实验配置:triplet ranking loss 中的 m = 0.2 m=0.2 m=0.2, α = 0.6 \alpha=0.6 α=0.6,根据经验,将common space设置为2048维,concept space为512维,因此latent space为2048-512=1536维,优化器采用Adam,batch-size=128,learning rate = 0.0001,采用和之前工作一样的调整策略,即验证集上的损失在三个连续的epoch上不降的话,就将learning rate减半。如果验证集上的结果在连续的10个epoch上没有提升,就提前结束。Epoch设置为50,实际上,提前结束会发生在15个epoch之后。
4.1 Comparison with the State-of-the-art
4.1.1 Experiments on MSR-VTT
其中,MSR-VTT有三种划分,第一种是官方的,其他两种是[29]和[31]里的划分。结果中
∗
*
∗表示原文的结果,其他则是使用ResNeXt-ResNet特征训练的。官方划分的测试集更大,所以结果会低一些。
4.1.2 Experiments on TRECVID AVS 2016-2018
因为该数据集没有训练数据(都是查询数据),因此使用MSR-VTT和TGIF作为混合训练集。该文章使用推定的平均精度(infAP),这是TRECVID AVS任务使用的官方性能指标。 测量的总体性能以百分比(%)报告。 注意,TRECVID的ground-truth在shot-level部分可用。 任务组织者采用pooling的策略来收集ground truth,即通过收集来自每个提交的前1000个镜头来形成候选镜头池,并选择一个随机子集进行手动验证。 因此,ground truth有利于官方的参与者。 由于通过我们的方法发现的排名最高的项目可能不在子集中,因此我们的方法的infAP分数可能会被低估。
4.1.3 Experiments on VATEX
该数据集中,视频来源于Youtube,每个视频有10个中文描述和10个英文描述,在这里使用英文描述。数据划分是将25991个视频用于训练集,1500个视频用于验证集,1500个视频用于测试集。这3000个视频是来自于官方的验证集随机划分得到的。
4.1.4 Experiments on MPII-MD
为了验证该方法在特殊视频领域的结果,所以是用MPII-MD数据集。该数据集是一个电影描述的数据集。使用官方划分:56828条作为训练集,4929条作为验证集,6580条作为测试集。每条视频有一到两条文本描述。
结果较MSR-VTT来讲较差,是因为movie retrieval更具挑战性,如下:
4.2 Ablation Study
在这个部分来验证该网络结构各个组成部分的效果。数据集是官方划分的MSR-VTT。
4.2.1 Multi-level Encoding versus Single-Level Encoding
探究多级编码和单级编码的结果如上。可以看到Level 1+2+3是效果最好的。该文章还做了分别只对视频和文本做多级编码,对另一方使用mean pooling的方式,结果的SumR分别为194.5和191。
4.2.2 Hybrid Space versus Single Space
分别多级编码模型在两个空间上单独训练。
上图的结果可以看出,Latent Space的结果虽好,但是缺乏可解释性;而Concept Space虽然可解释,但是效果不好。而Hybrid 是即可解释,效果又好的。
同样的,对于是否在Concept Space使用triplet ranking loss作者也做了相关的实验,实验结果表明,SumR从211.7降到了183.3。
对于超参数
α
\alpha
α,作者给出的实验结果如下:
4.2.3 Multi-level Encoding for Image-Text Retrieval
在VSE++模型上,使用提出的多级text encoder部分代替原来的text encoder部分,结果如下: