专栏名称: 极市平台
极市平台是由深圳极视角推出的专业的视觉算法开发与分发平台,为视觉开发者提供多领域实景训练数据库等开发工具和规模化销售渠道。本公众号将会分享视觉相关的技术资讯,行业动态,在线分享信息,线下活动等。 网站: http://cvmart.net/
目录
相关文章推荐
求是网  ·  更好发挥民间外交主渠道作用 ·  昨天  
CHINADAILY  ·  Sports丨Family Thais ... ·  昨天  
求是网  ·  正确认识并妥善处理城乡关系 ·  2 天前  
51好读  ›  专栏  ›  极市平台

CVPR-2024|SDD: 尺度解耦蒸馏

极市平台  · 公众号  ·  · 2024-04-23 22:00

正文

↑ 点击 蓝字 关注极市平台
作者丨 韦仕才@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/685905353
编辑丨极市平台

极市导读

如何在logit distillation中让学生获取更加accurate而不是ambiguous的知识。不仅仅是teacher能够准确分类的样本,即使是teacher不能准确分类的样本,student能否也能获得一些有益的信息。于是,作者提出了Scaled Decoupled Distillation。 >> 加入极市CV技术交流群,走在计算机视觉的最前沿

今天介绍一篇我们被CVPR2024录用的文章,Scale Decoupled Distillation (尺度解耦蒸馏)

paper: https://arxiv.org/pdf/2403.13512.pdf

code: https://github.com/shicaiwei123/SDD-CVPR2024

Motivation

Logit Distillation 因为其高效性和便捷性,在近两年又逐渐回到了大家的眼中,SSKD 引入自监督来增强logit output的信息,DKD,NKD 对logit output中target-class和nontarget-class信息解耦,动态调整不同信息的权重来改善蒸馏效果。但是所有的方法都局限于在利用最后的全局的 logit output,但是我们发现全局的logit output或许不是一个很好的教师知识的“载体”。因为 实际场景中不同类的图像信息并不是完全的独立关系而是相互包含的。

  • 首先 类别本身定义的时候就是属于相似的类 ,比如橘猫和蓝白猫,二者都属于猫的大类,有着相似的形态。
  • 其次 同张图像也不一定就只包含了目标类信息 ,比如一张猫的图像里面可能还会有狗存在。

像是这些情况,不同类的语义信息是混合或相似的,最后的全局的logit output的knowledge通常也会是混合,会导致teacher和student的误判。也就是纯利用这种模糊的全局的logit output的话,teacher自己都可能都没法分清楚,又怎么能教会student呢?具体的一个例子如下图所示:

预训练的ResNet34模型在ImageNet上的分类结果

我们可视化了ImageNet中class 6 (stingray) 的所有的测试样本 在预训练的ResNet34在的预测结果。如左图所示,绝大部分是正确的,但是会有一些错误的结果。错误最多的是class 5,它对应的numbfish,和stingray都属于fish,右边的图也可以看出,二者外形是非常相似的。其次还有类似于一些右图第二列的错误样本,因为包含了潜水员,被错误分类成了第983类的scuba diver。

这些现象引导我们思考一个, 如何在logit distillation中让学生获取更加 accurate 而不是ambiguous的知识。 不仅仅是teacher能够准确分类的样本, 即使是teacher不能准确分类的样本,student 能否也能获得一些有益的信息 。于是,我们提出了我们的Scaled Decoupled Distillation。

Scaled Decoupled Distillation

首先是方法的框图。总的来说就是在spatial-level做了logit knowledge知识的解耦,然后将解耦的知识分为一致和互补两类,控制他们的权重来引导student学习。值得一提的是,SDD和已有的logit distillation方法是独立的,可以和它们都结合起来,并且带来效果的提升。接下来我将更详细的介绍idea的思考过程。

接下来,我将逐一分析Scaled Decoupled Distillation的设计思路。

