NIPS-2017
伴随着CNN 的发展,object detection 的精度有了极大的提升,然而要落地应用,实时性仍是个考验!
知识蒸馏,Knowledge Distillation:a shallow or compressed model trained
to mimic the behavior of a deeper or more complex model can recover some or all of the accuracy drop.(更多应用可参考下面三篇文章)
【Distilling】《Distilling the Knowledge in a Neural Network》(arXiv-2015, In NIPS Deep Learning Workshop, 2014)
【Mimic】《Mimicking Very Efficient Network for Object Detection》
【Very Tiny】《Quantization Mimic: Towards Very Tiny CNN for Object Detection》(ECCV-2018)
虽然能在保留精度的同时,能压缩模型,提升速度,但只在分类任务上得到了印证,在更复杂的 object detection 上还有待探索!
想要把 Knowledge Distillation 应用到 object detection 上,相比于 classification 任务,有如下问题和挑战:
最后一个挑战没看懂(可能没有看用知识蒸馏迁移不同领域任务的论文,get 不到作者的点)
作者采用的 Faster R-CNN framework,从主干网络,RPN,RCN(头部)三个部分,进行了知识蒸馏!
公式如下:
下面来详细看看各个部分的公式细节
老师网络的预测结果 P t P_t Pt 可以表示如下
其中, Z t Z_t Zt 是老师网络的 logits, T T T 是温度(细节介绍可以参考 【Distilling】《Distilling the Knowledge in a Neural Network》(arXiv-2015, In NIPS Deep Learning Workshop, 2014))
同样,学生网络的输出 P s P_s Ps 也可以表示成如下形式
在分类任务中,分类错误只会来自于 foreground categories,而目标检测任务中的分类子任务,background and foreground 的错误 can dominate the error,foreground 的误分概率比较低,作者通过增大背景类的权重来处理这个问题,形式如下,
多加了一个 w c w_c wc, w 0 = 1.5 w_0 = 1.5 w0=1.5 for the background class and w i = 1 w_i = 1 wi=1 for all the others(注意这里 P t Pt Pt 不是 ground truth 的 one-hot 编码,所有交叉熵中加权重是有效的)
作者讨论下温度 T T T 的问题,我们知道 T T T 越大,会缩小各类概率分布的差距,参考 【Distilling】《Distilling the Knowledge in a Neural Network》(arXiv-2015, In NIPS Deep Learning Workshop, 2014)。这在小任务中(such as classification on small datasets like MNIST)非常适用!
缺点是,也会增大噪声的分布,不利于学习,不适用于大任务,例如 classification on larger datasets 或者 object detection!
作者实验中把 T T T 设置为了 1
基于以上两点,我们不能直接学 teacher network 的回归值(第二点,嗯……)!而把损失设计成如下形式:
如果学生网络学出来的没有老师网络好,才会有惩罚!也就是达到老师的要求就不强求了! L b L_b Lb 不局限于是 L2 Loss 的形式,L1 或者 smooth L1 都行!!!
上述论文中证明,using the intermediate representation of the teacher as hint can help the training process and improve the final performance of the student.
L H i n t L_{Hint} LHint 是学主干的监督信息损失,形式如下
V , Z V, Z V,Z分别是来自老师和学生网路的 feature vectors,必须 h,w,channels 相同,有时候需要加 adaption layer(full connection 或者 1 ∗ 1 1*1 1∗1 convolution) 来使得 Z Z Z 和 V V V 维度一模一样!
作者发现,即使 V , Z V, Z V,Z dimension 一样,加了 adaption layer 效果会更好,adaption layer 也可以用在不同的模型之间,例如 VGG16 and AlexNet !
Teacher 列中 − - − 表示,teacher 和 student 是同网络,可以看出,大网络作为 teacher 能带来更多的提升
这个表是蒸馏分辨率(downsampling the input size quadratically reduces convolutional resources and speeds up computation.)
老师网络 688,学生网络 344!精度相当,速度接近 x2
VGG16 为 Teacher,Tucker 为 student,在 PASCAL 和 KITTI 上评估!对比了不同的蒸馏方式,可以看出,作者设计的 teacher bounded regression loss 比设计成 regression loss 形式好, weighted cross entropy loss 比 cross entropy loss 好,adaptation layers for hint learning 比没有 adaptation layers 的好!
Distillation improves generalization
(‘Car’ shares more common visual characteristics with ‘Truck’ than with ’Person’)
Hint helps both learning and generalization
目标检测任务还路漫漫,It seems the learning algorithm is suffering from the saddle point problem. the hint may provide an effective guidance to avoid the problem by directly having a guidance at an intermediate layer.(避免陷入局部最优解???)