Distilling Object Detectors with Fine-grained Feature Imitation(2019年)

摘要

最先进的基于CNN的识别模型通常在计算上禁止部署在低端设备上。解决这一限制的一种很有前途的高级方法是知识蒸馏,它让小学生模型模仿繁琐的教师模型的输出,以提高泛化能力。然而,相关方法主要关注简单的分类任务,而不考虑目标检测这样的复杂任务。我们证明将原始知识蒸馏应用于检测模型会获得较小的增益为了解决检测模型中知识蒸馏的挑战,我们提出了一种利用特征响应的跨位置差异的细粒度特征模仿方法我们的直觉是,探测器更关心局部近物体区域。因此,特征响应在近目标锚点位置上的差异揭示了教师模型如何泛化的重要信息。我们设计了一种新的机制来估计这些位置,并让学生模型在上面模仿教师以获得更好的表现。

介绍

对于模型量化来说,一种很有前途的端到端直接学习紧凑模型的高级方法是知识蒸馏。学生模型学习更强的教师网络的行为以获得增强的泛化能力。然而,先前关于知识蒸馏的工作大多致力于分类,很少考虑目标检测。一个检测模型可能只涉及几个类,用这些类可以从教师软化输出的类间相似性中提取出更少的知识。此外,除了分分类之外,检测还需要可靠的定位,基本的蒸馏不能用于提取定位知识。此外,前景和前景实例的极度不平衡也会导致边界框注释。我们发现仅仅增加蒸馏损失只会对学生产生轻微的促进作用。

与知识蒸馏类似,提示学习通过最小化教师和学生模型的全部高级特征的差异来改进学生模型。但我们发现,在检测模型上直接应用提示学习会损害性能。直觉是,检测器更关心与ground truth对象重叠的局部区域,而分类模型更关注全局上下文。因此,直接进行全特征模仿将不可避免地从未覆盖的区域引入大量噪声,尤其是对于背景实例压倒性且多样化的目标检测。

回想一下,在知识蒸馏中,不同类别的相对概率确实说明了教师模型是如何泛化的。类似地,由于检测器更关心局部对象区域,因此在对象附近的近锚位置上的特征响应的差异也传达了关于复杂检测模型如何检测目标实例的重要信息为了利用这种位置间的差异在目标检测器中知识蒸馏,我们开发了一种新的机制,利用ground truth边界盒和锚先验来有效地估计那些信息丰富的近目标锚位置,然后让学生模型在上面模仿老师,如图1所示。

我们将这种方法称为细粒度特征模仿。我们的方法有效地解决了上述挑战:

1)我们不像分类模型的基本知识蒸馏那样依赖于教师模型的软化输出,而是依赖于教师的高级特征响应的位置间差异。

2)分类和定位之前的细粒度特征模仿改进了这两个子任务。我们的方法有效地1提高了学生模型的分类和定位能力、

3)我们的方法避免了那些噪声较小、信息较少的背景区域,这会导致全特征模仿的性能下降。

为了验证我们的方法,我们首先在一种开发的轻型玩具探测器上进行了实验,该探测器承载了当前最先进的基于锚的探测模型的主要原理。将该方法应用于这种轻量级架构,与非模仿的模型相比,我们可以产出更小的模型。

相关工作

知识蒸馏

在开创性的工作之后,提出了各种知识蒸馏方法、提示学习探索了另一种蒸馏方式,其中来自教师模型的监督来自高层特征。[38]提出迫使学生在注意图指定的特征上模仿教师模型。[6]提出利用不同样本之间的关系,利用样本间的相似性来改进蒸馏。[18]将蒸馏形式化为一个分布匹配问题以优化学生模型。最近的一些工作探索了压缩检测模型的蒸馏方法。[5]尝试在检测头上同时添加全特征模仿和特定蒸馏损失,但我们发现全特征模仿会降低学生模型的性能,并且在进行蒸馏时如何处理区域建议与学生之间的不一致也不清楚。

模型加速

