![深度学习视频理解](https://wfqqreader-1252317822.image.myqcloud.com/cover/920/43737920/b_43737920.jpg)
3.2.3 NeXtVLAD
NetVLAD的弊端在于NetVLAD 看似参数量不大,但是输出特征维度
太高,导致随后用于分类的全连接层参数量过大。假设有
个类别,分类层的参数量为
,例如,当
时,
很大。但是,如果直接减少聚类数
又会限制模型表示能力。NeXtVLAD在NetVLAD 基础上降低 NetVLAD 最终输出的特征维度和参数量,NeXtVLAD被用于2018年YouTube-8M 竞赛的季军方案(Lin et al.,2018a),并且是2018年YouTube-8M 竞赛中表现最优的单模型。
从 NetVLAD 到 NeXtVLAD的基本思想类似于从 ResNet(见 2.1.6 节)到 ResNeXt(见 2.1.11 节),ResNeXt在ResNet的基础上对特征进行分组,各个分组内卷积之后再进行合并。具体地说,相比于VLAD和NetVLAD的计算过程分为3步,NeXtVLAD的计算过程整体分为以下4步。
(1)特征升维分组。这是NeXtVLAD相比于VLAD和NetVLAD新增的步骤。NeXtVLAD的输入也是帧特征,其中
。首先通过一个全连接层(如果使用卷积层特征作为输入,则对应一个
卷积层)将特征升维到
,其中
。随后类似于分组卷积,将每个特征
分为
组
,其中
。
是两个超参数,满足
,这使得
的维度低于帧特征
的维度。
(2)特征“聚类”。“聚类中心”仍然有
个,每个“聚类中心”的维度和分组后特征
保持一致,因此维度降为
。和NetVLAD一样,这些“聚类中心”仍然由网络学习得到,本质仍然是全连接层的参数。
(3)特征分配。回顾 NetVLAD 对每个“聚类中心”有一个分配系数,表示帧特征
属于第
个“聚类中心”的概率。而 NeXtVLAD 因为涉及特征分组,因此帧特征
对每个特征分组的每个“聚类”中心各有一个分配系数,表示分组后的特征
属于第
个“聚类中心”的概率:
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_217.jpg?sign=1739271130-lF0g4vmeNmSPo5lWl3dojGf8WjhtoYmE-0-511cdb7fd9e494cd15460c270ccc9ebb)
(3.14)
令
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_218.jpg?sign=1739271130-wgrY8uWHN3IpPbEvLb92OHuWFqIuBnVr-0-9bfc92496163f94ebb1ac994d898659c)
(3.15)
和NetVLAD 类似,分配系数的计算可以通过全连接层(如果使用卷积层特征作为输入,则对应卷积层)和Softmax 激活函数实现。两者的区别在于,NetVLAD 只需要一个全连接层,或者说不同帧特征
共享全连接层参数;而 NeXtVLAD 需要
个全连接层,对应
个分组,其中第
个全连接层的参数为
。对于升维后的帧特征
,需要同时经过这
个全连接层和对应的Softmax 激活函数,其中经过第
个全连接层和Softmax 激活函数之后,可以得到
,它的第
维是
。
除此之外,每个分组还有一个权重系数:
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_232.jpg?sign=1739271130-HCx9OxvWnKubyah83TfDDD26UV6NNjqA-0-6ebf2d1e8707e44874a7dfeb3602aa8e)
(3.16)
令
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_233.jpg?sign=1739271130-dIns84OXvOyqSjxIPrzyJiHVZLAt2TCY-0-ee01d257fea4c4e8e459195040f83fad)
(3.17)
类似地,权重系数可以通过一个全连接层(如果使用卷积层特征作为输入,则对应卷积层)和Sigmoid 激活函数实现,其中全连接层的参数为
。对于升维后的帧特征
,经过该全连接层和Sigmoid 激活函数之后,可以得到
,它的第
维是
。
(4)差值求和。在进行差值求和时,既对每个分组独立进行差值求和,又将不同分组按权重相加:
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_240.jpg?sign=1739271130-uV9bg3tre5IW8nsQpDWiv18c0LAUTASv-0-6cdb619e4810b4771392968ff8049cdd)
(3.18)
图3-7是NeXtVLAD的实现。和图3-4 相比,图3-7 做了一些变形,以缩小图像左右宽度。在输入帧特征之后,NeXtVLAD 首先会使用全连接层将特征升维到
,其中
,随后传入图3-7中下的两个部分。其中一部分又分为
个单元,每个单元对应一个分组,其中第
个分组利用以
为参数的全连接层和Softmax 激活函数计算
。另一部分通过以
为参数的全连接层和Sigmoid 激活函数计算
。
随后在图3-7中右侧存在个单元,包括
个“聚类”和
个分组,图中展示了其中的第
个单元的计算过程。该单元接受两组输入,一个输入是分组之后的特征
,另一个输入是
对应位置相乘的结果,即
。该单元内部计算过程和NetVLAD 类似,分别计算
。其中,第
个“聚类”的全连接层的参数为
,同一“聚类”
下不同分组
的全连接层是共享的。最终输出是
,每个
各自进行内部规范化,之后
整体再进行
规范化,得到最终的特征
作为NeXtVLAD的输出。
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_267.jpg?sign=1739271130-s1DZLEbGrU4Y2JnhnHhrF8R9XHiPDGdJ-0-2b859887449348cb40786eed5507b786)
图3-7 NeXtVLAD计算流程图
最后,我们总结一下 NeXtVLAD 的参数量和特征维度。第 1 步,特征升维分组需要一个全连接层进行特征升维,参数量为;第 2 步,“聚类中心”需要的参数量为
;第 3 步,特征分配中计算分配系数需要的参数量为
、计算权重系数需要的参数量为
;第 4 步,差值求和不需要额外的参数。总之,NeXtVLAD的参数量是
,特征维度是
。NeXtVLAD的输出特征是一组特征
,每个输出特征的维度是
。因此,总的输出特征维度是
,小于NetVLAD的输出特征维度
。
相比于NetVLAD的参数量是,NeXtVLAD的参数量反而增加了。但是,如果考虑到后续全连接层的参数,NetVLAD的总参数量是
,主导项是
,而 NeXtVLAD的总参数量是
,主导项
。可以看出,NeXtVLAD通过分组处理的操作,能大幅降低随后的分类层的参数,最终减少了总参数量。
将 VLAD、NetVLAD、NeXtVLAD 三者进行对比,如表3-1所示。
表3-1 VLAD、NetVLAD、NeXtVLAD 参数量和特征维度对比
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt003_283.jpg?sign=1739271130-sDYaQqPnbvkDF35GhURbimenML1CxBiD-0-fd57ccf153801ae9d14cc98f2d90a8a1)