传统的logit distillation中,logit output的知识是混合模糊的原因就是,在最后来自于图像不同的region的信息被 avgpooling 聚合到了一起。就是将最后BXCXHXW的 feature map,转变成 BXC的feature vector,对应于不同输入区域的空间特征就被混合了。那么为什么需要这一步呢?我把H*W个BXC 取出来单独分类不行吗?在分类任务中,确实不行,因为我分类器必须要得出一个结果出来,都分类了,我最后要把图像标成那个结果呢?

但是,我们现在是在做蒸馏哦!!!,蒸馏的teacher的指导可以是多个的,只要student也有对应的接受相应知识的接口就可以,也就是在指导学生的时候,我可以不用全局的logit output而是用这些局部区域对应的特征计算得到的logit output。局部信息通常会包含更多细节,同时几乎不会在一个局部区域耦合多个类别的信息,所以通过获取多个local region的logit output来进行知识蒸馏,就可以unambiguous的信息传递给student。所以,很自然的Scale Decoupling的思想就出来了。

具体实现的时候,借鉴空间池化的思想,我们的解耦是在feature map上进行的,相比于直接在输入空间进行解耦,可以避免多次前向传播的计算量。解耦后我们将多个特征向量在batch维度级联起来得到 B*H*WXC个长度为C的特征向量,同时输入到全连接层中,避免利用for循环来求多个特征的响应,通过GPU的加速,整个SDD几乎不会引入额外的计算开销。

因为分类器是固定的,分类器权重W的每一列其实就代表了对应类的类中心,在分类的时候,每个样本的特征向量和所有类中心求一个相似度,相似度最高的类中心对应的类就是这个样本分类结果。现在将logit output在spatial-level做了解耦之后,即使是teacher利用全局 logit output预测错误的样本,student也能从local region中得到正确的特征向量,而这个特征向量在分类器中就能和正确的类中心对应上,从而正确分类,并且将对应的logit konwledge传递给学生。因此,可以从教师分类错误的样本中学习到知识。

进一步的,除了H*W个BXC,我们还可以考虑多尺度的情况,不同区域尺度的可能又会包含不同的信息,所以引入了尺度控制参数M来控制蒸馏中的考虑的尺度情况。

最后,除了更加准确的local logit knowledge之外,我们还可以从另一个角度来看global和local的预测。根据类别进一步将解耦的logit输出划分为一致和互补的项。首先global和local的预测是一致的情况,local knowledge可以看做是global knowledge的多尺度补充。预测不一致的时候,一方面global是错的,local是对的,可以传递正确的知识,另一方面,global是对的,local是错的,说明这个样本有模糊性,错误的预测传递给student,保留样本模糊性,避免student对这类样本的过拟合。

试验结果

在CIFAR100,ImageNet上,对已有的KD, DKD, NKD,加上Scale Distillation之后,都可以带来效果的提升

在CIFAR100上的试验
在ImageNet的试验

最后,为了证明,SDD解决传统global logit distillation 知识混淆的问题,我们在细粒度分类的数据集CUB200上做了试验。这是一个包含了200类不同鸟类的数据集。

在CUB200的试验

可以看到,SDD对于所有的已有的logit distillation的方法,带来的提升是巨大的。证明了SDD处理模糊样本的蒸馏的能力。

同时,我们还做了一些可视化。

首先是学生和教师的global logit output的相似度的对比

已有的DKD, 相比于KD而言,相似度会更高,说明DKD可以帮助student更好的模仿teacher,但是在这里SD-KD和KD 两类蒸馏方法的相似度是类似的,说明SD-KD性能的增益并不是来自于类似DKD一样的让student更好的模仿teacher。那么来自那里呢?

我们进一步可视化了一些KD训练时候student不能准确分类,但是SD-KD训练时候student能够准确分类的样本

可以看到,正是一些较为类别上较为模糊的样本,再次进一步证明了SDD 帮助student 增强对细粒度样本,模糊样本的鉴别能力。

公众号后台回复“ 数据集 ”获取100+深度学习各方向资源整理

极市干货







请到「今天看啥」查看全文