深度学习视频理解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2.2 NetVLAD

VLAD的弊端在于它是一个不可导的函数,原因在于其中的分配系数img无法求导。因此,无法插入到现代卷积神经网络中进行端到端学习,NetVLAD便应运而生。相比于VLAD,NetVLAD 可以作为一层插入到整体的神经网络中,NetVLAD的参数和网络中其他层的参数一起可以端到端利用误差反向传播(Error Backpropogation)进行学习。NetVLAD被用于2017年YouTube-8M 竞赛的冠军方案(Miech et al.,2017)和2018年YouTube-8M 竞赛的冠军方案(Skalic & Austin,2018)。

和VLAD 相似,NetVLAD的计算过程也可分为以下3步。

(1)特征聚类”。和VLAD 不同,我们并不是真正对帧特征img进行聚类,从而得到聚类中心img。NetVLAD 将聚类中心img当作可学习的参数,让网络进行学习,所以这一步是带引号的“聚类”。

(2)特征分配。VLAD 使用的分配系数取值img是一种硬分配策略,无法求导,使得网络不能利用误差反向传播进行学习。因此,NetVLAD 将其转化为软分配(Soft Assignment)机制,使其变得平滑可导

img

(3.5)

此时可以认为分配系数img是帧特征img属于第img个“聚类中心”的概率,并满足img

特征分配涉及一组参数img,令

img

(3.6)

以帧特征img作为输入,特征分配可以通过一个全连接层和Softmax 激活函数实现,其中全连接层的参数为img。对于帧特征img,经过该全连接层和Softmax 激活函数之后,可以得到img,它的第img维是img

(3)差值求和。和VLAD 相同,NetVLAD的输出也是一组特征img,每个输出特征的维度img和帧特征img维度一致,每个输出特征img对应一个“聚类”中心img。输出特征img的定义为

img

(3.7)

可以看出,这一步的计算公式和VLAD 形式上是一样的,区别只是在于img的计算方法不同。另外,如果读者对于第1步特征“聚类”中如何将img当作可学习的参数有疑问,我们可以对这一步的公式进行变形:

img

(3.8)

可以看出,在式(3.8)的第二项中,首先对img进行求和,之后乘以img。这一步可以用一个全连接层实现,img就是全连接层的参数,该全连接层没有偏置项(Bias),从而可以学习“聚类”中心img

最后,NetVLAD 还有两个规范化操作,首先是内部规范化(Intra-normlization),每个“聚类”内部各自进行img规范化:

img

(3.9)

式(3.9)中的“img”表示将img的计算结果赋值给img。然后是整体的img规范化:

img

(3.10)

最终将这img维的向量img拼接为一个img维的向量作为NetVLAD 最终的输出:

img

(3.11)

图3-4是NetVLAD的实现。对于一个视频,首先对视频进行抽帧,之后每帧图像前馈一个图像分类模型,得到帧特征img,作为NetVLAD的输入,对应图3-4的最左侧。图3-4 左下角涉及一组全连接层:“全连接层,img”,它们的参数是共享的,都是NetVLAD 第 2 步特征分配计算过程中的img。帧特征img各自经过一个共享参数的全连接层和Softmax 激活函数,得到img,其中,img,它的第img维是img

img

图3-4 NetVLAD计算流程图

随后在图3-4中间紫色部分存在img个单元,每个单元对应一个“聚类”,图中展示了其中第 1个单元的计算过程。第 1个单元接受两组输入,一组是帧特征img,另一组是img。计算过程包括两个部分:第一部分是将img分别相乘后相加,得到img,见紫色单元的左侧和右上方;第二部分是将img相加,之后经过一个全连接层:“全连接层,img”。和图3-4 左下方的全连接层不同,不同单元中的全连接层不共享参数,其中第img个单元(对应第img个聚类)的全连接层参数为img,经过全连接层之后的结果为img,见紫色单元的右下方。最后将两部分的结果相减,得到第 1个单元的特征img。以此类推,第img个单元从imgimg中计算得到img。最终,每个img各自进行内部规范化,之后img整体再进行img规范化,得到最终的特征img作为NetVLAD的输出。

以上介绍的是对图像分类模型的全连接层特征进行 NetVLAD 汇合。另一种汇合策略是将 NetVLAD 汇合的位置提前,对conv5层(即图像分类模型的最后一个卷积层)特征进行 NetVLAD 汇合(Girdhar et al.,2017)。相比于第img帧的全连接层特征是一个向量img,其卷积层特征是一个张量img,这可以看作有img个空间位置,每个位置对应一个img维的特征向量,令img表示第img帧、第img个空间位置对应的特征向量,如图3-5所示。

img

图3-5 卷积特征可以看作有img个空间位置,每个空间位置对应一个img维特征向量

基于该卷积特征的等效理解,基于卷积特征的NetVLAD 操作也可以分为以下3步。

(1)特征聚类”。这里仍然是img个“聚类中心”img

(2)特征分配。此时img表示特征img属于第img个“聚类中心”的概率,并满足img

img

(3.12)

在特征分配的实现方面,基于全连接层特征img的特征分配,可以用全连接层和Softmax 激活函数实现,如图3-6(a)所示,对于第img帧图像的全连接层特征img,经过全连接层和Softmax 激活函数之后得到img,其中全连接层的参数img分别由img组成。而基于卷积特征img的特征分配可以用img卷积层和Softmax 激活函数实现,如图3-6(b)所示,对于第img帧图像的卷积层特征img,经过img卷积层和Softmax 激活函数之后得到img,其中卷积层的参数为imgimg,由于img的后两维都是1,其本质上是一个二维矩阵,和img等价,而img则和img完全相同。

(3)差值求和。这里输出也是一组特征img,每个输出特征的维度是img,其计算过程需要将原先的一重求和扩展为三重求和,既要对时间维度求和,又要对空间维度求和:

img

(3.13)

img

图3-6 特征分配的全连接层和img卷积层实现

最后,我们总结一下 NetVLAD 的参数量和输出特征维度。第 1 步特征“聚类”需要对img个“聚类中心”img进行学习,每个“聚类中心”维度img,因此需要img参数;第 2 步特征分配需要一个全连接层或img卷积层对img的参数img进行学习,需要img参数(忽略偏置项参数img);第 3 步差值求和不需要额外的参数。

总之,NetVLAD的参数量是img,总的输出特征维度和VLAD相同,均为img