1. 引言
在计算机视觉领域,卷积神经网络(CNN)和Transformer网络是两种常见模型,他们具有各自的优势。CNN由于卷积运算的局部性和权值共享机制,具有很强的归纳偏置(归纳偏置是指:在不依赖数据的情况下,将学习算法推向特解,从而高度影响学习算法的泛化能力[1] [2]),能够有效地提取图像中的局部特征。而Transformer的核心在于自注意力机制,它允许模型在处理序列数据时,能够同时考虑输入序列中所有位置的信息,从而捕捉到长距离依赖关系[3]。因此,为了同时利用CNN与Transformer的优势,一些工作尝试将CNN与Transformer模型进行融合[4]。使Transformer模仿CNN的多尺度金字塔结构,利用patch embedding层和加入了空间缩减机制的编码器层实现对特征图尺度的灵活调整。但是,这带来了计算成本高、参数量大等问题[5]。使用先CNN再Transformer的串联连接方式,将CNN网络提取出的低分辨率的特征图重塑为一系列特征序列并对其进行位置编码,将结果输入到Transformer中进行学习[6];则使用先Transformer再CNN的串联连接方式,其在vit [7]后串行拼接了Faster R-CNN [8]作为模型的目标检测网络,并将vit的输出重组并输入目标检测网络的残差块。然而,上述两种方式会改变Transformer的原有结构,降低Transformer的容量(容量是指模型的拟合能力,与模型的参数量和深度有关)。其他方法如Deit [9]则采用知识蒸馏的方式,通过在输入序列中引入蒸馏token,将CNN教师模型的泛化能力蒸馏到Transformer学生模型中。然而,一些研究显示,在Transformer网络的早期阶段引入卷积操作能够提高模型的效果[5] [10],而Deit [9]仅在教师模型和学生模型的logit输出层进行蒸馏计算,使得浅层Transformer难以学习CNN网络的局部建模能力。因此,本文设计了一个CNN网络与Transformer网络的特征对齐蒸馏模块,在不改变Transformer原有结构的同时,使Transformer学生模型能够从CNN教师模型的特征层学习局部建模能力。
使用特征对齐蒸馏模块,实现了在不改变原有模型网络结构的情况下,在CNN与Transformer的特征层面进行知识蒸馏,将CNN的局部建模能力转移到Transformer中。但是,上述模块还存在一些问题。首先,为了对齐CNN与Transformer的特征层维度,本文构造了如图1(b)所示的特征对齐模块,而在该模块中引入了卷积运算等操作,增加了模型的计算量。其次,[11]通过CKA [12] [13] (特征相似度量)方法生成了异构网络的特征相似性热图,并发现来自异构网络的特征存在于不同的潜在特征空间中,因而不能保证成功对齐异构网络的特征。尽管上述特征对齐模块在本文的实验设置中有效地实现了异构网络(即CNN与Transformer)间的特征对齐知识蒸馏,但却缺乏一定的通用性。而相比于网络模型的特征层,logit层直接描述网络的输出分布,具有更强的通用性。因此,为了降低特征对齐的计算量,并实现CNN与Transformer特征层的通用蒸馏方法,本文提出了特征映射logit蒸馏模块:通过在Transformer学生模型的特征层加入额外的logit输出分支,实现Transformer学生模型的特征层与CNN教师模型的logit输出层之间的蒸馏。
在[14]中,经过预训练的VideoMAE教师[15]和MAE教师[16]同时对学生模型进行指导,使学生模型同时学习到了空间建模能力和时间建模能力。为了使Transformer学生模型同时学习到CNN教师的局部建模能力和Transformer教师的长距离依赖建模能力,本文提出了一个两阶段蒸馏框架:第一阶段,在Transformer学生和CNN教师的特征层面进行蒸馏,从而学习CNN教师的局部建模能力;第二阶段,引入一个层数更多的Transformer教师来指导学生模型,从而学习Transformer教师的长距离依赖建模能力。与[14]中学生模型同时与两个教师进行知识蒸馏不同,本文将知识蒸馏分为两个阶段,每个阶段只存在一个教师模型。
本文的主要贡献总结如下:
• 本文提出了特征对齐蒸馏模块,实现了CNN与Transformer间的特征层对齐,并将CNN的局部建模能力转移到了Transformer中。
• 本文提出了特征映射logit蒸馏模块,实现了CNN与Transformer特征层的通用蒸馏方法。
• 本文提出了两阶段蒸馏框架,通过CNN教师与Transformer教师的协同指导,使学生模型同时学习到了局部建模能力和长距离依赖建模能力。
2. 方法
Figure 1. Feature alignment distillation module and overall architecture
图1. 特征对齐蒸馏模块和整体架构
2.1. 特征对齐蒸馏模块
在之前的工作中,[17]通过研究卷积与自注意力层之间的关系证明了自注意力的卷积等效性:通过设置二次编码,一个具有N个头且相对位置编码的维度不小于3的多头自注意力层可以表示任何核大小为
的卷积层。而在[17]中,二次编码即为相对位置编码:
(1)
在公式(1)中,可学习参数
和
分别确定了每个头的注意力中心和宽度,而固定参数
则表示query和key像素之间的相对位移。为了实现CNN与Transformer特征层的对齐,在[17]的基础上,本文提出了多头卷积注意力层,称为:MHCA。原始的多头自注意力计算如公式(2)所示:
(2)
而本文提出的多头卷积注意力层,通过使用相对位置自注意[18],使得自注意力层表示为卷积层。相比MHSA,MHCA仍然进行线性投影、点积注意力缩放和归一化等操作。不同的是,在得到注意力权重矩阵之前,需要增加参数
和
,以引入相对位置信息。具体来说,对于输入
,MHCA执行如下多头自注意力计算:
(3)
在公式(3),
和
均参照公式(1)。由于
包含可学习参数
和
,而
和
分别确定了每个头的注意力中心和宽度,所以MHCA可以自适应学习相对位置嵌入的合适范围[19] (即图1中的adaptive RPE)。在图1中,令Transformer学生特征层的content token大小为
(l和c分别为token的数量和维度),CNN教师特征层的feature map大小为
(
、
和
分别为feature map的高度、宽度和通道数)。为了对齐
和
,本文提出了特征对齐模块(即图1中(a)所示的aligner模块),其详细结构如图1(b)所示。对于Transformer学生的content token,特征对齐模块对其进行堆叠重塑、线性插值、卷积、层归一化、relu函数等操作,以匹配content token和feature map的大小。在学生模型和教师模型的特征层维度对齐之后,本文使用蒸馏模块将CNN教师的局部建模能力蒸馏到Transformer学生中,如图1中的
所示:
(4)
在公式(4)中,
和
分别为CNN教师和Transformer学生的特征层输出,aligner为特征对齐模块,MSE表示均方差损失。
2.2. 特征映射logit蒸馏模块
基于特征的蒸馏和基于logit的蒸馏是两种常见的蒸馏方法,它们各有优势。基于特征的蒸馏的目标是使得学生模型的中间层特征尽可能接近教师模型的中间层特征,以帮助学生模型学习教师模型各层级的深层次特征。而基于logit的蒸馏的目标则是尽可能地匹配学生模型与教师模型的输出分布。相比基于特征的蒸馏,其减少了计算的复杂度。在之前的工作中,若进行蒸馏的教师模型和学生模型架构相似(如教师模型与学生模型都是CNN架构或都是Transformer架构),它们的学习表征在特征空间中表现出相似性[11]。此时,对教师模型和学生模型的特征层输出使用简单的相似性度量函数(如MSE均方差函数)就可以取得良好的蒸馏效果[20]。然而,若进行蒸馏的教师模型和学生模型架构不同,由于异构模型的特征存在于不同的特征空间中,因此不能保证成功对齐教师模型与学生模型的特征[11]。尽管在2.1节提出的特征对齐蒸馏模块是有效的,但为了提高异构网络(即CNN与Transformer)特征层蒸馏的通用性,同时为了避免特征对齐模块引入的额外卷积运算,本文提出了CNN与Transformer的特征映射logit蒸馏模块。
与2.1节中的特征对齐蒸馏模块不同,特征映射logit蒸馏模块不是直接对教师模型和学生模型的特征层输出进行蒸馏,而是通过在学生模型的特征层加入额外的logit输出分支,将学生模型特征层与教师模型特征层不匹配的表示转移到对齐的logit空间中。通过对学生模型额外的logit输出分支与教师模型的logit输出进行损失计算,使学生模型的特征层学习教师模型的预测分布,实现了特征层的通用异构网络蒸馏。
Figure 2. Feature project logit distillation module
图2. 特征映射logit蒸馏模块
本文提出的特征映射logit蒸馏模块如图2所示。为方便,将Transformer学生模型的层数设置为4。每个特征层经过投影、全连接操作后得到一个预测向量,此向量即为特征层的logit得分。对于CNN教师模型,一方面,CNN教师模型的层数与Transformer学生模型的层数不一致,在与学生模型的特征层蒸馏时难以确定蒸馏点(即蒸馏层数的匹配);另一方面,由于特征映射logit蒸馏模块最终是使用教师模型的logit得分与学生模型进行蒸馏,而教师模型最后一层的logit得分效果必然优于特征层的logit得分效果,因此,本文直接使用教师模型最后一层logit得分与学生模型的特征层logit得分进行蒸馏。
尽管不同架构的模型在logit空间中学习相同的目标,但这些模型拥有不同的归纳偏置[19],这使得它们得到不同的预测分布。为了缓解这个问题,仿照[11],本文通过将目标类和非目标类的logits信息分开引导,用以增强目标类的信息。原始的logit蒸馏损失[21]如下所示:
(5)
在公式(5)中,
是样本和类标签的联合分布,
是样本输入,
为真值标签,
和
分别为学生模型和教师模型对样本输入的预测,
和
分别为交叉熵损失函数和KL散度,
则是控制硬标签和软标签蒸馏的系数。通过将目标类和非目标类的logits信息分开引导,蒸馏损失可以表示如下:
(6)
在公式(6)中,
和
分别表示预测类和目标类,由于KL散度的分母项对梯度没有贡献,因此相比于原始蒸馏损失将分母项省去,且为了得到通用的蒸馏损失,将超参数
也省去。最后,为了增强来自目标类的信息,在
项上增加一个调制参数
,得到如下蒸馏损失:
(7)
在3.2节和3.3节的实验中,均取
为1.1。本文将Transformer学生模型的平均分为四个部分,并在每个部分的末端进行如图2所示的特征映射logit蒸馏。最终,CNN与Transformer 的特征映射logit蒸馏模块得到的蒸馏损失
如下所示:
(8)
在公式(8)中,
。
2.3. 两阶段蒸馏框架
如图1(a)所示,使用特征对齐蒸馏模块将CNN模型特征层的信息蒸馏到了Transformer学生模型中,提高了Transformer学生模型提取局部信息的能力。然而,若在整个训练阶段都对Transformer学生模型和CNN教师模型进行蒸馏,会阻碍Transformer学生模型学习自身的归纳偏置[19]。另一方面,根据[7] [22],由于缺乏一定的归纳偏置,Transformer网络需要大量的训练数据才能达到与CNN网络相当的效果,并且在训练数据充足时,Transformer网络的效果将优于CNN网络。因此,在训练数据充足时,为了充分利用训练数据,尽可能地发挥Transformer网络“高容量”的优点,并使其能够学习到自身的归纳偏置,本文提出了一个两阶段蒸馏框架:在第一阶段,使用CNN教师模型指导学生模型;在第二阶段,使用Transformer教师模型指导学生模型。
如图1(a) stage1所示,在第一阶段,使用特征对齐蒸馏模块使Transformer学生模型模仿CNN教师模型的特征层行为。除了特征层蒸馏,第一阶段也采用logit蒸馏:对学生模型的content token进行pool操作得到logit得分,并与教师模型的最后一层logit输出进行损失计算。需要注意的是,第一阶段的logit蒸馏并没有参照[9]在学生模型中引入额外的蒸馏token,因为这会使得在下游任务进行微调时引入额外的预训练教师模型。第一阶段的总损失函数如下所示:
(9)
在公式(9)中,
为学生模型的硬标签损失,其中
为交叉熵损失,y为真值标签,
为学生模型的预测结果。
为logit蒸馏损失,其中
为KL散度,
为教师模型的预测结果。
为特征对齐蒸馏模块损失,参照公式(4)。
如图1(a) stage2所示,在第二阶段,本文使用一个层数更多的Transformer教师模型来指导学生模型。不同的是,在第二阶段,仅进行logit蒸馏,同样对学生模型的content token进行pool操作得到logit得分。第一阶段的总损失函数如下所示:
(10)
需要说明的是,第二阶段的相对位置编码与第一阶段相同。
关于2.2节提到的特征映射logit蒸馏模块,其作为2.1节的特征对齐蒸馏模块的替换。因此,若在第一阶段使用特征映射logit蒸馏模块,则第一阶段的总损失函数如下所示:
(11)
在公式(11)中,
为特征映射logit蒸馏模块损失,参照公式(8)。
2.4. 模型实现
按照2.3节的设置,本文在训练模型时使用两阶段框架:第一阶段,在Transformer学生模型和CNN教师模型间进行蒸馏;第二阶段,在Transformer学生模型和Transformer教师模型间进行蒸馏。
若在第一阶段使用如3.1节所表述的特征对齐蒸馏模块,则总体模型如图1(a)所示,模型记为TSD-fad。第一阶段,视频帧分别输入Transformer学生模型和CNN教师模型,并使用特征对齐蒸馏模块对学生模型和教师模型的特征层进行蒸馏。特征对齐蒸馏损失如公式(4)所示,对于教师模型,取最后一个卷积层的输出
作为feature map大小;对于学生模型,取最后一个编码器的输出
作为content token大小。需要注意的是,由于使用2D CNN模型作为第一阶段的教师模型,在视频帧输入时,需要逐帧输入Transformer学生模型进行编码计算。第一阶段的总损失函数为特征对齐蒸馏损失与logit蒸馏损失之和,如公式(9)所示。第二阶段,视频帧分别输入Transformer学生模型和具有相同架构的Transformer教师模型。在此阶段,仅进行logit蒸馏,总损失函数如公式(10)所示。需要注意的是,在第一阶段使用特征对齐蒸馏模块时,需要在Transformer学生模型中引入如2.1节所述的多头卷积注意力层(MHCA)。具体的,原始的Transformer学生模型具有12个多头自注意层(MHSA),本文将其中的前8个替换为多头卷积注意力层(MHCA)。由于分类token应该忽略所有其它token的位置信息,所以多头卷积注意力层中的相对位置嵌入并不适用于分类token。因此,参照[19]中的设置,本文使用零向量填充相对位置嵌入并将它们添加到所有token中。除此之外,第二阶段的相对位置嵌入与第一阶段保持不变。
若在第一阶段使用如3.2节所表述的特征映射logit蒸馏模块,则第一阶段的模型如图2所示,此时总体模型记为TSD-fpld。特征映射logit蒸馏损失如公式(8)所示,总损失函数为特征映射logit蒸馏损失与logit蒸馏损失之和,如公式(11)所示。
3. 实验
3.1. 实验设置
在本章中,模型在Something-Something V2和Kinetics-400数据集上进行实验。
预训练策略。本章使用Kinetics-400数据集进行预训练,输入视频长度为16帧,每帧分辨率大为224 × 224,使用密集采样[23] [24],并使用 Multi-ScaleCrop [25]进行数据增强。为了进行两阶段蒸馏,Transformer学生模型使用vit-small,它拥有12个编码器和6个注意力头。在第一阶段,使用经过pytorch框架预训练的resnet101作为教师模型。在第二阶段,按照[14]中学生模型与视频教师的设置进行知识蒸馏。使用按照[15]设置在Kinetics-400上训练1600个轮次的vit-base作为教师模型,与[14]中计算重建损失不同,在此处仅对学生模型和教师模型的logit输出计算损失。预训练阶段共400个轮次,而对于2.3节的两阶段蒸馏框架,消融实验(见下文)表明,第一阶段和第二阶段分别训练100个和300个轮次时,模型取得最好的效果。在对比实验和消融实验中,除非特别说明,均采用此两阶段蒸馏策略。批大小设置为1024,使用Adam W [26]优化器,学习率设置为1.5e−4,使用余弦衰减[27],且权重衰减大小为0.05。
微调和推理策略。微调阶段,将预训练完成的模型应用于下游视频分类任务,包括Kinetics-400数据集和Something-Something V2数据集。在Kinetics-400数据集上微调时,共进行150个轮次,使用密集采样[23] [24],输入视频为16帧,在推理时,使用3个空间裁剪和5个时间剪辑。在Something-Something V2数据集上微调时,共进行40个轮次,使用均匀采样[25],输入视频为16帧,在推理时,使用3个空间裁剪和2个时间剪辑。在两个数据集上均使用Adam W优化器[26],学习率均设置为1e−3。
Table 1. Comparisons with the other methods on Something-Something V2
表1. 与其他方法在Something-Something-V2数据集上的对比
Model |
Pretrain |
Crops × Clips |
Top-1 (%) |
Top-5 (%) |
TSM [33] |
K400 |
3 × 2 |
63.4 |
88.5 |
TEINet [35] |
IN-1K |
1 × 1 |
62.1 |
- |
TDN [28] |
IN-1K |
1 × 1 |
65.3 |
89.5 |
ACTION-Net [36] |
IN-1K |
1 × 1 |
64.0 |
89.3 |
SlowFast R101, 8 × 8 [23] |
K400 |
3 × 1 |
63.1 |
87.6 |
MSNet [37] |
IN-1K |
1 × 1 |
64.7 |
89.4 |
blvNet [29] |
IN-1K |
1 × 1 |
65.2 |
90.3 |
Timesformer-HR [34] |
IN-1K |
3 × 1 |
62.5 |
- |
ViVit-L/16 × 2 [30] |
IN-1K |
3 × 1 |
65.9 |
89.9 |
MViT-B, 64 × 3 [38] |
K400 |
3 × 1 |
67.7 |
90.9 |
Mformer-L [39] |
K400 |
3 × 1 |
68.1 |
91.2 |
X-ViT [40] |
IN-1K |
3 × 1 |
66.2 |
90.6 |
SIFAR-L [41] |
K400 |
3 × 1 |
64.2 |
88.4 |
Video-Swin [31] |
K400 |
3 × 1 |
69.6 |
92.7 |
TPS-T [32] |
IN-1K |
3 × 1 |
66.4 |
90.2 |
TPS-T [32] |
K400 |
3 × 1 |
67.9 |
90.8 |
TSD-fpld |
K400 |
3 × 2 |
70.1 |
92.3 |
3.2. 对比实验
表1和表2分别给出了本文方法在Something-Something V2数据集与Kinetics-400数据集上与其他现有方法的对比实验结果。需要注意的是,本文提出的方法在Something-Something V2数据集上的推理结果,在第一阶段(具体表述见2.3节两阶段蒸馏框架)使用特征映射logit蒸馏模块时(TSD-fpld)达到最佳;而在Kinetics-400数据集上的推理结果,在第一阶段(具体表述见2.3节两阶段蒸馏框架)使用特征对齐蒸馏模块时(TSD-fad)达到最佳。因此,在表1和表2中分别只展示TSD-fpld和TSD-fad的效果,其在相同数据集上的对比结果及分析见3.3节。
Table 2. Comparisons with the other methods on Kinetcis-400
表2. 与其他方法在Kinetics-400数据集上的对比
Model |
Pretrain |
Crops × Clips |
Top-1 (%) |
Top-5 (%) |
I3D [24] |
IN-1K |
1 × 1 |
72.1 |
90.3 |
NL-I3D [42] |
IN-1K |
6 × 10 |
77.7 |
93.3 |
CoST [43] |
IN-1K |
3 × 10 |
77.5 |
93.2 |
SolwFast-R50 [23] |
IN-1K |
3 × 10 |
75.6 |
92.1 |
续表
X3D-XL [44] |
- |
3 × 10 |
79.1 |
93.9 |
TSM [33] |
IN-1K |
3 × 10 |
74.7 |
91.4 |
TEINet [35] |
IN-1K |
3 × 10 |
76.2 |
92.5 |
TEA [45] |
IN-1K |
3 × 10 |
76.1 |
92.5 |
TDN [28] |
IN-1K |
3 × 10 |
77.5 |
93.2 |
Timersformer-L [34] |
IN-21K |
3 × 1 |
80.7 |
94.7 |
X-ViT [40] |
IN-21K |
3 × 1 |
80.2 |
94.7 |
MViT-B, 32 × 3 [38] |
IN-21K |
1 × 5 |
80.2 |
94.4 |
MViT-B, 64 × 3 [38] |
IN-21K |
3 × 3 |
81.2 |
95.1 |
Mformer-HR [39] |
K400 |
3 × 1 |
81.1 |
95.2 |
TokenShift-HR [46] |
IN-21K |
3 × 10 |
80.4 |
94.5 |
TPS-T [32] |
IN-1K |
3 × 4 |
78.2 |
92.2 |
TSD-fad |
K400 |
3 × 5 |
81.3 |
94.7 |
表1的第一栏给出了TSD-fpld与CNN相关方法的对比结果。slowfast [23]利用快慢双通道分别处理视频帧中的时间信息和空间信息。TDN [28]通过短时建模和长时建模分别融合段内局部运动变化信息和增强段间运动变化信息。blVNet [29]构造了浅层网络和深层网络来分别处理高分辨率帧和低分辨率帧,并使用一个深度卷积来提取视频帧中的时序信息。相比于这些方法使用不同模块分别处理视频帧的空间信息和时间信息,TSD-fpld通过设置两阶段蒸馏框架直接学习不同教师模型的预测分布:第一阶段,让能有效地提取图像中局部特征的CNN教师指导学生模型;第二阶段,让能有效地建模长距离依赖关系的Transformer教师指导学生。通过直接模仿教师模型的预测分布,学生模型可以减少参数优化的时间,从而加快训练速度。
表1的第二栏给出了TSD-fpld与Transformer相关方法的对比结果。ViVit [30]研究了将原始vit引入视频任务所得到的几种变体,如将编码器拆解为空间编码器和时间编码器来分别处理空间和时间信息。Video-Swin [31]通过将自注意力计算限制在窗口内来减小计算量,并提出偏移窗口注意力计算进行全局特征融合。TPS [32]通过在不同视频帧之间进行patch块移位,使得当前视频帧包含其他帧的部分内容,增大了当前帧的时间感受野。而本文提出的TSD-fpld通过特征映射logit蒸馏模块将学生模型的特征映射为logit,并与CNN教师模型的最终logit输出计算损失,使学生模型的特征层学习到了教师模型的预测分布,同时也实现CNN与Transformer之间的通用知识蒸馏。即便在与时序信息高度相关的Something-Something V2数据集上,TSD-fpld的效果也优于上述方法。
在表2中,TSD-fad首先与一些使用3D CNN或分解(2 + 1) D CNN的方法进行对比,如表2第一栏所示。TSM [33]是一种是用卷积进行视频分类的高效方法,其通过在时间维度上移动部分通道,实现相邻帧之间的信息交换。相比于TSM,TSD-fad使用原始的vit-small,并通过将其中的前8个多头自注意力层(MHSA)替换为包含相对位置信息的多头卷积注意力层(MHCA),使得TSD-fad在学习非局部语义依赖的同时能够意识到局部细节。并且,由于Transformer模型的“容量”高于CNN模型,可以看到,在经过400个轮次的预训练和40个轮次的微调后,TSD-fad的预测准确率高于TSM及其他CNN方法。
表2的第二栏给出了TSD-fad与Transformer相关方法的对比结果。Timesformer-L [34]抛弃了CNN,使用纯Transformer架构,并探讨了包含联合时空自注意力在内的几种注意力计算方式。但是,Timesformer-L的纯Transformer结构使其难以有效提取视频帧中的局部特征。因为相比于Transformer,CNN由于卷积运算的局部性和权值共享机制,具有很强的归纳偏置,能够有效地提取图像中的局部特征[19]。相比于Timesformer的纯Transformer架构,TSD-fad通过在第一阶段引入CNN教师指导学生模型,迫使学生模型模仿CNN教师模型特征层的操作,提高了学生模型局部建模的能力。因此在与场景高度相关的Kinteics-400数据集上,TSD-fad的效果优于Timesformer。
3.3. 消融实验
在本节中,通过设置多组消融实验以验证各个模块的有效性,消融实验结果见表3~6。其中,表3所述实验在Something-Something V2和Kinetics-400数据集上进行,表4和表5所述实验仅在Something-Something V2数据集上进行,表6所述实验仅在Kinetics-400数据集上进行。
(1) 本文研究了不同的特征蒸馏模块对模型的影响。结果如表3所示,其中TSD-fad和TSD-fpld分别表示在第一阶段使用特征对齐蒸馏模块和特征映射logit蒸馏模块,(w/o)后缀表示不使用对应模块。比较表3的第一、第二行所示结果可以看到:在第一阶段使用特征对齐蒸馏模块使本文所述方法分别在Something-Something V2和Kinetics-400数据集上取得了0.6%和0.3%的准确率提升。而比较表3的第三、第四行所示结果可以看到:在第一阶段使用特征对齐蒸馏模块使本文所述方法分别在Something-Something V2和Kinetics-400数据集上取得了0.5%和0.4%的准确率提升。验证了特征对齐蒸馏模块和特征映射logit蒸馏模块的有效性。而比较表3的第二、第四行可以得到:在Something-Something V2数据集上使用特征映射logit蒸馏模块的效果优于特征对齐蒸馏模块,在Kinetics-400数据集上使用特征对齐蒸馏模块的效果优于特征映射logit蒸馏模块。两个特征蒸馏模块表现出了明显的数据集偏向性:Kinetics-400数据集与场景特征高度相关,相邻视频帧在时间维度上变化不大,而特征对齐蒸馏模块直接使学生模型的特征层模仿CNN教师模型的特征层行为,因而更好地提取到了局部特征,取得了更高的准确率;而Something-Something V2数据集对时序信息尤其敏感,相比于关注局部特征的特征对齐蒸馏模块,特征映射logit蒸馏模块直接使学生模型学习教师模型的预测分布,因而取得了更高的准确率。
(2) 表4给出了特征映射logit蒸馏模块(TSD-fpld)的特征蒸馏层数对模型预测效果的影响。在2.2节中,本文方法将学生模型的编码器平均分为四个部分,并在每部分的末层构造特征映射logit分支与教师
Table 3. The effect of feature distillation module on Something-Something V2 and Kinetics-400
表3. 特征蒸馏模块在Something-Something V2和Kinetics-400数据集上的影响
|
Something-Something V2 |
Kinetics-400 |
TSD-fpld (w/o) |
69.5 |
80.7 |
TSD-fpld |
70.1 |
81.0 |
TSD-fad (w/o) |
69.1 |
80.9 |
TSD-fad |
69.6 |
81.3 |
Table 4. The effect of TSD-fpld’s feature distillation layers on Something-Something V2
表4. TSD-fpld的特征蒸馏层数在Something-Something V2数据集上的影响
Layer4 |
Layer3 |
Layer2 |
Layer1 |
Top-1 (%) |
|
|
|
|
69.5 |
√ |
|
|
|
69.9 |
√ |
√ |
|
|
70.0 |
√ |
√ |
√ |
|
70.0 |
√ |
√ |
√ |
√ |
70.1 |
Table 5. The effect of TSD-fpld’s stage1 epochs on Something-Something V2
表5. TSD-fpld的第一阶段训练轮次在Something-Something V2数据集上的影响
Stage1 epochs |
0 |
50 |
75 |
100 |
125 |
150 |
Top-1 (%) |
69.3 |
69.8 |
69.9 |
70.1 |
69.7 |
69.5 |
Table 6. The effect of the loss function in TSD-fad on Kinetics-400
表6. TSD-fad的损失函数在Kinetics-400数据集上的影响
Lfeature |
Llabel (stage1) |
Llogit (stage1) |
Llabe l (stage2) |
Llogit (stage2) |
Top-1 (%) |
|
|
|
√ |
√ |
80.5 |
|
|
√ |
√ |
√ |
80.8 |
|
√ |
√ |
√ |
√ |
80.9 |
√ |
√ |
√ |
√ |
√ |
81.3 |
模型进行蒸馏,四个分支分别记为Layer1、Layer2、Layer3和Layer4,如表4所示。当增加Layer4蒸馏分支时,模型取得了0.4%的准确率提升;而当增加Layer1、Layer2和Layer3蒸馏分支时,模型的准确率则变化不大。特征映射logit蒸馏模块直接使学生模型学习教师模型的预测分布,而Transformer的深层编码器(Layer4)由于经过多层的堆叠,能够将低级特征与更高级的上下文信息结合,产生更有表现力的特征表示,因此在使用Layer4蒸馏分支时,模型能够取得较大的准确率提升。尽管如此,在使用特征映射logit蒸馏模块时,本文方法仍然使用四个蒸馏分支。
(3) 表5给出了在第一阶段使用特征映射logit蒸馏模块(TSD-fpld)时训练轮次对模型预测效果的影响。需要注意的是,第一阶段与第二阶段的总训练轮次始终为400。当Stage1 epochs为0时,表示抛弃了两阶段蒸馏框架的第一阶段,只在第二阶段对模型预训练400个轮次,损失函数见公式(10)。此时,模型取得了69.3%的准确率,而当使用两阶段蒸馏框架且在第一阶段训练100个轮次时,模型的准确率达到了70.1%,取得了0.8%的准确率提升,验证了两阶段蒸馏框架的有效性:第一阶段,特征蒸馏使学生模型学习到了CNN教师的局部特征建模能力;第二阶段,简单的logit蒸馏使学生模型学习到了Transformer教师的长距离依赖关系建模能力。而对于其他的训练轮次设置:较少的第一阶段训练轮次无法使Transformer学生模型学习到足够的局部建模能力;而较多的第一阶段训练轮次则阻碍了Transformer学生模型学习自身的归纳偏置(在训练数据充足时,Transformer的效果优于CNN)。
(4) 表6给出了在第一阶段使用特征对齐蒸馏模块(TSD-fad)时损失函数对模型预测效果的影响。表6中各损失函数参见2.3节。对比表6的第一、第二行可以看到:在使用两阶段蒸馏框架时(第一阶段仅对学生模型和教师模型的logit输出进行蒸馏),模型取得了0.3%的准确率提升。而对比第二、第三行则验证了第一阶段硬标签蒸馏的有效性,第三、第四行对比验证了特征对齐蒸馏模块的有效性。
4. 结论
本文针对Transformer网络缺少一定的归纳偏置的问题,提出了特征对齐蒸馏模块。该模块通过将Transformer的特征层与CNN的特征层进行维度对齐,实现了Transformer与CNN的特征层蒸馏,使Transformer学习到了CNN的局部建模能力。针对特征对齐操作会引入卷积操作增加模型计算量的问题,本文又提出了特征映射logit蒸馏模块,通过将Transformer的特征层映射为logit,实现了Transformer与CNN特征层的通用蒸馏方法。为了使学生模型同时学习局部建模能力和长距离依赖建模能力,本文提出了两阶段蒸馏框架,实现了CNN教师和Transformer教师对学生模型的协同指导。本文提出的方法在Something-Something V2和Kinetics-400数据集上分别取得了70.1%和81.3%的Top-1准确率,具有良好的性能。
基金项目
安徽省自然科学基金项目(2408085MF157)。