[2019CVPR]Distilling Object Detectors with Fine-grained Feature Imitation 论文笔记

标题

      • Method
        • 1.anchor选择
        • 2.特征蒸馏
      • 实验
      • 总结

一句话总结:针对anchor-based检测器进行特征蒸馏,并且只蒸馏GT和anchor之间IOU高的地方的特征,具体含义见论文可视化图。

Method

1.anchor选择

anchor分布为H×W×K,其中H和W表示生成anchor的特征图的宽高,K表示特征图一个点上anchor的个数。计算所有anchor与GT的IOU,得到一个H×W×K的IOU map,然后,常规想法是直接取个固定阈值然后保留IOU高于阈值的anchor,作者的做法是去IOU map中的最大值M,然后计算一个阈值F=φ×M,在anchor维度使用或操作结合K个anchors的IOU与F的大小,最终得到一个H×W的anchor mask。这样的方式比取固定IOU阈值更灵活一点,实验也证明效果略好。
在这里插入图片描述

2.特征蒸馏

为了进行特征蒸馏,在student网络后面接了一个卷积层来做adaptation layer,这样做一是为了特征维度对其,方便计算损失。二是作者发现即使纬度相同,加上这个adaptation layer也会提高网络的精度。

然后,对于teacher和student网络的特征图,计算选择的anchor附近的特征==(生成anchor的特征图的特征,neck特征,两阶段网络为RPN,一阶段为FPN)==的一个L2距离,c表示通道数,(i,j)表示anchor的位置,t和s分别表示teacher和student对于位置的特征。
在这里插入图片描述
对于所有选取的anchor而言,最小化的目标变成了下式,其中N表示上述中mask的值求和。
[2019CVPR]Distilling Object Detectors with Fine-grained Feature Imitation 论文笔记_第1张图片
总的损失包括常规的gt损失和上述的特征蒸馏损失:
在这里插入图片描述

实验

1.轻量级网络的试验。在KITTI上做的,作者仿照shufflenet自己设计了一个网络。指标用的mAP0.5,所以看起来涨点还不错。分别在×0.5和×0.25网络上涨了2.5和6.7个点。
[2019CVPR]Distilling Object Detectors with Fine-grained Feature Imitation 论文笔记_第2张图片
-F是用的hint learning,作者实验发现这种对整张特征图蒸馏的方法是不可行的,会导致降点,因为背景噪声太多了(但是后面很多论文都又说可以,只是效果不太好而已)。-G是直接将gt的框进行缩放并在特征图上学,效果也一般般,作者认为是忽略了也一些近目标位置的信息。-D是只用hinton的方法学习softmax分布,效果也不太行。将蒸softmax分布和本文提出的蒸特征的方法结合起来效果也不如只用蒸特征,原因未知。

2.大模型通道数减半作为学生模型,以及更浅的网络作为学生模型。效果如下,还是都有涨点
[2019CVPR]Distilling Object Detectors with Fine-grained Feature Imitation 论文笔记_第3张图片[2019CVPR]Distilling Object Detectors with Fine-grained Feature Imitation 论文笔记_第4张图片
3.作者在Resnet50 FPN上也做了实验,具体做法是在每层FPN上对mask之后的anchor的对应区域特征进行蒸馏。大概有2.9的点数提升,但是是AP0.5。

总结

用于anchor base检测器的蒸馏方法。很简单的思路,特征蒸馏,但是非全图特征,而是对GT与anchor的IOU大的那些对应位置的特征做蒸馏。实验做了很多。

你可能感兴趣的:(知识蒸馏,目标检测,深度学习,计算机视觉,人工智能)