极市导读
本文通过重新制定定位知识蒸馏过程,提出了一种新的定位蒸馏(LD)方法,可以有效地将定位知识从教师转移到学生。此外,本文还启发式地引入了有价值的定位区域的概念,可以帮助选择性地提取特定区域的语义和定位知识。结合这两个新组件,本文首次证明 logit 模仿可以胜过特征模仿,并且定位知识蒸馏比语义知识蒸馏对象检测器更重要和更有效。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
论文链接:https://arxiv.org/pdf/2102.12252.pdf
代码链接:https://github.com/HikariTJU/LD
MMDetection:https://github.com/open-mmlab/mmdetection/tree/master/configs/ld
方法概括:把用于分类head的KD(知识蒸馏),用于目标检测的定位head,即有了LD (Localization Distillation)。
做法:先把bbox的4个logits输出值,离散化成4n个logits输出值,之后与分类KD完全一致。
意义:LD使得logit mimicking首次战胜了Feature imitation。分类知识与定位知识的蒸馏应分而治之、因地制宜。
说起LD,就不得不说起bbox分布建模,它主要来源于GFocalV1 (NeurIPS 2020) 与Offset-bin (CVPR 2020)这两篇论文。
GFocalV1 :https://proceedings.neurips.cc/paper/2020/hash/f0bda020d2470f2e74990a07a607ebd9-Abstract.html
Offset-bin:https://openaccess.thecvf.com/content_CVPR_2020/html/Qiu_Offset_Bin_Classification_Network_for_Accurate_Object_Detection_CVPR_2020_paper.html
我们知道bbox的表示通常是4个数值,一种如FCOS中的点到上下左右四条边的距离 (tblr),还有一种是anchor-based检测器中所用的偏移量,即anchor box到GT box的映射 (encoded xywh).
GFocalV1针对tblr形式的bbox建模出了bbox分布,Offset-bin则是针对encoded xywh形式建模出了bbox分布,它们共同之处就在于尝试将bbox回归看成一个分类问题。并且这带来的好处是可以建模出bbox的定位模糊性。
大象的下边界与冲浪板的右边界都是模糊的
那么用n个概率值去描述一条边,可以显示出模型对一个位置的定位模糊估计,越尖锐的分布说明这个位置几乎没有模糊性(比如大象的上边界),越平坦的分布说明这个位置有很强的模糊性(大象的下边界)。当然不光是bbox分布的平坦度,形状上还可分为单峰型,双峰型,甚至多峰型。
Knowledge Distillation (KD)最早是针对图像分类而设计的。核心思想是:用一个预训练的大模型(teacher)去指导一个小模型(student)的学习。
网络模型输出n个logits , 经过一个带有温度 的softmax变换 ,便得到了概率分布 .
那么只要去最小化student的概率分布 与teacher的概率分布 的KL loss,就可以将大模型的知识迁移至小模型。这里温度 对图像分类任务是常见的选取,即软化分类知识。
看到这里,LD的idea已经不言自明,bbox的一条边是n个logits ,一个bbox就有4个 ,每个 作用上一个带有温度 的softmax函数,把定位知识软化一下,随后一样的KL loss,让student的bbox分布去拟合teacher的bbox分布。
为验证LD的有效性,我们先在检测器的positive location上进行,也就是哪里进行了bbox regression,哪里就进行LD。大模型teacher是一个已经训练了24 epochs的高精度检测器(比如ResNet-101),小模型student可以是ResNet-50。在COCO数据集上,我们只需要稍微调一调温度 就可以在GFocalV1的基础上提高1.0AP,特别是AP75的提升最为显著,说明LD确实显著改善了定位精度。
由以上可以看到,定位蒸馏LD与分类蒸馏KD从公式上来看是完全一致的,都是针对head的输出logits做知识传递,这为目标检测知识蒸馏提供了一个统一的logit mimicking框架。
以往许多工作指出了分类KD的蒸馏效率低下(涨点低),这主要有两个方面:
基于这两个原因,人们将视线转向了另一个很有前景的知识蒸馏方法,Feature imitation。该方法主要受到FitNet的启发,一言以概之,就是不光分类head上要做logit mimicking,中间隐藏层(特征图)也要让student去拟合teacher,通过最小化L2 loss来完成。
于是形成了如下的目标检测知识蒸馏框架:
其中分类head上是logit mimicking(分类KD),特征图上是Feature imitation (teacher与student特征图之间的L2 loss),定位head上是伪bbox regression,即把teacher预测框当成额外的回归目标。
Feature imitation在师生的特征图上施加监督,最常见的做法是先将student的特征图尺寸与teacher特征图对齐,之后再选择一些感兴趣的区域作为蒸馏区域,例如FitNet(ICLR 2015)在全图上蒸馏;Fine-Grained(CVPR 2019)在一些anchor box的location上蒸馏;还有DeFeat(CVPR 2021)在GT box内部用小loss weight,在GT box外部用大loss weight;亦或者是GI imitation(CVPR 2021)的动态蒸馏区域,但无论选择何种区域,最后都是在蒸馏区域上计算二者的L2 loss.
FitNet:https://arxiv.org/abs/1412.6550
Fine-Grained:https://openaccess.thecvf.com/content_CVPR_2019/html/Wang_Distilling_Object_Detectors_With_Fine-Grained_Feature_Imitation_CVPR_2019_paper.html
DeFeat:https://openaccess.thecvf.com/content/CVPR2021/html/Guo_Distilling_Object_Detectors_via_Decoupled_Features_CVPR_2021_paper.html
GI imitation:https://openaccess.thecvf.com/content/CVPR2021/html/Dai_General_Instance_Distillation_for_Object_Detection_CVPR_2021_paper.html
那么Feature imitation有什么好处呢?
在multi-task learning框架下,特征图相当于树根,下游的各个head相当于树的叶子。那么特征图显然包含了所有叶子所需要的知识。进行Feature imitation自然就会同时传递分类知识与定位知识,而分类KD却无法传递定位知识。
Feature imitation有什么弊端呢?
答案自然还是它会在蒸馏区域中的每个location上同时传递分类知识与定位知识。
前后一对比,乍看之下岂不矛盾?让我来解释一下。
分类知识与定位知识的分布是不同的。这一点在以往的工作中有提到,例如Sibling Head (CVPR 2020):https://openaccess.thecvf.com/content_CVPR_2020/html/Song_Revisiting_the_Sibling_Head_in_Object_Detector_CVPR_2020_paper。
两种知识的分布不同,自然就导致了并不是在一个location上同时传递分类知识与定位知识都有利。很有可能某些区域仅对分类知识传递有利,也有可能某些区域仅对定位知识传递有利。换言之,我们需要分而治之、因地制宜地传递知识。这显然就是Feature imitation无能为力的事情了,因为它只会传递混合知识。
于是我们利用multi-task learning天然地把知识解耦成不同类型,这就允许我们在一个区域中有选择性地进行知识蒸馏。为此,我们引入了一个有价值定位区域 VLR (Valuable Localization Region)的概念,来帮助我们进行分而治之的蒸馏。
与以往的Feature imitation方法不同,我们的蒸馏分为两个区域:
于是我们来探究一下在这两个区域上进行分类的KD与定位的LD会有什么效果。
这个表格是本文的一大精髓所在,有几个有趣的现象。
于是就得到了本文的logit mimicking策略,Main KD + Main LD + VLR LD
有了这个logit mimicking策略,我们可以与Feature imitation对比一下
这个实验首次展示了logit mimicking的巨大潜力,也说明了logit mimicking多年以来的蒸馏效率低下的原因是缺少有效的定位知识传递。当引入了LD后,弥补了这一缺陷,logit mimicking居然可以超过Feature imitation。
当然上表也展示了,最优的蒸馏策略依然是logit mimicking与Feature imitation都用上。只是可以注意到的是,在有了logit mimicking之后,各个Feature imitation的性能差异也不是很明显了,选择哪个蒸馏区域都差不了多少。
下图展示的是student与teacher的平均分类误差与定位误差。
可以看到一些代表性Feature imitation方法(如Fine-Grained,GI)确实可以同时降低分类误差与定位误差。在仅用上LD时,定位误差得到明显下降,但分类误差无法降低也是可以理解的。而在进一步用上了KD之后,两个误差都得到了明显下降。
下图则是在两个FPN层级上的定位误差可视化
2. VLR仅仅提供了分而治之蒸馏的初步解决方案,未来设计一种更优雅的区域选择机制,进行因地制宜地传递分类知识和定位知识或许是一个可供研究的方向。
3. LD的出现揭示了目标检测的分类知识与定位知识可以分开传递,这对其他领域(如实例分割)是否也存在第三种mask知识可供分别传递还有待研究。
有关LD更多的信息与insight,于3月末更新,敬请期待
公众号后台回复“数据集”获取50+深度学习数据集下载~
# CV技术社群邀请函 #
备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)
即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~