distillation
Classification
Knowledge Distillation via the Target-aware Transformer (CVPR 2022)
目前不足:
- 感受野对模型表征能力影响十分重要,这种差异是目前一对一匹配蒸馏法导致次优结果的潜在原因。
改进:
- 我们提出通过target-aware transformer(TaT)进行知识提炼,使全体学生分别模仿教师的各个空间组件(one-to-all)。这样,我们就能提高匹配能力,从而改善知识提炼的性能。
- 我们提出了分层蒸馏法,以转移局部特征和全局依赖性,而不是原始特征图。这样,我们就能将提出的方法应用于因特征图规模庞大而计算负担沉重的应用中。
由于教师网络的特征图通常包含更多的层和更大的特征通道,与学生网络相比,同一像素位置的空间信息包含更丰富的语义信息。为此,我们提出了一个一对一的空间匹配知识提炼管道,让教师的每个特征位置都能以动态的方式教授整个学生的特征。
为了方便训练,我们引入了参数方法,对学生特征和教师特征进行了额外的线性变换。我们发现,在消融研究中,参数版本比非参数版本表现更好。
- Patch-group Distillation通过将特征图分割成Patch然后n个Patch为一组,在各组之间计算TaT损失
- 上述算法对于远距离的感知性较差。Anchor-point Distillation将特征图进行池化采样成小特征图进行计算TaT损失
最后总的Loss为:
A Fast Knowledge Distillation Framework for Visual Recognition(ECCV 2022)
不足:
- 蒸馏方法消耗资源大,因为每次都要遍历一遍教师网络。因为现在许多训练方式包含数据增强,我们无法将中间的软标签进行重复利用
- ReLabel 被提出来存储来自预先训练的强教师的全局标签图注释,以便 RoI align 重新利用,而无需重复通过教师网络。(1)但是全局标签图是通过输入全局图像获得的,它不能像在输入空间中采用随机裁剪-调整操作的蒸馏过程那样完全反映软分布。(2)RoI 对齐不能保证分布与教师转发的分布完全一致。
创新点:
地址:https://github.com/szq0214/FKD
Improved Feature Distillation via Projector Ensemble(NeurIPS)
不足:
- 不使用projector直接进行蒸馏学习的话,很容易造成学生的过拟合
创新点:
- 受使用projector可以提升性能的启发,作者使用多个映射器进行蒸馏学习
Feature Distillation as Multi-task Learning
由于蒸馏方法对超参数和老师-学生组合的变化很敏感,额外的目标会增加系数调整的训练成本。为了减轻这个问题,作者简单的使用如下Direction
Alignment(DA)损失进行特征蒸馏:
Improved Feature Distillation with Projector Ensemble
上一节主要讲述projector确实可以提升学生的学习能力,收到这个启发,作者使用projector组合进行进一步提升。主要有两个动机:
- 多个projector具有不同的初始化会提供不同的转换特征,这有助于学生的泛化
- 因为在projector中使用ReLU,所以学生特征可能出现0,但是教师中使用了池化层,不太可能出现0。所以学生和教师的特征分布会有差距,所以使用多个projector可以进行权衡。
使用了多个projector后,Modified Direction Alignmen(MDA)loss如下:
Exploring Inter-Channel Correlation for Diversity-preserved Knowledge Distillation(ICCV 2023)
不足:
- 以往的知识蒸馏方法忽略了特征的多样性和同质性,导致学生网络无法学习到教师网络的内在特征分布和丰富性。
创新点:
- 提出了一种基于通道间相关性的知识蒸馏方法,能够有效地传递教师网络的特征多样性和同质性,提高学生网络的泛化能力和表达能力
- 提出了一种网格级别的通道间相关性蒸馏方法,能够稳定地进行密集预测任务的知识蒸馏,并保留空间信息。
Formulation
在本节中,我们介绍通道间相关性的公式。给定两个通道,相关性度量应该返回反映它们相关性的值。一个比较高的值代表同源,否则相反。最终,所有相关性度量按顺序收集以表示通道的整体多样性。通道间相关性可以被表示为:
Grid-Level Inter-Channel Correlation
受分治法的启发,我们寻求分割特征图,然后单独进行知识蒸馏。我们沿着像素位置将特征分割成n
x m的部分。每个部分的ICC都是单独计算的。
Object Detection
IMPROVE OBJECT DETECTION WITH FEATURE-BASED KNOWLEDGE DISTILLATION: TOWARDS ACCURATE AND EFFICIENT DETECTORS (ICLR 2021)
KD在目标检测方向的应用受限主要是因为如下两个原因
- 前后背景的像素点数量不平衡
- 像素间的关联性缺少一定的蒸馏
对应的解决策略如下:
- 既然存在不平衡关系,那我直接只针对这些bbox的区域做不就好了吗。有些是直接二值mask过滤、有的是将二值soft成高斯分布的形式
- 采用Non-Local算子产生attention map,针对attention map计算L2损失回归
ATTENTION-GUIDED DISTILLATION
那么,空间注意力图和通道注意力图的生成就等同于找到映射函数
NON-LOCAL DISTILLATION
使用NON-LOCAL模块来提取全局信息,最后Loss:
OVERALL LOSS FUNCTION
Localization Distillation for Object Detection (TPAMI)
还没看懂,后面再看
General Instance Distillation for Object Detection (CVPR 2021)
不足:
- 此外,目前的检测蒸馏方法不能同时在多个检测框架中很好地发挥作用,例如两阶段、一阶段、无锚方法。
贡献:
- 将General Instance(GI)定义为蒸馏目标,可有效提高检测模型的蒸馏效果。
- 在 GI 的基础上,我们首先引入基于关系的知识,对检测任务进行提炼,并将其与基于反应和特征的知识进行整合,从而使学生超越教师。
- 我们的方法对各种检测框架具有稳健的泛化性
General Instance Selection Module
为了量化每个实例的差异以及选择用于蒸馏的判别实例,提出了两个指标:GI
score和GI box。为了节省训练时的计算资源,我们只需计算分类得分的 L1
距离作为 GI score,并选择得分较高的方框作为 GI
box(针对每一个回归框,作者通过比较tea与stu回归框的所有分类得分差异最大的那个作为当前框的差异分数)。上图展示了生成
GI 的过程,每个预测实例 r 的得分和方框定义如下:
Feature-based Distillation
由于 FPN 结合了多个骨干层的特点,我们直观地选择 FPN
进行蒸馏。具体来说,我们根据每个 GI 方框的不同大小,对匹配 FPN
层的特征进行裁剪。鉴于检测任务中目标大小的差异很大,直接进行像素化提炼会使模型更倾向于学习大型目标。因此,我们采用
ROIAlign 算法,将不同大小的 GI
特征调整为相同大小,然后进行蒸馏,对每个目标一视同仁。基于特征的蒸馏损失如下:
Relation-based Distillation
在这里,我们使用欧氏距离来衡量实例的相关性,并使用 L1
距离来传递知识。我们还利用 GI
之间的相关性信息来提炼从教师到学生的知识。损失表达式如下:
Response-based Distillation
对检测头的整个输出进行提炼会损害学生模型的性能。 这可能是由于检测任务中正负样本的不平衡以及过多的负样本带来的噪声造成的。最近,一些检测蒸馏方法只对检测头的正样本进行蒸馏,而忽略了具有判别能力的负样本的正则化效应。因此,我们根据选定的 GI 为分类分支和回归分支设计了蒸馏掩码,事实证明这比仅使用 GT 标签作为蒸馏掩码更有效。
然而,由于不同模型对探测头输出的定义不同,我们提出了一个针对不同模型对探测头进行蒸馏的通用框架。首先,基于
GI 的蒸馏掩码计算如下:
Overall loss function
Distilling Object Detectors via Decoupled Features (CVPR 2021)
不足:
- 以往的paper都没有使用背景区域进行蒸馏学习,只使用了目标区域
创新点:
- 使用解耦的目标区域和背景区域进行蒸馏学习
Decouple Intermediate Features in Distillation
我们得出的结论是,中间特征中的背景区域可以补充目标区域,进一步帮助学生检测器的训练。利用ground-truth来生成二值化的掩码,随后使用二值化的掩码来区分前景和背景,然后解耦的进行损失值的计算。
Decouple Region Proposals in Distillation
在蒸馏检测头时将区域建议分为positive建议和negative建议,所以还是对教师和学生的预测结果进行软化:
Instance-Conditional Knowledge Distillation for Object Detection (NIPS2021)
不足:
- 许多方法会忽略信息量大的上下文区域,或涉及缜密的决策
- 虽然注意力能为辨别区域提供固有提示,但激活与检测知识之间的关系仍不明确。
创新点:
- 我们设计了一个条件解码模块来定位知识,每个实例之间的相关性由实例感知注意力来计算
Overview
为了促进KD,作者提出在教师和学生之间传输实例条件知识,Loss为:
Instance-conditional Knowledge
实例条件知识由两部分计算得出(1) 无条件知识 (2) 实例条件
无条件知识
, 表示教师探测器提供的所有信息。将多尺度特征表示为 ,其中 是空间上的分辨率,D 是维度。沿着空间维度方向对不同尺度的表征进行concat,我们就会获得 ,其中 是各尺度像素总数之和实例条件最初描述的是人类观察到的物体,用
表示,其中 N 是物体编号, 是第 i 个实例的注释,包括类别 和框位置 ,其中指定了定位和尺寸信息。为了为每个实例生成可学习的嵌入,注释被映射到隐藏空间中的查询特征向量
,该向量指定了收集所需知识的条件: 其中 是一个编码方法,以及 是一个MLP我们通过测量相关反应,从给定
的 中检索知识。通过多头注意力机制进行计算得出。
Auxiliary Task
等下次再看,不太懂
Focal and Global Knowledge Distillation for Detectors (CVPR2022)
不足:
- 将前景和背景不进行解耦一起进行蒸馏结果是最差的,这一现象表明,特征图的不均匀差异会对蒸馏产生负面影响。
- 再往深处想,不仅前景和背景之间存在负面影响,像素和通道之间也存在负面影响。
- 缺乏对全局信息的提取。
创新点:
- 提出focal蒸馏。在分离前景和背景的同时,焦点提炼还能计算出教师特征中不同像素和通道的关注度,让学生关注教师的关键像素和通道。
- 提出global蒸馏。我们利用 GcBlock 提取不同像素之间的关系,然后将其从教师提炼到学生。
Focal Distillation
针对前景和背景不平衡的问题,我们提出了焦点蒸馏法来分离图像,引导学生关注关键像素和通道。对于蒸馏区域的对比如下图所示:
首先还是利用ground-truth来得到二值化掩码M。在不同的图像中,像素数量和前景与背景的比例差异很大。因此,为了对不同目标一视同仁,平衡前景和背景的损失,我们将比例掩码
S 设置为:
随后先选择焦点像素和通道,然后得到相应的注意力掩码。我们分别计算不同像素和不同通道的绝对平均值:
Global Distillation
利用 GcBlock
在单幅图像中捕捉全局关系信息,并迫使学生探测器从教师那里学习关系。全局Loss为:
Overall loss
于是总的Loss为:
代码实现
1 |
|
1 |
|
1 |
|
Channel-wise Knowledge Distillation for Dense Prediction (ICCV 2021)
不足:
- 以往蒸馏方法都是挖掘空间上的知识
创新点:
- 对通道方向上进行蒸馏
Channel-wise Distillation
整体公式如下所示:
G-DetKD: Towards General Distillation Framework for Object Detectors via Contrastive and Semantic-guided Feature Imitation(ICCV 2021)
不足:
- 以往的目标检测模型都是划分前景背景来进行蒸馏,但是都是使用在较老没有FPN的目标检测模型上
- 以往的目标检测蒸馏方法都不能使用在异构的目标检测器上
- 不加区分地对所有层级应用相同的掩码,可能会引入无响应特征层级的噪音
创新点:
- 带有语义感知软匹配机制的新型语义引导特征模仿方法(SGFI)
- 对比知识提炼(CKD),以捕捉教师不同特征区域之间的关系所编码的信息。
Semantic-Guided Feature Imitation (SGFI)
这部分就用一个类似注意力机制的办法来进行蒸馏学习语义信息。首先从启发式指定的金字塔级别中提取教师
Exploiting Region Relationship with Contrastive KD (CKD)
首先给定一个集合B,其中包含N个RoI的bounding box(
Structural Knowledge Distillation for Object Detection(NeurlPS 2022)
创新点:
- 不使用更复杂的采样机制去提升 l -正则化所带来的弊端
- 通过交叉使得学生能够获取更多的知识
Overview
作者选择neck的输出端分别从教师和学生那里选择中间表征 $^{C,H,W}
Measuring Difference
显然,L-norm
函数无法捕捉到特征之间的空间关系。为了捕捉二阶信息,我们需要至少设计两个特征位置,因此我们将问题从point-wise比较修改成patch-wise比较。对于每个patch,我们提取出三个基本属性:均值
PKD: General Distillation Framework for Object Detectors via Pearson Correlation Coefficient(NeurlPS 2022)
不足:
- 教师和学生之间的特征量级差异可能会对学生施加过于严格的限制
- 教师模型中特征量级较大的 FPN 层和通道可能会主导蒸馏损失的梯度,这将压倒 KD 中其他特征的效果,并引入大量噪声
创新点:
- 作者认为,即使师生探测器对是异质的,FPN 特征模仿也能成功地提炼知识。
- 建议用 PCC 来模仿 FPN 特征,以关注关系信息,并放宽学生特征大小的分布限制。
我们建议首先对教师和学生的特征进行归一化处理,使其均值为零,方差为单位,并最小化归一化特征之间的
MSE。此外,我们还希望归一化服从卷积属性--这样,同一特征图中位于不同位置的不同元素就会以相同的方式归一化。让
总之,PCC 专注于来自教师的关系信息,放松了对学生特征大小的分布限制。此外,它还消除了占主导地位的 FPN 阶段和通道的负面影响,从而获得更好的性能。因此,归一化机制弥合了学生和教师激活模式之间的差距(见图 2)。因此,使用 PCC 进行特征模仿适用于异质检测器对。最后模型训练的Loss为:
Bridging Cross-task Protocol Inconsistency for Distillation in Dense Object Detection(ICCV 2023)
不足:
- 密集目标检测面临严重的前景背景不平衡问题。因此密集目标检测一般最后使用Sigmoid,而分类蒸馏任务一般选择的是softmax。Softmax对分类分数进行了归一化,忽略了各个类别的绝对分数并且消除了样本间的差异特征。此外,在蒸馏中,每个类别的分类分数与类间依赖性联合优化,而在密集对象检测中,它们在没有此类依赖性的情况下单独优化。这些差异导致了跨任务协议不一致问题,如图1(b)所示:当Softmax后教师分数与学生分数相等时,分类蒸馏损失为0,表明学生分数已经达到最优溶液中的蒸馏损失。而实际上学生的Logit差别很大。
- 定位是目标检测的一大问题,尽管LD(上面那篇TPAMI)已经证明了定位蒸馏损失是有效的,但是他需要离散位置概率预测头,这是一大限制。
创新点:
- 作者提出了两个新颖的蒸馏损失,二元分类蒸馏损失和IoU-based定位蒸馏损失,为分类和定位量身定制。
- 在分类中,作者将跨任务不平衡协议转换成平衡。具体来说,我们将密集目标检测器中的分类logit图视作K个二元分类图。之后,我们使用Sigmoid去获得分数以及使用二元交叉熵损失去蒸馏每个二元分类图,能够有效解决跨任务的不平衡问题。
- 对于定位,我们将依赖特殊结构的定位蒸馏损失转换为无特殊结构的定位蒸馏损失。具体来说,我们直接计算教师和学生生成的预测边框之间的IoU,并使用IoU损失来最小化IoU值与1之间的差异。
Binary Classification Distillation Loss
为了弥补跨任务协议的不一致,我们提出了一个简单但有效的解决方案。具体来说,我们在蒸馏过程中将分类
Logit 图视为多个二元分类图。为了解决这个问题,我们提计算
IoU-based Localization Distillation Loss
我们计算
Total Distillation Loss
最后合并两个损失为:
UniKD: Universal Knowledge Distillation for Mimicking Homogeneous or Heterogeneous Object Detectors(ICCV 2023)
不足:
- 如何在不同类型的教师-学生对之间进行知识传递是一个很实用且具有挑战的一个标题
创新点:
- 提出了一个query-based蒸馏范式,叫做Universal Knowledge Distillation(UniKD)
- 在UniKD中,我们提出了Adaptive Knowledge Extractor(AKE)模块,是一个具有可变性交叉注意力的额外transformer解码器头。
Universal Knowledge Distillation
UniKD可以被视为一个two-stage学习范式:
- 从教师吸取知识
- 注射知识进学生
Architecture of AKE module
AKE包含两个组件:query提取器(
Query Generator
我们先生成两种类型的输入embedding,
随着
Detection-relevant Knowledge Extractor. 得到了query
Absorbing knowledge from teacher
在第一个步骤中,我们只是用教师来预训练AKE模块。这个预训练步骤促进了知识embedding
对于content知识,我们首先令其与输入
Injecting knowledge to student
在第二个步骤中,我们冻结AKE中的参数。注意AKE在教师和学生之间共享相同的query
generator 作为输入。最后loss为:
Multi-level Logit Distillation (CVPR 2023)
多级Logit蒸馏使用的不是单个数据的输出,而是整个Batch的输出。我们将Logit输出表示为
Prediction Augmentation
我们通过模型校准进行预测增强。我们采取温度定标,一种广泛采用的定标方法。
Multi-level Alignment
通过增加预测,我们提出将教师输出和相应的学生输出(根据温度)一一对应。不同于传统的基于KL散度的logit对齐,我们提出了一种新的多级对齐方法,包括1 )实例级对齐,2 )批级对齐和3 )类级对齐。
Instance-level Alignment
我们继承了原始KD机制中进行实例级的对齐。具体来说,我们一对一最小化教师和学生之间增强的预测的KL散度:
Batch-level Alignment
我们建议通过输入相关性(两个输入之间的关系)进行批量级对齐,而不是仅在实例级别对齐预测,这是通过以前的工作中的特征进行建模的。在我们的方法中,我们采用逻辑预测来量化它。我们计算模型预测的Gram矩阵:
ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector(CVPR 2023)
不足:
- Small Object Detector(SOD )通常受到噪声特征表示的影响。由于小物体的性质,它们通常占据整个图像中的一小部分区域,因此这些小物体的特征表示可能会被背景和其他尺寸相对较大的实例污染。
- 物体检测器对小物体上的噪声边界框的容忍度较低。教师模型不可避免地会做出错误的预测。教师边界框上的小扰动可能会极大地损害学生检测器上的 SOD 性能。
创新点:
- 尺度解耦的特征蒸馏模块,将教师的特征表示分解为多尺度嵌入,从而能够在小物体上对学生模型进行显式特征模仿。
- 跨尺度助手,用于细化嘈杂且无信息的边界框预测学生模型,这可能会误导学生模型并损害知识蒸馏的功效。
Scale-Decoupled Feature Distillation
我们的目标是分解教师的特征表达为多个部分,其中每个部分仅解决相似的目标大小。据推测,这样的操作可以迫使学生检测器不仅理解整个图像的全局知识,而且还理解特定尺度的知识。
为了充分利用多尺度的图像特征,我们采用了一个多分支结构,其中每一个分支使用了不同扩张率的卷积层。我们使用ResNet中的残差模块,其中包含三个卷积层(1x1, 3x3, 1x1)以及一个跳跃连接。对于3x3的卷积层,我们在三个分支中使用不同的扩张率(1, 2, 3)。
如果我们对数据间每个分支间进行匹配计算loss,会占用大量内存。因此,我们从神经架构搜索中的权重共享网络中汲取灵感,并采用权重共享尺度解耦特征。这是基于以下事实:所有三个分支都具有相同的运算符。在实践中,我们只保存三个分支的一组权重,大大降低了训练内存成本。
同时我们注意到使用三个独立loss来匹配三个平行的分支会造成大量成本来在超参数调整上。最后,对于每个分支,我们使用一个flattened层,最后将三个拉直的向量concat起来。最后使用L2作为loss。
Cross-Scale Assistant
我们通过cross-attention模块来搭建 Cross-Scala
Assistant。在交叉注意力中,在教室知识范围内生成一系列的key和query来计算KQ注意力,然后与学生模型的输出张量进行映射,以获得每个对应query的特征中的注意区域。这个过程在每个学生金字塔尺度上执行,以检索基于信息区域的特征。当图像中出现大物体时,交叉注意力会将注意力转向这些大物体,而忽略小物体。为此,与普通的交叉注意力相比,我们开发了一个多尺度交叉注意力层。我们将melti-scale
cross-attention(MSC) 公式化:
Decoupled Knowledge Distillation(CVPR 2022)
不足:
- 传统KD的loss包含两个部分,目标类别蒸馏(TCKD)和非目标类别蒸馏(NCKD),传统KD抑制了NCKD的有效性,并且限制了两个部分之间平衡的灵活性
创新点:
- 为了解决这些问题,我们提出了一种灵活高效的 Logit 蒸馏方法,称为Decoupled Knowledge Distillation(DKD)。 DKD 通过将 NCKD 损失与与教师置信度负相关的系数解耦,将其替换为常数值,从而提高了对预测良好的样本的蒸馏效率。同时,NCKD和TCKD也是解耦的,可以通过调整各部分的权重来单独考虑它们的重要性。
Reformulating KD
Notations
为了分离与目标类别相关和不相关的预测,我们定义了如下符号。
Effects of TCKD and NCKD
验证了 TCKD 的有效性并揭示了 NCKD 的抑制作用。具体来说,TCKD
传递有关训练样本“难度”的知识。 TCKD
在更具挑战性的训练数据上可以获得更显着的改进。 NCKD
在非目标类之间传递知识,在权重
Decoupled Knowledge Distillation
受益于我们对 KD
的重新表述,我们提出了一种新颖的逻辑蒸馏方法,称为解耦知识蒸馏(DKD)来解决上述问题。我们提出的
DKD 在解耦公式中独立考虑 TCKD 和
NCKD。具体来说,我们引入两个超参数α和β,分别作为TCKD和NCKD的权重。
DKD的损失函数可以写成如下:
Dual Relation Knowledge Distillation for Object Detection(IJCAI2023)
Pixel-wise Relation Distillation
像素级关系蒸馏帮助学生检测器学习前景和背景特征之间的关系,解决特征不平衡问题。采用名为 GloRe 的图卷积模块来捕获全局像素关系。它可以比注意力机制更有效地捕获全局上下文,达到更好的蒸馏效果。
具体来说,我们分别从教师和学生的主干中提取多尺度特征,并将它们输入到不同的
GloRe 模块以捕获全局像素关系。蒸馏公式如下所示:
Instance-wise Relation Distillation
Instance Feature Extraction
为了获取实例级关系,我们需要提取实例特征。通过gt来获取特征图上的实例特征,并使用ROI Align映射到同一大小
Instance-wise Relation Module and Distillation
结构如图4所示,输入特征大小为
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!