本文主要是介绍CVPR2021 General Instance Distillation for Object Detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
动机
-
知识蒸馏是一种有效的模型压缩方法。这种方法可以使轻量级的学生模型从较大的教师模型中获取有效知识。
-
目标附近的特征区域有相当多的信息,这对于知识蒸馏是有用的。然而,不仅目标附近的特征区域,而且即使是来自背景区域的判别块也有意义的知识。
为了应对检测任务中前景和背景区域的不均衡,之前的蒸馏检测方法都需要精心设计正例与负例之间的比例,并且仅蒸馏与GT相关的区域可能会忽略背景中潜在的信息区域。然而,正是师生之间的信息鸿沟,引导模型选择有区别的补丁进行模仿。而且,虽然GT相关的领域几乎是信息丰富的,但极其困难和简单的实例可能是无用的,甚至来自背景的一些信息块也可以帮助学生学习教师的泛化。
-
之前的蒸馏检测方法忽略了实例间有价值的关系信息,都没有利用基于关系的知识进行蒸馏。然而,人们普遍认为,即使在一幅图像中,物体之间的关系也包含着大量的信息。
-
当前的检测蒸馏方法对不同检测框架的泛化能力较弱,不能同时在多个检测框架中很好地工作。
方法
提出了一种新的基于通用实例的蒸馏方法,即通用实例蒸馏(general instance distillation,GID),该方法不考虑区分negative和positive,可用于各种检测框架,尽可能有效地利用尽可能多的知识。本文的方法设计了一种通用实例选择模块(General Instance Selection Module,GISM),该模块利用教师模型和学生模型的预测来选择要蒸馏的关键实例。此外,为了更好地利用教师模型提供的信息,还提取并利用了基于特征,基于关系和基于响应的知识进行蒸馏。整个蒸馏网络框架主要由三个部分构成:GIs Feature Loss、GIs Relation Loss、GIs Response Loss。
GISM:首先量化教师模型预测实例和学生模型预测实例的差异,然后选择可区分的实例进行蒸馏,因此本文提出了两个指标评估两个模型预测实例的差异:GI Score 和GI Box。这两个参数都是在每个训练步骤中动态计算的。本文将分类得分的L1距离计算为GI Score,选择得分更高的框作为GI box。下图说明了生成GI(通用实例)的过程:
1、教师模型和学生模型预测图片中实例的Class Score 和 Regression Box
2、根据两个模型预测结果计算实例的差异:GI Score(L1距离) 和GI Box(得分高的框)
3、GI Score和GI Box经过NMS反复选择具有最高GI分数的实例,然后删除与所选区域具有高度重叠的所有GI分数较低的实例。
提出的蒸馏方法主要由两部分组成:(1)首先选择的GIs是通过ROI对齐来裁剪学生和教师主干网络中的特征。然后提取基于特征和基于关系的知识进行蒸馏。(2)选择的GIs 首先通过GIs分配生成一个mask。然后利用基于响应的知识,蒸馏mask的分类和回归头部。如下图所示。
基于特征的蒸馏:根据GISM选择的每个GI Box的大小,从匹配的FPN层裁剪特征以进行蒸馏,并且采用ROI Align算法将提取的GI特征调整为相同大小,最后执行蒸馏,对每个目标进行同等处理。
基于相关性的蒸馏:通过GISM选择的信息丰富的通用实例(GI),能够充分利用判别实例之间的相关性,利用GI之间的相关信息来从老师到学生中提取知识。仅执行一对一的特征提炼当然不足以引入更多的知识。因此,为了挖掘GI背后的有价值的关系知识,进一步引入了基于关系的知识以进行提炼。在这里,使用欧式距离来度量实例的相关性,并使用L1距离来传递知识。
基于响应的蒸馏:知识蒸馏的性能提高主要归功于教师模型中基于响应的知识的正则化。但是,对检测头的整个输出进行蒸馏会影响学生模型的性能。这可能是由于检测任务的正负样本不平衡以及过多负样本引入的噪声导致。因此,本文基于选定的GI为分类分支和回归分支设计了 distillation mask,选定的GI首先通过GI分配生成mask。然后,将被屏蔽的分类和回归头进行提取,以利用基于响应的知识。
实验细节
为了验证该方法的有效性和鲁棒性,在不同的检测框架的主干网络上进行了实验,并用COCO和Pascal的VOC数据集进行了少量类的检测。对于Pascal VOC数据集,选择了从VOC 2007中拆分出来的5K trainval图像和从VOC 2012中拆分出来的16K trainval图像进行训练,并选择了VOC 2007中拆分出来的5K测试图像进行测试。而对于COCO,选择从默认的训练集中拆分出来的120K训练图像进行训练和从默认的测试集中拆分出来的5K验证图像进行测试。用平均精度(AP)评价了所有的蒸馏性能。
通过对每一个参数的初始损失进行诊断,并确保所有的损失都保持在同一范围内。对所有的参数都采用了超参数{K = 10, λ1 = 5 ×10−4, λ2 = 40, λ3 = 1, α = 0.1, β = 1}。除非指定情况,对于蒸馏过程,使用2X learning schedule,在COCO数据集上训练24个epochs(180000次迭代),在VOC数据集上训练17.4个epochs(18000次迭代)。
在MSCOCO和PASCAL VOC数据集上验证了本文提出的方法的有效性,包括一阶段、两阶段和anchor-free方法,实现了最先进的性能。大量的实验结果表明,学生模型在各种检测框架下都取得了显著的AP改进,甚至优于教师模型。具体来说,在COCO数据集上,ResNet-50的RetinaNet在mAP和GID中达到39.1%,比基线的36.2%高出2.9%,甚至比ResNet-101的教师模型(AP为38.1%)要好。
结论
1、定义通用实例(general instance,GI)作为蒸馏目标,可以有效提高检测模型的蒸馏效果。
2、在GI的基础上,首先引入基于关系的知识对检测任务进行提炼,并将其与基于响应和基于特征的知识相结合,使学生超越教师。
3、新方法对各种检测框架具有强大的泛化能力。基于学生和教师模型的输出计算GIS,而不依赖于特定检测器的某些模块或特定检测框架的某些关键特性,如anchor。
这篇关于CVPR2021 General Instance Distillation for Object Detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!