文章链接:https://arxiv.org/abs/2205.01529
代码链接:https://github.com/yzd-v/MGD
知识蒸馏主要可以分为logit蒸馏和feature蒸馏。其中feature蒸馏具有更好的拓展性,已经在很多视觉任务中得到了应用。但由于不同任务的模型结构差异,许多feature蒸馏方法是针对某个特定任务设计的。
之前的知识蒸馏方法着力于使学生去模仿更强的教师的特征,以使学生特征具有更强的表征能力。我们认为提升学生的表征能力并不一定需要通过直接模仿教师实现。从这点出发,我们把模仿任务修改成了生成任务:让学生凭借自己较弱的特征去生成教师较强的特征。在蒸馏过程中,我们对学生特征进行了随机mask,强制学生仅用自己的部分特征去生成教师的所有特征,以提升学生的表征能力。
为了证明MGD并不是通过模仿教师来提升学生,我们对学生和教师的特征图进行了可视化。可以看到,蒸馏前的学生与教师的注意力相差很大。在使用FGD蒸馏(模仿教师)后,学生的注意力和教师变得很接近,表现也得到了较大的提升。但当使用MGD蒸馏后,学生与教师差异很大,学生对于背景的响应大幅减小,对于目标的响应得到了增强,学生的最终表现也好于FGD蒸馏。
MGD是在feature层面的蒸馏,可以很方便地被应用到不同任务,如分类,检测与语义分割。
我们首先在图像分类任务上进行实验,在pixel层面进行随机mask,学生模型在ImageNet上获得了有效的提升。并且可以和logit蒸馏进行叠加,进一步提升学生模型。
对于分类任务而言,常常会对特征进行pixel层面的池化,模型对于channel维度更加敏感。所以我们还在channel维度进行了随机mask,学生模型可以获得更大的提升,在feature蒸馏方法中实现了sota。
我们也将MGD应用到了目标检测,实例分割与语义分割任务上,分别在COCO和CityScapes进行实验,学生模型均获得了大幅的提升。
为了进一步证明MGD通过生成的方法提升学生的表征能力,我们在分类任务上与直接模仿教师的方法进行了对比。此处蒸馏使用直接训练得到的学生模型作为老师,可以看到,即便是学生自己作为老师,MGD也能为学生带来有效的提升,而直接模仿教师对于学生的提升非常小。
我们已将代码开源:https://github.com/yzd-v/MGD
开源代码中放了蒸馏的学生模型和训练log。三种任务的代码均基于MMLab的工具实现,易于复现,MGD仅有两个超参,方便自由组合学生与教师进行蒸馏。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/jacke121/article/details/125776046
内容来源于网络,如有侵权,请联系作者删除!