链接:2021 General Instance Distillation for Object Detection
知识蒸馏典型的知识形分三类:基于响应的知识、基于特征的知识、基于关系的知识
这篇论文是三种知识都用上了
理解算法主要分5步,下面一一解释
- step1:GISM是啥?
- step2:咋通过GISM进行特征知识截取的?
- step3:咋通过GISM计算关系知识?
- step4:咋算响应知识的?
- step5:真的好使么?
step1:GISM是啥?
论文 GISM 模块计算过程如图1,很简单直观。
就是用Teacher和students输出的置信度做减法,求出L1,这个L1的值就是图上所谓的GI Score,
根据置信度大小,选出最大GI的box,如果老师大就用老师的box,如果学生大就用学生的box,这个选出来的box组成的矩阵就是图上的 GI box
根据Score做NMS计算,得到的就是最终预测框,这就是 GISM 模块全部过程
所选的区域。我们使用IoU阈值为0.3来选择分散实例。此外,在每张图像中,只选择得分最高的前K个实例作为蒸馏的最终GI。
有了 GISM 模块,就根据这个 GISM 模块进行3种知识的计算
step2:咋通过GISM进行特征知识截取的? Feature-based Distillation
也很直观,如图2。
用GISM的结果去截取Teacher和student的特征图,ROI Align层用的是GISM选出的K个box,公式中ti,si就是特征图根据GISM中的GI box 截出的特征。是尺寸与t相同的矩阵,是适应函数,使得s的尺寸与t相同
那么特征loss就是这些GI box对应特征之间的L2差距,拢共K个,求一下均值
为啥要用特征知识?作者认为,大多数SOTA检测模型都引入了特征金字塔网络(FPN)[16],它可以显著提高多尺度检测的鲁棒性。因为FPN结合了这个功能在多个主干层中,我们直观地选择FPN进行蒸馏。
step3:咋通过GISM 计算关系知识? Relation-based Distillation
也很简单,对于老师模型来说,K个特征,两两之间取距离。学生同理。表示平滑的L1损失,学生与老师之间的L1距离。
step4:咋算响应知识的? Response-based Distillation
如图3,首先这部分的Mask是咋来的?
公式中代表的是head的ancher中与GI中的box匹配的(iou),匹配就输出1,不匹配就是0
这样就得到了一个和head输出形状相同的mask,靠这个mask选出的【预测输出】就是masked cls®。这时候再求老师和学生之间的差距,就是响应知识损失了
至此所有loss已经就位:
超参数 {K = 10, λ1 = 5 ×10−4, λ2 = 40, λ3 = 1, α = 0.1, β = 1}
step5:真的好使么?