3.2.2 NetVLAD
VLAD的弊端在于它是一个不可导的函数,原因在于其中的分配系数无法求导。因此,无法插入到现代卷积神经网络中进行端到端学习,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 不同,我们并不是真正对帧特征进行聚类,从而得到聚类中心。NetVLAD 将聚类中心当作可学习的参数,让网络进行学习,所以这一步是带引号的“聚类”。
(2)特征分配。VLAD 使用的分配系数取值是一种硬分配策略,无法求导,使得网络不能利用误差反向传播进行学习。因此,NetVLAD 将其转化为软分配(Soft Assignment)机制,使其变得平滑可导
(3.5)
此时可以认为分配系数是帧特征属于第个“聚类中心”的概率,并满足。
特征分配涉及一组参数,令
(3.6)
以帧特征作为输入,特征分配可以通过一个全连接层和Softmax 激活函数实现,其中全连接层的参数为。对于帧特征,经过该全连接层和Softmax 激活函数之后,可以得到,它的第维是。
(3)差值求和。和VLAD 相同,NetVLAD的输出也是一组特征,每个输出特征的维度和帧特征维度一致,每个输出特征对应一个“聚类”中心。输出特征的定义为
(3.7)
可以看出,这一步的计算公式和VLAD 形式上是一样的,区别只是在于的计算方法不同。另外,如果读者对于第1步特征“聚类”中如何将当作可学习的参数有疑问,我们可以对这一步的公式进行变形:
(3.8)
可以看出,在式(3.8)的第二项中,首先对进行求和,之后乘以。这一步可以用一个全连接层实现,就是全连接层的参数,该全连接层没有偏置项(Bias),从而可以学习“聚类”中心。
最后,NetVLAD 还有两个规范化操作,首先是内部规范化(Intra-normlization),每个“聚类”内部各自进行规范化:
(3.9)
式(3.9)中的“”表示将的计算结果赋值给。然后是整体的规范化:
(3.10)
最终将这维的向量拼接为一个维的向量作为NetVLAD 最终的输出:
(3.11)
图3-4是NetVLAD的实现。对于一个视频,首先对视频进行抽帧,之后每帧图像前馈一个图像分类模型,得到帧特征,作为NetVLAD的输入,对应图3-4的最左侧。图3-4 左下角涉及一组全连接层:“全连接层,”,它们的参数是共享的,都是NetVLAD 第 2 步特征分配计算过程中的。帧特征各自经过一个共享参数的全连接层和Softmax 激活函数,得到,其中,,它的第维是。
图3-4 NetVLAD计算流程图
随后在图3-4中间紫色部分存在个单元,每个单元对应一个“聚类”,图中展示了其中第 1个单元的计算过程。第 1个单元接受两组输入,一组是帧特征,另一组是。计算过程包括两个部分:第一部分是将分别相乘后相加,得到,见紫色单元的左侧和右上方;第二部分是将相加,之后经过一个全连接层:“全连接层,”。和图3-4 左下方的全连接层不同,不同单元中的全连接层不共享参数,其中第个单元(对应第个聚类)的全连接层参数为,经过全连接层之后的结果为,见紫色单元的右下方。最后将两部分的结果相减,得到第 1个单元的特征。以此类推,第个单元从和中计算得到。最终,每个各自进行内部规范化,之后整体再进行规范化,得到最终的特征作为NetVLAD的输出。
以上介绍的是对图像分类模型的全连接层特征进行 NetVLAD 汇合。另一种汇合策略是将 NetVLAD 汇合的位置提前,对conv5层(即图像分类模型的最后一个卷积层)特征进行 NetVLAD 汇合(Girdhar et al.,2017)。相比于第帧的全连接层特征是一个向量,其卷积层特征是一个张量,这可以看作有个空间位置,每个位置对应一个维的特征向量,令表示第帧、第个空间位置对应的特征向量,如图3-5所示。
图3-5 卷积特征可以看作有个空间位置,每个空间位置对应一个维特征向量
基于该卷积特征的等效理解,基于卷积特征的NetVLAD 操作也可以分为以下3步。
(1)特征“聚类”。这里仍然是个“聚类中心”。
(2)特征分配。此时表示特征属于第个“聚类中心”的概率,并满足:
(3.12)
在特征分配的实现方面,基于全连接层特征的特征分配,可以用全连接层和Softmax 激活函数实现,如图3-6(a)所示,对于第帧图像的全连接层特征,经过全连接层和Softmax 激活函数之后得到,其中全连接层的参数分别由组成。而基于卷积特征的特征分配可以用卷积层和Softmax 激活函数实现,如图3-6(b)所示,对于第帧图像的卷积层特征,经过卷积层和Softmax 激活函数之后得到,其中卷积层的参数为和,由于的后两维都是1,其本质上是一个二维矩阵,和等价,而则和完全相同。
(3)差值求和。这里输出也是一组特征,每个输出特征的维度是,其计算过程需要将原先的一重求和扩展为三重求和,既要对时间维度求和,又要对空间维度求和:
(3.13)
图3-6 特征分配的全连接层和卷积层实现
最后,我们总结一下 NetVLAD 的参数量和输出特征维度。第 1 步特征“聚类”需要对个“聚类中心”进行学习,每个“聚类中心”维度,因此需要参数;第 2 步特征分配需要一个全连接层或卷积层对的参数进行学习,需要参数(忽略偏置项参数);第 3 步差值求和不需要额外的参数。
总之,NetVLAD的参数量是,总的输出特征维度和VLAD相同,均为。