Bridging Cross-task Protocol Inconsistency for Distillationin Dense Object Detection

总结

该文章提出二元分类蒸馏损失以改进传统的把分类蒸馏直接放入目标检测器中的分类中使用。同时提出了基于IoU的定位蒸馏方法

摘要

常用的基于softmax的蒸馏忽略了单个类别的绝对分类分数。因此,蒸馏损失的最优并不一定决定密集目标检测器的最优学生分类分数。这种跨任务协议的不一致性至关重要,尤其是对于密集目标检测器,因为前景类别极不平衡。为了解决蒸馏和分类之间的协议差异问题,我们提出了一种新的蒸馏方法,该方法具有跨任务一致性协议,适用于密集目标检测。对于分类蒸馏,我们通过将教师和学生模型中的分类logit映射公式化为多个二进制分类映射,并对每个映射应用二进制分类蒸馏损失,来解决跨任务协议的不一致性问题。对于定位蒸馏,我们设计了一种基于IoU的定位蒸馏损失,该损失不受特定网络结构的影响,并且可以与现有的定位蒸馏损失进行比较。

介绍

知识蒸馏方法大致可以分为两类:基于特征的蒸馏方法和基于logit的蒸馏方法。在目标检测中,由于原始的基于logit的蒸馏技术的边际性能增益,现有的知识蒸馏方法主要集中在基于特征的蒸馏上。然而,值得探索基于logit的方法,因为它们通常容易使用,并且与基于特征的方法结合时有可能进一步提高性能。LD是一种具有代表性的基于logit的蒸馏技术,它将边界框转换为概率分布,以促进定位蒸馏。然而,密集目标检测器中的分类蒸馏仍然是一个挑战

在这项工作中,我们进一步研究了这个问题。图1(a)表明,在密集map上预测分类分数时,密集对象检测面临严重的前景-背景不平衡问题。因此,密集目标检测器通常使用Sigmoid协议将分类logits转换为分类分数,这导致了位置感知的样本间差异:更接近正样本区域的样本在所有类别中生成更高的分类分数总和,表明样本间差异。

然而,常见的分类蒸馏方法直接使用Softmax协议从图像分类将分类Logits转换为分类分数。Softmax协议对分类分数进行归一化,忽略单个类别的绝对分类分数并消除分类分数的样本间差异特征。此外,在蒸馏中,每个类别的分类分数都是类间依赖关系联合优化的,而在密集目标检测中,它们是在没有这些依赖关系的情况下单独优化的。这些差异导致了跨任务协议不一致问题,如图1(b)所示:当教师分数等于Softmax后的学生分数时,分类蒸馏损失为0,表明学生分数在蒸馏损失中达到了最优解。然而,在Sigmoid之后,学生分数仍然与教师的分数不同,显示出较低的分数总和和不正留的类间关系。

除了分类,定位是目标检测任务的另一个关键方面。尽管LD中的定位蒸馏损失已经证明是有效的,但它需要使用离散位置概率预测头,如GFL,以准确预测每个样本的定位概率分布。不幸的是,目前的目标检测通常使用连续盒偏移预测头,这意味着LD的使用将需要教师模型的特定训练来结合离散位置概率预测头。这种约束限制了LD的通用性。

为了解决上述问题,本文提出了两种新的蒸馏损失,二元分类蒸馏损失和基于IoU的定位蒸馏损失专门用于密集目标检测器中的分类和定位。对于分类,我们将跨任务不一致协议转换为跨任务一致协议。具体来说,我们将密集目标检测器中使用的分类logit映射为K(即类别数量)进制分类映射。然后,我们使用Sigmoid协议来获取分数,并应用二进制交叉熵损失来提取教师到学生模型中的每个二进制分类图,有效地解决了跨任务协议不一致的问题。对于定位,我们将特殊结构相关的定位蒸馏损失转化为特殊结构无关的定位蒸馏损失。具体而言,我们直接计算教师和学生模型生成的预测边界框之间的IoU,并使用IoU损失来最小化IoU值和1之间的差(即最大IoU)

2、方法

2.1 概述

密集目标检测可以表示为特征提取f(.)和检测头h(.)的组合。给定输入图像I,检测器首先提取特征F=f(I),然后生成最终预测P=h(F)。预测P通常包括分类logit l \in R^{n \times K}的定位偏移o \in R^{n \times 4},其中n是密集目标检测中的锚或点的数量,K是前景类别的数量。在现有的密集目标检测的知识蒸馏中,知识从冻结的大型教师检测器T_{det}转移到小型学生检测器S_{det}。对于基于特征的方法,蒸馏损失被定义为L_{dis} = loss(F_t,F_s),其中F_tF_s分别表示T_{det}S_{det}的特征。对于基于logit的方法,蒸馏损失定义为L_{dis} = loss(P_t,P_s),其中P_tP_s分别表示T_{det}S_{det}的预测,而损失表示蒸馏损失函数。