为了在不损失精度的前提下加速深度神经网络魔心,量化使用了低精度的模型参数表示。连接修剪或权值稀疏化修剪大型模型中的冗余连接。然而,这些方法需要特定的硬件或软件定制才能获得实际的加速。例如,权值剪枝需要稀疏计算的支持,量化支持低位操作。一些先前的研究建议进行通道级修剪。但当剪枝率较高时,这些方法不可避免地会对性能造成显著影响。一些研究对大层采用低秩近似。但实际的加速通常比理论值要小得多。

方法

在这项工作中,我们开发了一个简单实现的细粒度特征模仿方法,利用教师在近目标锚点位置上的特征响应的位置间差异,提取繁琐检测模型中的知识。我们的直觉是,近目标锚点位置上特征响应的差异揭示了大型检测器倾向于泛化的重要信息,可以从中提取学到的知识具体来说,我们提出了一种新的机制来估计那些锚点位置,这些锚点位置在靠近对象实例的地方形成细粒度的局部特征区域,并让学生模型模仿教师模型在这些区域上的高级特征响应来获得增强的性能

模仿区域估计

如图1所示,近目标锚点位置形成每个目标的局部特征区域。为了正式定义并研究局部特征区域,我们利用ground truth边界框和锚定先验来计算这些区域作为每个独立图像的掩模I,并通过阈值因子\psi来控制区域的大小。在下面的特征映射中,我们总是引入锚先验定义的最后一个特征。

具体如图2所示,对于每一个ground truth盒,我们计算其与所有锚点之间的IoU,形成W\cdot H\cdot K的IoU映射m。这里W和H表示特征图的宽度和高度,K表示K个预设anchor盒。然后我们找到最大的IoU值M = max(m),乘以阈值因子\psi,得到一个滤波器F = \psi \cdot M。对于F,我们对IoU进行过滤,保留那些大于F的位置,并将它们与OR操作结合,得到一个W \cdot H掩码。将ground truth盒与mask结合在一起,我们得到了最终的细粒度模仿maskI

\psi = 0时,生成的mask包括特征图上的所有位置,而\psi =1时不保留任何位置。我们可以通过改变\psi来得到不同的模仿掩码。在所有实验中,都使用\psi = 0.5。在消融实验中,我们显示提供了最佳的蒸馏性能。我们不使用固定的F值来过滤IoU map的原因是对象的大小通常变化的范围很大。固定阈值对于特定尺度和比例的物体会有偏差。

细粒度特征模仿

为了进行模仿,我们在相应的学生模型后增加一个全卷积自适应层然后计算学生与教师特征响应的距离度量,如图2所示。我们添加自适应层的原因有两个。

1)学生特征的通道数可能与教师模型不兼容。所增加的层可以将前者与后者对齐以计算距离度量。

2)我们发现,即使当学生与教师具有兼容的特征时,强迫学生近似教师特征直接导致与适应的对应对象相比的微小收益。

现在我们来介绍特征模仿的细节。定义s为学生模型的引导特征图,t为对应的教师特征图。对于宽度为W,高度为H的特征图上的每个近目标锚点位置(i,j)。我们训练学生模型最小化以下目标:

l =\sum _{c=1}^C (f_{adap}(s)_{ijc} - t_{ijc})^2

学习教师模型检测的相关知识。加上所有估计的锚点附近位置(模拟掩模I),蒸馏的目标是最小化:

L_{imitation} = \frac{1}{2N_p}\sum _{i=1}^W\sum _{j=1}^H\sum _{c=1}^C I_{ij}(f_{adap(s)_{ijc} - t_{ijc}})^2这里N_p = \sum _{i=1}^W \sum_{j=1}^H I_{ij}

其中I为模拟掩码,N_p为掩码中正样本的数量,为自适应函数,那么一个学生模型的整体训练损失为:

L = L_{gt} + \lambda L_{imitation}。式中L_{gt}为检测训练损失,\lambda为模仿损失权重平衡因子。

  • 37
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值