Distilling Object Detectors with Fine-grained Feature Imitation论文解读

论文链接

1.简介

对于以往应用于知识蒸馏的目标检测存在两种方法。第一种来自于论文FitNets: Hints for Thin Deep Nets,是一种基于特征模仿的方法,单纯基于特征模仿的方法,论文中表述为Hint learning的方法会导致性能下降,因为检测模型不同于分类模型,检测模型的检测器更关注实际目标所覆盖的局部区域,而分类模型更专注于全局的纹理。因此,使用特征模仿的方法会导致引入检测模型原本不需关注区域的噪声,从而导致检测性能下降。
整体框架如图1所示:
在这里插入图片描述
对于上图1,图中红框和绿框都是预先设定的锚框,红框与标签框有更大的重合度,而绿框则代表附近的目标样本。目标锚框位置附近特征响应的差异代表着教师网络的泛化性能。比如教师网络在互相交叠目标上以及在单个目标上面的响应反应了其如何分离和检测这些拥挤的实例。该论文的方法就是首先去定位这些拥有复杂知识的区域,然后让学生模型在这些区域去模仿教师网络的高级特征。
总结来说,主要贡献有三点:
1)不依赖于教师网络的输出的软标签,而是采用教师高级特征中内部定位的差异。
2)在分类及定位之前进行精细的特征模仿
3)避免了整体特征学习所带来的对背景噪声信息的学习导致的性能下降。

2.方法

整体框架图:
在这里插入图片描述
如上图2所示,学生网络通过真实标签和目标anchor附近教师的特征响应进行训练。所设计的特征适应层(feature adaption layer)让学生所引导的特征与教师进行匹配。为了区分这些带信息的位置,我们迭代的计算每一个gtbox和anchor框的IOU map,通过滤除和合并,得到最后生成的模仿掩膜。

2.1 模仿区域的估计

正如图1所示,目标anchor位置附近为每一个目标形成了局部特征区域。对于每一幅图,我们采用gtbox和预先设定的anchor去计算这些区域并形成mask I,并通过参数 ϕ \phi ϕ来控制区域的尺寸。
如图2所示,对于每一个gt框,我们计算其与所有anchor的IOU,其构成了 W × H × K W \times H \times K W×H×K IOU图m。其中,W和H代表特征图的宽和高,K代表预先设定的锚框数量。然后我们找到具有最大IOU值M=max(m),其乘上阈值因子 ϕ \phi ϕ得到最后的滤波阈值 F = ϕ ∗ M F=\phi * M F=ϕM。对于大于F的IOU图,对其进行或操作得到 W ∗ H W*H WH大小的掩膜。
此时分几种情况:
ϕ = 0 \phi = 0 ϕ=0的时候,生成的掩膜涵盖特征图的所有位置
ϕ = 1 \phi = 1 ϕ=1的时候,生成的掩膜则不包含模仿区域
在试验中,使用 ϕ = 0.5 \phi=0.5 ϕ=0.5可以得到最好的蒸馏效果。

2.2 细粒度特征模仿

图2所示的全卷积适应层(full convolution adaption layer)应用于计算学生和老师特征响应的距离之前。其主要原因有两个:(1)学生的特征通道数量可能跟教师模型的不兼容,使用全卷积适应层可以让他们在进行距离计算的时候更加兼容。(2)即使学生特征通道与教师模型特征通道数量相等,强制学生模型与教师模型进行近似也没办法得到很好的效果。
如公式(1)所示,s代表学生模型所引导的特征,t代表对应教师的特征图。对于长宽分别为W和H的特征图,锚框附近的位置(i,j)可以通过loss进行最小化学生与教师之间的距离:
l = ∑ c = 1 C ( f a d a p ( s ) i j c − t i j s ) 2 l=\sum\limits_{c=1}^{C}(f_{adap}(s)_{ijc}-t_{ijs})^2 l=c=1C(fadap(s)ijctijs)2 (1)
对于所有特征通道的所有模仿区域(即2.1小节中计算的模仿掩膜I),蒸馏的loss定义为公式(2):
L i m i t a t i o n = 1 2 N p ∑ i = 1 W ∑ j = 1 H ∑ c = 1 C I i j ( f a d a p ( s ) i j c − t i j s ) 2 L_{imitation}=\frac{1}{2N_p}\sum\limits_{i=1}^{W}\sum\limits_{j=1}^{H}\sum\limits_{c=1}^{C}I_{ij}(f_{adap}(s)_{ijc}-t_{ijs})^2 Limitation=2Np1i=1Wj=1Hc=1CIij(fadap(s)ijctijs)2
其中, N p = ∑ i = 1 W ∑ j = 1 H I i j N_{p}=\sum\limits_{i=1}^{W}\sum\limits_{j=1}^{H}I_{ij} Np=i=1Wj=1HIij (2)
因此便可以定义学生模型的loss为公式(3):
L = L g t + λ L i m i t a t i o n L=L_{gt}+ \lambda L_{imitation} L=Lgt+λLimitation (3)
其中, L g t L_{gt} Lgt为检测头训练的loss, λ \lambda λ为平衡参数。

神经网络中的知识进行提取,是一种将模型的信息转化为更为简洁和易于理解形式的过程。 神经网络是一种由许多神经元组成的复杂计算模型,它们通过学习和调整权重来解决各种问题。然而,神经网络通常具有大量的参数和复杂的结构,这使得它们难以解释和应用到其他领域。因此,我们需要一种方法来提取和总结神经网络中的知识,以便更好地理解和应用这些模型。 在进行神经网络知识提取时,有几种常见的方法。一种常见的方法是使用可视化技术,如热力图、激活图和网络结构图等,来可视化网络中不同层的活动模式。这些可视化技术能够帮助我们发现网络中的模式和特征,并从中推断出网络的知识。 另一种方法是使用特征提取技术,如卷积神经网络(CNN)的滤波器、自动编码器的隐藏层和循环神经网络(RNN)的隐状态等,来提取网络学习到的重要特征。这些重要特征可以帮助我们更好地理解网络学习到的信息,并将其应用到其他问题中。 此外,还有一种被称为知识蒸馏的技术,它通过训练一个较小的模型来提取大型模型中的知识。知识蒸馏通过引入目标函数和额外的训练策略,使小模型能够学习到大模型中的重要知识,并在不损失太多性能的情况下将其应用到实际问题中。 总而言之,提取神经网络中的知识是一项重要任务,它能够帮助我们更好地理解和应用这些复杂的模型。通过可视化、特征提取和知识蒸馏等方法,我们能够从神经网络中提取出有用的信息,并将其应用到其他领域或解决其他问题中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值