在这项工作中,我们提出了两种为密集目标检测器中的分类和定位量身定制的蒸馏损失,如图2所示。

我们观察到密集对象检测和分类蒸馏损失之间的跨任务协议不一致问题,这阻碍了分类蒸馏在密集对象检测中的有效性。为了解决这个问题,我们引入了一种新的二元分类蒸馏损失,它将不一致的跨任务协议蒸馏转换为一致的跨任务协议蒸馏。此外,我们发现现有的定位蒸馏方法依赖于离散位置概率预测头,如GFL头,这需要对教师进行特殊的训练。为了克服这一限制,我们提出了一种特殊的无结构IoU蒸馏损失。

2.2 二元分类蒸馏损失

密集目标检测中的协议:密集目标检测器旨在预测从整个图像生成的密集图中每个采样点的相应分类分数和边界框。然后,由于背景像素占据了图像的很大一部分,在密集的物体检测器中,前景和背景样本严重不平衡。具体来说,在训练过程中,大多数样本是背景样本。当使用Softmax协议将分类logtis转移到分类分数时,该协议将样本分配给K+1概率(其中K是前景类别的数量,附加概率提示背景),由于其倾向于更高的概率分配给多数类别,即背景,它们可能无效。通过将多分类问题建模为多二进制分类问题,该方法可以更有效地处理前景-背景类不平衡问题。

具体来说,密集目标检测器产生不同大小的分类图,大小为H×W×K,H、W和K分别表示类的高度、宽度和数量。现有的方法将标签分配给分类图上的每个点,正样本标签为1,负样本标签为0。设x是一个样本,l \in R^{n \times K}表示其分类logits。为了获得每个点的分类分数,现有的方法使用Sigmoid协议,即p = Prot_{Sig}(l)。我们还有一个x的标签张量y。因此,我们可以计算分类分数和标签之间的二进制交叉熵损失:

L_{cls}(x) =\sum_{i=1}^{n} \sum_{j=1}^{K}L_{CE}(p_{i,j},y_{i,j})

L_{CE}(p_{i,j},y_{i,j})是第i个位置的第j个类别的二进制交叉熵损失,定义为:

\mathcal{L}_{CE}(p_{i,j},y_{i,j}) = \begin{cases} -\log(p_{i,j}) & \text{if } y_{.,j} = 1, \\ -\log(1-p_{i,j}) & \text{if } y_{.,j} = 0. \end{cases}

普通分类蒸馏中的协议:Softmax协议通常用于分类蒸馏。具体来说,对于样本x,l^t,l^s设分别表示来自教师和学生模型的logits。现有的方法使用Softmax协议来获得分类分数,即p^t = Prot_{Smax}(l^t)p^s = Prot_{Smax}(l^s)。在p^t,p^s和之间计算分类蒸馏损失,以鼓励学生模型模仿教师模型的输出。具体来说,这种损失通常被定义为教师分数和学生分数之间的KL差异:

L_{cls}^{kl}(x) = L_{kl}(p^s,p^t)

其中,L_{cls}^{kl}(.)表示分类蒸馏损失,L_{kl}(.,.)表示KL散度.。

跨任务协议不一致分析

目标检测中的知识蒸馏方法通常将图像分类中使用的分类蒸馏损失直接应用于密集目标检测,导致跨任务协议不一致。具体来说,我们将Softmax协议和Sigmoid协议介绍如下:

Prot_{Smax}(l^t) = \frac{e^{l^t}}{\sum \sum_{i=1}^{K}e^{l_i^t}}Prot_{Sig}(l^t) = \frac{1}{1+e^{-l^t}}

因此,蒸馏损失等于0,并且没有从教师到学生模型的定位知识的进一步转移。然而,Prot_{Sig}(l_s)\neq Prot_{Sig}(l_t),导致在推理过程中教师和学生模型的分类得分之间存在显著差距。通常,学生模型获得的分数低于教师模型的分数,并且可能具有不正确的类别关系。因此,学生无法继承教师模型的正确预测能力。

