摘要
在本文中,我们成功应用蒸馏策略以实现YoloV8小模型的无损性能提升。我们采用了CWDLoss作为蒸馏方法的核心,通过对比在线和离线两种蒸馏方式,我们发现离线蒸馏在效果上更为出色。因此,为了方便广大读者和研究者应用,本文所描述的蒸馏方法仅保留了离线蒸馏方案。此外,我们还提供了相关论文的译文,旨在帮助大家更深入地理解蒸馏方法的原理和应用。
论文翻译:《用于密集预测任务的通道知识蒸馏》
https://arxiv.org/pdf/2011.13256
知识蒸馏(KD)已被证明是训练紧凑密集预测模型的简单有效工具。通过从大型教师网络转移而来的额外监督来训练轻量级学生网络。大多数先前的针对密集预测任务的KD变体都在空间域中对学生网络和教师网络的激活图进行对齐,通常是通过在每个空间位置标准化激活值并最小化逐点和/或成对差异来实现的。与先前的方法不同,我们提出对每个通道的激活图进行标准化以获得软概率图。通过简单地最小化两个网络的通道概率图之间的Kullback-Leibler(KL)散度,蒸馏过程更关注于每个通道的最显著区域,这对于密集预测任务来说是非常有价值的。
我们在一些密集预测任务上进行了实验,包括语义分割和对象检测。实验表明,我们提出的方法在性能上显著优于最先进的蒸馏方法,并且在训练过程中需要的计算成本更低。特别地,我们在COCO数据集上将RetinaNet检测器(ResNet50主干)的mAP提高了3.4%,在Cityscapes数据集上将PSPNet(ResNet 18主干)的mIoU提高了5.81%。代码可在以下网址获取:
https://git.io/Distiller
1、引言
密集预测任务是计算机视觉中的一组基础任务,包括语义分割[48,6]和对象检测[21,30]。这些任务需要在像素级别上学习强大的特征表示,以实现对复杂场景的理解。因此,最先进的模型通常需要高计算成本,这使得它们难以部署到移动设备上。因此,针对密集预测任务设计的紧凑网络引起了广泛关注。此外,先前的工作已经研究了通过使用知识蒸馏(KD)来有效训练轻量级网络。紧凑网络在大教师网络的监督下进行训练,可以获得更好的性能。对于图像分类任务,已经提出了许多开创性的工作[16,2]并进行了深入研究。
密集预测任务是逐像素预测问题,比图像级分类更具挑战性。先前的研究[25,20]发现,直接将分类中的KD方法[16,2]转移到语义分割可能无法获得令人满意的结果。严格对齐教师和学生网络之间的逐点分类分数或特征图可能会施加过于严格的约束,导致次优解。
最近的工作[25,24,18]关注于加强不同空间位置之间的相关性。如图2(a)所示,每个空间位置的激活值{}^{1}被标准化。然后,通过聚合不同空间位置的一个子集来执行一些特定于任务的关系,例如成对关系[25,35]和类间关系[18]。这样的方法可能在捕获空间结构信息方面比逐点对齐更好,并提高学生网络的性能。
然而,在激活图中,每个空间位置对知识转移的贡献是相等的,这可能会从教师网络中带来冗余信息。
在这项工作中,我们提出了一种新颖的针对密集预测任务的通道级知识蒸馏方法,通过标准化每个通道的激活图来实现,如图2(b)所示。然后,我们最小化了教师网络和学生网络之间标准化通道激活图的非对称Kullback-Leibler(KL)散度,这些激活图被转换为每个通道的分布。我们在图2©中展示了通道级分布的一个示例。每个通道的激活倾向于编码场景类别的显著性。对于每个通道,学生网络被引导更多地关注于模仿具有显著激活值的区域,从而在密集预测任务中实现更准确的定位。例如,在对象检测中,学生网络更加关注于学习前景对象的激活。
最近的一些工作利用了通道中包含的知识。通道蒸馏[50]提出将每个通道的激活转换为一个聚合的标量,这对于图像级分类可能有所帮助,但空间聚合丢失了所有空间信息,因此不适合密集预测。其他工作,如MGD[41]、通道交换[33]和CSC[26]显示了通道级信息的重要性。MGD将教师通道与学生通道进行匹配,并将其视为一个分配问题来解决。通道交换[33]使用一个融合模块来动态地在不同模态的子网络之间交换通道。
我们展示了针对每个通道的简单标准化操作可以极大地提高基于空间蒸馏的基线性能。所提出的通道级蒸馏方法简单且易于应用于各种任务和网络结构。我们总结我们的主要贡献如下:
- 与现有的空间蒸馏方法不同,我们为密集预测任务提出了一种新颖的通道级蒸馏范式。我们的方法简单但有效。
- 所提出的通道级蒸馏在语义分割和对象检测方面显著优于最先进的KD方法。
- 我们在四个基准数据集上展示了使用不同网络结构在语义分割和对象检测任务上的一致改进,证明了我们的方法是通用的。鉴于其简单性和有效性,我们相信我们的方法可以作为密集预测任务的强大基线KD方法。
2、相关工作
在知识蒸馏领域,大多数工作都集中在分类任务上[11,12,16,27,36,38,45]。然而,这里的工作旨在研究针对密集预测任务的高效和有效的蒸馏方法,而不仅仅是像分类任务中那样简单地应用逐像素蒸馏。
语义分割的知识蒸馏。在[35]中,构建了一个局部相似度图来最小化教师网络和学生网络之间分割边界信息的差异,其中使用中心像素与其8个邻域像素之间的欧几里得距离作为传输的知识。Liu等人[24,25]提出了两种方法来捕捉像素之间的结构化信息,包括像素之间的成对相似性和由判别器捕获的全局相关性。在[34]的工作中,重点在于具有相同标签的像素之间的类内特征变化,其中通过构建每个像素的特征与其对应的类级原型之间的余弦距离集来传输结构知识。He等人[14]则采用了一个特征适配器来减轻教师网络和学生网络之间的特征不匹配问题。
此外,正如您所提到的,通道级的知识蒸馏方法在密集预测任务中也逐渐受到关注。例如,一些方法通过标准化每个通道的激活图并最小化教师网络和学生网络之间标准化通道激活图的非对称KL散度来改进知识蒸馏的效果。这种方法能够让学生网络更加关注于模仿具有显著激活值的区域,从而实现更准确的定位。与现有的空间蒸馏方法相比,通道级蒸馏在语义分割和对象检测方面表现出了显著的性能提升,并证明了其在不同网络结构和基准数据集上的通用性。
目标检测的知识蒸馏。在目标检测任务中,许多方法发现区分前景和背景区域在蒸馏过程中非常重要。例如,MIMIC [20]通过 L 2 L_{2} L2损失强制学生网络的RPN内部特征图与教师网络相似,并发现直接应用逐像素损失可能会损害目标检测的性能。Wang等人 [32] 提出蒸馏对象锚点位置附近的细粒度特征。Zhang和Ma [43] 使用注意力生成的掩码来区分前景和背景,取得了显著的效果。
然而,与这些方法不同,我们的方法通过柔和地对齐通道激活来区分前景和背景区域。具体来说,我们关注每个通道中包含的知识。最近的一些工作 [50] 也开始关注每个通道中包含的知识。例如,Zhou等人计算每个通道中激活的平均值,并在分类任务中对每个通道的加权差异进行对齐。CSC [26] 计算所有空间位置和所有通道之间的成对关系以传输知识。而Channel exchanging [33] 提出每个通道中包含的信息是通用的,可以在不同的模态之间共享。
3、我们的方法
我们首先回顾文献中相关的空间知识蒸馏方法。
3.1、空间蒸馏
现有的KD方法通常采用逐点对齐或对齐空间位置之间的结构化信息,这可以表示为:
ℓ ( y , y S ) + α ⋅ φ ( ϕ ( y T ) , ϕ ( y S ) ) \ell(y, y^{S}) + \alpha \cdot \varphi(\phi(y^{T}), \phi(y^{S})) ℓ(y,yS)+α⋅φ(ϕ(yT),ϕ(yS))
在这里,任务损失 ℓ ( ⋅ ) \ell(\cdot) ℓ(⋅)仍然被应用,其中 y y y是真实标签。例如,在语义分割中,通常使用交叉熵损失。为了稍微滥用符号,这里 y S y^{S} yS和 y T y^{T} yT分别代表学生网络和教师网络的logits或内部激活。 α \alpha α是一个超参数,用于平衡损失项。下标 T {}^{T} T和 S {}^{S} S分别表示教师网络和学生网络。我们在表1中列出了代表性的空间蒸馏方法。
这些方法的简要概述如下。注意力转移(Attention Transfer,AT)[42]使用注意力掩码将特征图压缩为单个通道以进行蒸馏。逐像素损失(Pixel-wise Loss)[17]直接对齐逐点的类别概率。局部亲和力(Local Affinity)[35]通过中心像素与其8个邻域像素之间的距离来计算。成对亲和力(Pairwise Affinity)[25, 14, 24]被用来传递像素对之间的相似性。计算每个像素的特征与其对应的类别原型之间的相似性以传递结构知识[34]。在[25, 24]中的整体损失使用对抗性方案来对齐两个网络特征图之间的高阶关系。请注意,最后四项考虑了像素之间的相关性。如表1所示,现有的KD方法都是空间蒸馏方法。所有这些方法都将空间位置上的 N N N个通道激活值作为特征向量进行操作。
3.2、通道蒸馏
为了更好地利用每个通道中的知识,我们提出了在教师网络和学生网络之间柔和地对齐对应通道激活的方法。为此,我们首先将一个通道的激活转换为概率分布,这样我们就可以使用概率距离度量(如KL散度)来衡量差异。如图2©所示,不同通道的激活倾向于编码输入图像的场景类别的显著性。此外,经过良好训练的语义分割教师网络显示出每个通道清晰的特定于类别的掩码激活图,如图1右侧所示。在这里,我们提出了一种新颖的通道蒸馏范式,以指导学生从训练有素的教师那里学习知识。
当我们使用LaTeX格式来表示数学符号时,我们会使用$
符号来包围LaTeX代码。对于您提供的文本,我们可以将其转化为LaTeX格式,并用$
符号包围起来。以下是转化后的结果:
教师网络和学生网络分别表示为 T T T 和 S S S,来自 T T T 和 S S S 的激活图分别为 y T y^{T} yT 和 y S y^{S} yS。通道蒸馏损失可以一般性地表示为:
φ ( ϕ ( y T ) , ϕ ( y S ) ) = φ ( ϕ ( y c T ) , ϕ ( y c S ) ) . \varphi\left(\phi\left(y^{T}\right), \phi\left(y^{S}\right)\right)=\varphi\left(\phi\left(y_{c}^{T}\right), \phi\left(y_{c}^{S}\right)\right) \,. φ(ϕ(yT),ϕ(yS))=φ(ϕ(ycT),ϕ(ycS)).
ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅) 用于将激活值转换为概率分布,具体为:
ϕ ( y c ) = exp ( y c , i T ) ∑ i = 1 W ⋅ H exp ( y c , i T ) , \phi\left(y_{c}\right)=\frac{\exp \left(\frac{y_{c, i}}{T}\right)}{\sum_{i=1}^{W \cdot H} \exp \left(\frac{y_{c, i}}{T}\right)} \,, ϕ(yc)=∑i=1W⋅Hexp(Tyc,i)exp(Tyc,i),
其中 c = 1 , 2 , … , C c=1,2,\ldots,C c=1,2,…,C 索引通道; i i i 索引通道中的空间位置。 T T T 是一个超参数(温度)。如果教师和学生之间的通道数不匹配,我们会使用一个 1 × 1 1 \times 1 1×1 的卷积层来上采样学生网络的通道数。 φ ( ⋅ ) \varphi(\cdot) φ(⋅) 评估了来自教师网络和学生网络的通道分布之间的差异。我们使用 KL 散度:
φ ( y T , y S ) = T 2 C ∑ c = 1 C ∑ i = 1 W ⋅ H ϕ ( y c , i T ) ⋅ log [ ϕ ( y c , i T ) ϕ ( y c , i S ) ] . \varphi\left(y^{T}, y^{S}\right)=\frac{\mathcal{T}^{2}}{C} \sum_{c=1}^{C} \sum_{i=1}^{W \cdot H} \phi\left(y_{c, i}^{T}\right) \cdot \log \left[\frac{\phi\left(y_{c, i}^{T}\right)}{\phi\left(y_{c, i}^{S}\right)}\right] \,. φ(yT,yS)=CT2c=1∑Ci=1∑W⋅Hϕ(yc,iT)⋅log[ϕ(yc,iS)ϕ(yc,iT)].
KL 散度是一个不对称度量。从上面的方程中我们可以看到,如果 ϕ ( y c , i T ) \phi\left(y_{c, i}^{T}\right) ϕ(yc,iT) 很大, ϕ ( y c , i S ) \phi\left(y_{c, i}^{S}\right) ϕ(yc,iS) 也应该尽可能大以最小化 KL 散度。否则,如果 ϕ ( y c , i T ) \phi\left(y_{c, i}^{T}\right) ϕ(yc,iT) 非常小,KL 散度就不会太关注最小化 ϕ ( y c , i S ) \phi\left(y_{c, i}^{S}\right) ϕ(yc,iS) 的值。
KL散度是一个非对称度量。从方程(4)中我们可以看到,如果 ϕ ( y c , i T ) \phi\left(y_{c, i}^{T}\right) ϕ(yc,iT)很大,为了最小化KL散度, ϕ ( y c , i S ) \phi\left(y_{c, i}^{S}\right) ϕ(yc,iS)也应该尽可能地大,与 ϕ ( y c , i T ) \phi\left(y_{c, i}^{T}\right) ϕ(yc,iT)一样大。否则,如果 ϕ ( y c , i T ) \phi\left(y_{c, i}^{T}\right) ϕ(yc,iT)非常小,KL散度在最小化 ϕ ( y c , i S ) \phi\left(y_{c, i}^{S}\right) ϕ(yc,iS)时就不会太关注。因此,学生网络倾向于在前景显著区域产生类似的激活分布,而教师网络背景区域对应的激活对学习的影响较小。我们假设KL的这种非对称性质有利于密集预测任务的KD学习。
4、实验
在本节中,我们首先描述实现细节和实验设置。然后,我们将我们的通道级蒸馏方法与其他最先进的蒸馏方法进行比较,并在语义分割任务上进行消融研究。最后,我们在语义分割和对象检测任务上展示了使用不同基准和学生网络结构时的一致改进。
4.1、实验设置
数据集。我们在这里使用了三个公开的语义分割基准数据集,分别是Cityscapes [8]、ADE20K [49]和Pascal VOC [10]。此外,我们还将提出的蒸馏方法应用于MS-COCO 2017 [23]上的对象检测任务,这是一个包含超过120k张80个类别的图像的大规模数据集。
Cityscapes 数据集用于城市场景语义理解。它包含5,000张精细标注的图像,其中2,975/500/1,525张图像分别用于训练/验证/测试,提供了30个常见类别,其中19个类别用于评估和测试。每张图像的尺寸为2048x1024像素。这些图像来自50个不同的城市。在我们的实验中,我们没有使用粗略标注的数据。
Pascal VOC 数据集包含 1 , 464 / 1 , 449 / 1 , 456 1,464 / 1,449 / 1,456 1,464/1,449/1,456 张图像用于训练/验证/测试。它包含20个前景对象类别和一个额外的背景类别。此外,该数据集通过额外的粗略标注进行了扩充,其中包含10,582张训练图像。我们使用训练分割进行训练,并在21个类别上通过验证集测量最终性能。
ADE20K 数据集涵盖了150个不同场景的类别。它包含 20 K / 2 K / 3 K 20 \text{K} / 2 \text{K} / 3 \text{K} 20K/2K/3K 张图像用于训练、验证和测试。在我们的实验中,我们报告了验证集上的分割精度。
评估指标。为了评估我们在语义分割上提出的通道分布蒸馏方法的性能和效率,我们遵循先前的工作[18,24],在所有实验中通过单尺度设置下的平均交并比(mIoU)来测试每种策略。每秒浮点运算次数(FLOPs)是在固定输入大小为 512 × 1024 512 \times 1024 512×1024 像素的情况下计算的。此外,对于Pascal VOC和ADE20K,我们列出了平均类别准确率(mAcc)。为了评估在对象检测上的性能,我们报告了平均精度(mAP)、推理速度(FPS)和模型大小(参数),遵循[43]中的工作。
实现细节。对于语义分割,教师网络在所有实验中都是使用ResNet 101(PSPNet-R101)作为骨干网络的PSPNet。我们采用了几种不同的架构,包括PSPNet[48]、使用ResNet18和MobileNetV2作为骨干网络的Deeplab[44]作为学生网络,以验证我们方法的有效性。
在消融研究中,我们基于以ResNet 18为骨干网络的PSPNet(PSPNet-R18)来分析我们方法的有效性。除非另有说明,学生网络的每张训练图像都被随机裁剪为 512 × 512 512 \times 512 512×512像素。批处理大小设置为8,训练步数设置为 40 K 40 \text{K} 40K。在所有实验中,我们设置温度参数 T = 4 \mathcal{T}=4 T=4,对于logits图的损失权重 α = 3 \alpha=3 α=3,对于特征图的损失权重 α = 50 \alpha=50 α=50。对于对象检测,我们采用与[43]中相同的教师网络、学生网络和训练设置。
4.2、与最近的知识蒸馏方法比较
为了验证我们提出的通道蒸馏方法的有效性,我们将我们的方法与以下当前流行的蒸馏方法进行了比较:
- 注意力转移(Attention Transfer, AT) [42]:Sergey等人计算每个空间位置所有通道的和,以获得单个通道注意力图。他们使用 L 2 L_{2} L2损失来最小化注意力图之间的差异。
- 局部亲和力(Local Affinity, LOCAL) [35]:对于每个像素,构建一个局部相似度图,该图考虑了该像素与其8个邻域像素之间的相关性。同样,使用 L 2 L_{2} L2损失来最小化局部亲和力图之间的差异。
- 像素级蒸馏(Pixel-wise Distillation, PI) [25,24,34,7]:使用KL散度来对齐两个网络中每个空间位置的分布。
- 成对蒸馏(Pair-wise Distillation, PA) [25,14,24]:考虑了所有像素对之间的相关性。
- 类内特征变化蒸馏(Intra-class Feature Variation Distillation, IFVD) [34]:将每个像素的特征与其对应的类原型之间的相似度集合视为类内特征变化,以传递结构知识。
- 全局蒸馏(Holistic Distillation, HO) [25,24,34]:通过鉴别器计算特征图的全局嵌入,用于最小化高阶关系之间的差异。
我们在内部特征图和最终logits图上应用了所有这些流行的蒸馏方法。在所有实验中,都应用了传统的交叉熵损失。表2报告了空间蒸馏方法的计算复杂度和性能。
给定的输入特征图(logits图)的大小为 h f × w f × c ( h s × w s × n ) h_{f} \times w_{f} \times c\left(h_{s} \times w_{s} \times n\right) hf×wf×c(hs×ws×n),其中 h f ( h s ) × w f ( w s ) h_{f}\left(h_{s}\right) \times w_{f}\left(w_{s}\right) hf(hs)×wf(ws) 是特征图(logits图)的形状。 c c c 是通道数, n n n 是类别数。
如表2所示,所有蒸馏方法都能提高学生网络的性能。我们的通道蒸馏方法在所有空间蒸馏方法中表现最好。我们的方法比最佳的空间蒸馏方法(AT)高出2.5%。此外,我们的方法更加高效,因为它在训练阶段需要的计算成本比其他方法更少。
此外,我们在表3中列出了我们的方法与两种最近的先进方法PA [25]和IFVD [18]的详细类别IoU(Intersection over Union,交并比)。这些方法旨在在语义分割中转移结构信息。我们的方法显著提高了多个对象的类别准确性,如交通灯、地形、墙壁、卡车、公共汽车和火车,这表明通道分布可以很好地转移结构知识。
4.3、消融研究
在本节中,我们展示了通道蒸馏的有效性,并讨论了语义分割中超参数的选择。基线学生模型是PSPNet-R18,教师模型是PSPNet-R101。所有结果均在Cityscapes验证集上进行评估。
通道蒸馏的有效性。归一化的通道概率图和不对称KL散度在我们的蒸馏方法中起着重要作用。我们通过四种不同的变体进行实验,以展示表4中提出的方法的有效性。
所有蒸馏方法都应用于相同的激活图作为输入,并且我们使用与第4.1节中描述的相同的训练方案。
'PI’代表像素级知识蒸馏,它对每个空间位置的激活进行归一化。' L 2 w / o N O R M L2 w/o NORM L2w/oNORM’表示我们直接最小化来自两个网络的特征图之间的差异,这种方法在所有通道的所有位置都平等地考虑差异。'Bhat’是Bhattacharyya距离[3],它是一个对称分布度量,用于对齐每个通道中的差异。
从表4中我们可以看到,使用不对称KL散度来衡量归一化通道差异的方法取得了最佳性能。请注意,由于KL散度是不对称的,因此学生和教师的输入不能互换。我们尝试在KL散度中改变输入的顺序,但训练并没有收敛。
温度参数和损失权重的影响。我们通过在不同的损失权重α下调整温度参数 T \mathcal{T} T来改变通道概率图。实验在logits图上进行。结果如图3所示。
所有结果都是三次运行的平均值。损失权重设置为1, 2, 3,而 T ∈ [ 1 , 5 ] \mathcal{T} \in [1,5] T∈[1,5]。如果我们增加 T \mathcal{T} T,则分布会变得更软。
从图中可以看出,较软的概率图可能有助于知识蒸馏。此外,在一定范围内,性能是稳定的。如果 T \mathcal{T} T设置得太小,性能似乎会下降。在这种情况下,该方法仅关注有限的显著像素。我们在Cityscapes验证集上使用PSPNet 18时,在 T \mathcal{T} T=4和 α = 3 \alpha=3 α=3时取得了最佳性能。
4.4、语义分割
我们展示了所提出的通道蒸馏方法可以与其他先前的语义分割蒸馏方法相结合,即用于分割/密集预测的结构知识蒸馏(SKDS [24] 和 SKDD [25])以及类内特征变化蒸馏(IFVD [34]),并且适用于各种学生网络。
我们在logits图(Ours-logits)和特征图(Ours-feature)上都使用了所提出的通道蒸馏。同时,根据先前的方法[25,18],我们也包括了logits图上的像素级蒸馏(PI)和整体蒸馏(HO)。
我们首先在Cityscapes数据集上评估了我们方法的性能。使用不同编码器和解码器的各种学生网络来验证我们方法的有效性。编码器包括ResNet18(在ImageNet上预训练权重进行初始化,以及通道减半的ResNet18变体[13]),解码器包括PSPhead [48]和ASPPhead [6]。表5展示了在Cityscapes上的结果。Pascal VOC [10]和ADE20K [49]上的实验结果在补充材料中给出。
我们的方法在五个学生网络和三个基准测试中均优于SKD和IFVD,这进一步表明通道蒸馏在语义分割中是有效的。
对于与教师具有相同架构类型的学生,即 PSPNet-R 1 8 ∘ ( 0.5 ) \text{PSPNet-R} 18^{\circ}(0.5) PSPNet-R18∘(0.5), PSPNet-R 1 8 ∘ \text{PSPNet-R} 18^{\circ} PSPNet-R18∘ 和 PSPNet-R18 ⋆ \text{PSPNet-R18}^{\star} PSPNet-R18⋆,改进更为显著。对于与教师架构类型不同的学生,即 Deeplab-R 1 8 ∘ ( 0.5 ) \text{Deeplab-R} 18^{\circ}(0.5) Deeplab-R18∘(0.5) 和 Deeplab-R18 ⋆ \text{Deeplab-R18}^{\star} Deeplab-R18⋆,我们的方法与SKDS和IFVD相比也实现了一致的改进。因此,我们的方法能够很好地适用于不同的教师和学生网络。
紧凑模型容量的学生网络( PSPNet-R18 ∘ ( 0.5 ) \text{PSPNet-R18}^{\circ}(0.5) PSPNet-R18∘(0.5))显示出比容量更大的学生( PSPNet-R18 ⋆ \text{PSPNet-R18}^{\star} PSPNet-R18⋆)更差的蒸馏性能( 68.57 % 68.57\% 68.57% vs 75.90 % 75.90\% 75.90%)。这可能是因为小网络的能力与教师网络相比有限,无法充分吸收当前任务的知识。对于 PSPNet-R18 \text{PSPNet-R18} PSPNet-R18,使用在ImageNet上训练的权重进行初始化的学生获得了最好的蒸馏性能(从 70.09 % 70.09\% 70.09%提高到 75.90 % 75.90\% 75.90%),进一步证明了良好的初始化参数有助于蒸馏。因此,更好的学生会带来更好的蒸馏性能,但随着教师和学生网络之间的差距减小,这种改进变得不那么显著。
4.5、目标检测
我们也将我们的通道蒸馏方法应用于目标检测任务。实验在MS COCO2017 [23]上进行。
为了验证我们方法的有效性,我们使用了不同范式下的各种学生网络,即基于锚点的两阶段方法(Faster RCNN [28])、基于锚点的一阶段方法(RetinaNet [21])和无锚点方法(RepPoints [37])。为了进行公平的比较,我们使用了与[43]中相同的教师和相同的超参数进行实验。
唯一的改动是将特征对齐改为了我们的通道蒸馏。表6报告了实验结果。从表中可以看出,我们的方法在强大的基线学生网络上实现了一致的改进(大约提高了 3.4 % 3.4\% 3.4%的mAP)。与先前的最先进蒸馏方法[43]相比,我们简单的通道蒸馏表现得更好,尤其是在无锚点方法上。我们提高了RepPoints的性能 3.4 % 3.4\% 3.4%,而Zhang等人只提高了 2 % 2\% 2%。此外,我们可以看到所提出的蒸馏方法能更显著地提高 A P 75 AP_{75} AP75。
5、结论
在本文中,我们为密集预测任务提出了一种新颖的通道蒸馏方法。与先前的空间蒸馏方法不同,我们将每个通道的激活值归一化为概率图。然后,应用非对称KL散度来最小化教师网络和学生网络之间的差异。实验结果表明,所提出的蒸馏方法在四个公共基准数据集上,对于不同网络主干结构的语义分割和目标检测任务,均一致优于现有的最先进蒸馏方法。
此外,我们的消融实验证明了通道蒸馏的有效性和效率,并且它可以进一步补充空间蒸馏方法。我们希望所提出的简单而有效的蒸馏方法能够作为许多其他密集预测任务(包括实例分割、深度估计和全景分割)中有效训练紧凑网络的有力基线。
附录
A、在Pascal VOC和ADE20K上的结果
为了进一步证明所提出的通道分布蒸馏(CD)的有效性,我们仅在Pascal VOC和ADE20K的特征图上应用所提出的CD作为最终结果。实验结果分别在表7和表8中报告。我们使用了具有不同编码器和解码器的多个学生网络变体来验证我们方法的有效性。这里,编码器包括ResNet18和MobileNetV2,解码器包括PSPhead和ASPP-head。
Pascal VOC。我们在Pascal VOC数据集上评估了我们方法的性能。蒸馏结果列在表7中。我们提出的CD提高了无蒸馏的PSPNet-R18性能 3.83 % 3.83\% 3.83%,在SKDS和IFVD的基础上分别提升了 1.51 % 1.51\% 1.51%和 1.21 % 1.21\% 1.21%。在使用不同编码器和解码器的其他学生网络上,我们也取得了一致的改进。使用我们的方法,PSPNet-MBV2的增益为 3.55 % 3.55\% 3.55%,在SKDS和IFVD的基础上分别提升了 1.98 % 1.98\% 1.98%和 1.20 % 1.20\% 1.20%。对于Deeplab-R18,我们的CD将学生网络从 66.81 % 66.81\% 66.81%提升至 69.97 % 69.97\% 69.97%,在SKDS和IFVD的基础上分别提升了 1.84 % 1.84\% 1.84%和 1.55 % 1.55\% 1.55%。此外,使用我们的蒸馏方法,Deeplab-MBV2的性能从 50.80 % 50.80\% 50.80%提升至 54.62 % 54.62\% 54.62%,在SKDS和IFVD的基础上分别提升了 2.51 % 2.51\% 2.51%和 1.23 % 1.23\% 1.23%。
ADE20K。我们也在ADE20K数据集上评估了我们的方法,以进一步证明CD比其他结构知识蒸馏方法更有效。结果如表8所示。我们提出的CD将无蒸馏的PSPNetR18提升了 3.83 % 3.83\% 3.83%,并在多个方面分别超越了SKDS和IFVD 1.51 % 1.51\% 1.51%和 1.21 % 1.21\% 1.21%。对于具有不同编码器和解码器的其他学生网络,也始终实现了显著的性能提升。对于PSPNetMBV2,我们的方法取得了 27.97 % 27.97\% 27.97%的卓越性能,分别比学生网络、SKDS和IFVD提升了 4.82 % 4.82\% 4.82%、 3.18 % 3.18\% 3.18%和 2.64 % 2.64\% 2.64%。使用我们的CD,Deeplab-R18的增益为 2.48 % 2.48\% 2.48%,分别超越了SKDS和IFVD 1.85 % 1.85\% 1.85%和 0.84 % 0.84\% 0.84%。最后,使用我们的通道蒸馏,Deeplab-MBV2的性能从 24.98 % 24.98\% 24.98%提高到 29.18 % 29.18\% 29.18%,分别比SKDS和IFVD提升了 3.08 % 3.08\% 3.08%和 1.93 % 1.93\% 1.93%。
B、更多的可视化结果
我们在图6中列出了可视化结果,以直观地展示通道分布蒸馏方法(CD)优于空间蒸馏策略(注意力转移)。此外,为了评估所提出的通道分布蒸馏的有效性,我们在图7和图8中可视化了三种范式下学生网络的通道分布,即原始网络、通过注意力转移(AT)蒸馏和通过通道分布蒸馏分别蒸馏的网络。
官方结果
蒸馏结果
Validating runs\detect\train6\weights\best.pt...
Ultralytics YOLOv8.2.20 🚀 Python-3.11.5 torch-2.1.2 CUDA:0 (NVIDIA GeForce RTX 3090, 24575MiB)
YOLOv8n summary (fused): 168 layers, 3011888 parameters, 0 gradients, 8.1 GFLOPsClass Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:02<00:00, 7.24it/s]all 230 1412 0.889 0.76 0.876 0.563c17 230 131 0.933 0.952 0.975 0.758c5 230 68 0.952 0.838 0.952 0.739helicopter 230 43 0.836 0.814 0.842 0.477c130 230 85 0.921 0.828 0.925 0.612f16 230 57 0.859 0.749 0.823 0.49b2 230 2 1 0 0.995 0.201other 230 86 0.6 0.86 0.822 0.393b52 230 70 0.916 0.933 0.967 0.746kc10 230 62 0.968 0.966 0.98 0.77command 230 40 0.909 0.9 0.978 0.768f15 230 123 0.938 0.743 0.924 0.583kc135 230 91 0.801 0.842 0.912 0.603a10 230 27 0.675 0.296 0.616 0.22b1 230 20 1 0.833 0.923 0.441aew 230 25 0.92 0.92 0.971 0.753f22 230 17 0.621 0.77 0.692 0.472p3 230 105 0.995 0.962 0.993 0.784p8 230 1 0.769 1 0.995 0.497f35 230 32 0.897 0.547 0.827 0.373f18 230 125 0.972 0.992 0.991 0.768v22 230 41 0.926 0.909 0.957 0.601su-27 230 31 0.92 1 0.995 0.777il-38 230 27 0.864 0.926 0.95 0.654tu-134 230 1 1 0 0.0711 0.0497su-33 230 2 1 0 0.595 0.303an-70 230 2 0.838 1 0.995 0.721tu-22 230 98 0.969 0.939 0.986 0.653
Speed: 0.1ms preprocess, 1.4ms inference, 0.0ms loss, 1.2ms postprocess per image
Results saved to runs\detect\train6