弥补跨任务协议不一致:提出了一个简单且有效的解决方案。具体地,我们在蒸馏过程中将分类Logit映射视为多个二进制分类映射。为了实现这一点,我们计算p^{t^`} = Prot_{Sig}(l^t) p^{s^`} = Prot_{Sig}(l^s) ,得到大小为n×K的二元分类得分p^{t^`}  p^{s^`}  。然后可以基于这些二元分类分数计算分类蒸馏损失:

L_{BCE}(p_i^s,{_j^`},p_i^t,{_j^`}) = -((1-p_i^t,{_j^`})+p_i^t,{_j^`}\cdot log(p_i^s,{_j^`}))

L_{cls}^{dis}(x) =\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{K}L_{BCE}(p_i^s,{_j^`},p_i^s,{_j^`})

L_{cls}^{dis}(\cdot )表示分类蒸馏损失,L_{BCE}(\cdot ,\cdot )表示二进制交叉熵损失,p_i^s.{_j^`}  p_i^t.{_j^`}  表示p^{s^`},p^{t^`}  的第i位置的第j类。

此外,受Focal loss的启发,我们为模型提出了一种损失加权策略,以集中提取重要样本。具体来说,我们计算样本x的重要性权重w如下:

w = |p^{t^`}-p^{s^`}|

此处w \in R^{n \times K},w中的每个元素加权到样本x的分类蒸馏损失。因此,本文中的分类蒸馏损失公式为:

L_{cls}^{dis}(x) = \sum \limits_{i=1}^{n} \sum \limits_{j=1}^{K}w_{i,j}\cdot L_{BCE}(p_i^s,{_j^`},p_i^t,{_j^`})

2.3 基于IoU的定位蒸馏损失

除了分类,目标检测的另一个关键方面是定位。LD将边界框转换为概率分布,以解决定位蒸馏问题。在LD中,离散位置概率预测头,如广义焦点损失头,对于精确预测每个样本的定位概率分布至关重要。令人遗憾的是,这种类型的头不常用于当前的对象检测器,因为它们的复杂性,特别是在推理中,导致需要对教师模型特定的训练。为了解决这个问题,提出了一种创新的无结构定位蒸馏损失,其动机是在密集物体检测器中广泛使用IoU损失,以取代现有的。

LD将连续回归范围离散为具有n个区间的均匀离散变量[e_1,e_2,....e_n]^T。为了预测对应于每个边缘e的每个回归区间的n个logit,分别由教师和学生的zT,zS表示,需要离散位置概率预测头(例如广义焦点损失头)。然后使用广义Softmax函数将zT和zS分别变换为概率分布pT和pS。最后,使用KL散度来最小化pT和pS之间的距离。尽管有效,但该方法需要使用特定的head,即广义焦点损失头,来预测每个边缘的所有可能位置的离散logtis。相反,这些检测器通常预测连续的边界框偏移,这对于在推理中获得的预测边界框更方便。因此,LD的适用性有限。

在这项工作中,我们的目标是将定位知识从教师模型转移到学生模型,而不依赖于边界框预测的复杂转换。为了实现这一点,我们利用两个边界框之间最基本的位置关系IoU,作为蒸馏目标。具体而言,我们从教师和学生模型中获得定位图,并且对于给定的输入样本x,我们将来自第i个位置的教师和学生的模型的相应定位预测分别表示为o_i^to_i^s。然后,我们将通过anchor位置和定位预测来获得x的边界框,其中A_i表示第i个anchor。教师模型和学生模型的边界框分别由解码器b_i^t=Decoder(A_i,o_i^t),b_i^s = Decoder(A_i,o_i^s)获得。我们计算b_i^t,b_i^s和之间的IoU,表示为u_i^`  。此外,我们在上一节中为模型引入了一种损失加权策略,以集中精力提取重要样本,我们也将其应用于定位蒸馏。因此,定位蒸馏损失为:

L_{loc}^{dis}(x) = \sum\limits _{i=1}^{n}max(w.,j)\cdot (1-u_i^`)

2.4 总的蒸馏损失

我们引入了两种新的蒸馏损失,即二元分类蒸馏损失和基于IoU的定位蒸馏损失,以提高分类和定位任务的能力。组合蒸馏损失公式如下:

L_{total}^{dis}(x) = \alpha _1\cdot L_{cls}^{dis}(x)+ \alpha _2 L_{loc}^{dis}(x)

3 实验结果

在coco数据集上的实验结果

4 思考

这篇文章中是否可以加入特征蒸馏进行组合使用,或者是基于IoU的定位蒸馏是否可以换成其他的定位蒸馏方法?

  • 35
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值