PKD: General Distillation Framework for Object Detectors via Pearson Correlation Coefficient阅读笔记

本文主要是介绍PKD: General Distillation Framework for Object Detectors via Pearson Correlation Coefficient阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一) Title

在这里插入图片描述
论文地址:https://arxiv.org/abs/2207.02039

(二) Summary

研究背景:

  • 在目标检测任务中KD发挥着压缩模型的作用,但是对于heterogeneous detectors(异构)之间的蒸馏仍然lack of study。

本文的主要工作

  • 来自异构教师的FPN feature能够帮助具有不同detect head和label assignment方式的学生.这里给我的感觉是使用anchor-based框架也能够蒸馏anchor-free的框架
  • 引入了皮尔逊相关系数来进行蒸馏实现relax constraints

本文的主要贡献:

  • 使用Pearson Correlation Coefficient对于同质和异质的教师-学生蒸馏结构同样有帮助,并且收敛更快
  • MaskRCNN-Swin detector作为教师模型,ResNet-50 based RetinaNet
    and FCOS achieve 41.5% and 43.9% mAP on COCO2017。

(三) Problem Statement

作者指出直接对齐学生网络和教师网络的特征存在着两个问题:

  • 学生网络和教师网络feature magnitude(特征幅度之间的差异)会导致over strict constraint。蒸馏任务中有没有什么方法能够衡量特征语义之间的差异呢?
  • 在FPN和具有较大特征幅度的feature layer中,很容易把控住梯度的收敛方向,从而引入更多的噪声进来

从图片展示上来看,如下:
在这里插入图片描述

  • 上图中左图应该是按照特征激活值所在区间绘制了一个柱状图这里纵坐标上角标单位是 1 e 6 1e6 1e6,应该统计的是FPN的所有特征层,从横坐标上来看,是直接对特征图的值按照取值大小划分区间,对在该区间内的特征点数量进行的统计。
  • 中间图的公式略微有点儿难看懂, number  i = ∑ u , v 1 [ arg ⁡ max ⁡ c s u , v ( c ) = i ] \text { number }_{i}=\sum_{u, v} \mathbb{1}\left[\arg \max _{c} s_{u, v}^{(c)}=i\right]  number i=u,v1[argmaxcsu,v(c)=i],首先这里的 number  i \text { number }_{i}  number i表示的是纵坐标的取值,图中横坐标表示特征图P3的通道数,然后里面的 1 [ arg ⁡ max ⁡ c s u , v ( c ) = i ] \mathbb{1}\left[\arg \max _{c} s_{u, v}^{(c)}=i\right] 1[argmaxcsu,v(c)=i]表示的是对于第 i i i个通道,如果 ( u , v ) (u,v) (u,v)位置对应的特征取值为所有通道中最大的那个,则取值为1,否则取值为0.由于第 l l l个FPN层的特征为 s l ∈ R C × H × W \boldsymbol{s}_{\boldsymbol{l}} \in \mathbb{R}^{C \times H \times W} slRC×H×W,取最大值来压缩通道数量得到2D的特征图表示。实际上这里统计的是2D特征图上的特征分别来自哪个特征通道,即哪一个特征通道相对来说更加重要。从这个图中我们也可以看到总有一些特征通道的激活值比其他通道大,然而less activated features在蒸馏任务中同样关键,这部分对应的梯度较小
  • 最右侧图是对2D图进行0-255归一化之后的可视化图片。这里考虑的是不同stage之间特征的差异问题,上面那组图为教师模型,下为学生模型,教师P6的特征激活值要比P3小很多,从而导致具有较大激活值的stage在梯度反向传播中更加关键,占据更大的梯度向量,此外在同背景无关的位置可视化特征图上也出现了具有较大激活值,这些位置对于蒸馏任务来说会额外的引入噪声。

从上面的描述中,总结下来,希望能够解决的三个问题是:

  • FPN不同stage之间特征magnitude差异
  • 在文献[34,46]中给出的less activated features are still practical for distillation假设成立的条件下,这里博主对于这个假设持怀疑态度,从之前的论文和实验经历来看,较大激活值的特征在蒸馏过程中能够起到更大的帮助,再加上这个假设也就相当于所有的activation均有用,这个结论并不是很赞同,如何处理具有less activated feature的特征通道?
  • 对于非object位置的large magnitude如何避免其引入的额外噪声?

(四) Method

本文提出使用Pearson Correlation Coefficient(PCC)来进行蒸馏,为了解决上述3个问题negative influences of magnitude difference, dominant FPN stages and channels,首先将特征图归一化到0均值,单位方差。这里使用的是哪一个norm方式呢?这里实际上等价于最大化皮尔逊相关系数,此外PCC还能够减少特征幅度对于梯度反传的影响。使得训练过程更加稳定。这里需要注意的是:仅仅对于FPN特征进行了蒸馏。
在这里插入图片描述
详细的蒸馏过程如下:

  • 首先,对特征图进行0均值,unit 方差的归一化,具体的方式为:
    一个mini-batch的特征图的batch大小为 b b b,特征图size为 h w hw hw,令 m = ∥ B ∥ = b ⋅ h w m=\|\mathbb{B}\|=b \cdot h w m=B=bhw, s ( c ) ∈ R m \boldsymbol{s}^{(c)} \in \mathbb{R}^{m} s(c)Rm为mini-batch第 c c c个通道的FPN输出,最终得到归一化的学生和教师网络的特征值: s ^ 1 … m \hat{s}_{1 \ldots m} s^1m t ^ 1 … m \hat{t}_{1 \ldots m} t^1m这里的均值和方差的计算方式感觉就是做了一个BN啊!!!
  • 对应的蒸馏损失函数为:
    L F P N = 1 2 m ∑ i = 1 m ( s ^ i − t ^ i ) 2 \mathcal{L}_{F P N}=\frac{1}{2 m} \sum_{i=1}^{m}\left(\hat{s}_{i}-\hat{t}_{i}\right)^{2} LFPN=2m1i=1m(s^it^i)2
    最大化皮尔逊相关系数的表示方式为:
    在这里插入图片描述
    对应到文中的表达形式为:
    r ( s , t ) = ∑ i = 1 m ( s i − μ s ) ( t i − μ t ) ∑ i = 1 m ( s i − μ s ) 2 ∑ i = 1 m ( t i − μ t ) 2 r(\boldsymbol{s}, \boldsymbol{t})=\frac{\sum_{i=1}^{m}\left(s_{i}-\mu_{s}\right)\left(t_{i}-\mu_{t}\right)}{\sqrt{\sum_{i=1}^{m}\left(s_{i}-\mu_{s}\right)^{2}} \sqrt{\sum_{i=1}^{m}\left(t_{i}-\mu_{t}\right)^{2}}} r(s,t)=i=1m(siμs)2 i=1m(tiμt)2 i=1m(siμs)(tiμt)
    这里 s ^ , t ^ ∼ N ( 0 , 1 ) \hat{\boldsymbol{s}}, \hat{\boldsymbol{t}} \sim \mathcal{N}(0,1) s^,t^N(0,1)服从标准正态分布,并且有 1 m − 1 ∑ i s ^ i 2 = 1 , 1 m − 1 ∑ i t ^ i 2 = 1 \frac{1}{m-1} \sum_{i} \hat{s}_{i}^{2}=1, \frac{1}{m-1} \sum_{i} \hat{t}_{i}^{2}=1 m11is^i2=1,m11it^i2=1成立,此时上述的损失函数就变成了:
    L F P N = 1 2 m ( ( 2 m − 2 ) − 2 ∑ i = 1 m s ^ i t ^ i ) = 2 m − 2 2 m ( 1 − r ( s , t ) ) ≈ 1 − r ( s , t ) \begin{aligned} \mathcal{L}_{F P N} &=\frac{1}{2 m}\left((2 m-2)-2 \sum_{i=1}^{m} \hat{s}_{i} \hat{t}_{i}\right) \\ &=\frac{2 m-2}{2 m}(1-r(\boldsymbol{s}, \boldsymbol{t})) \approx 1-r(\boldsymbol{s}, \boldsymbol{t}) \end{aligned} LFPN=2m1((2m2)2i=1ms^it^i)=2m2m2(1r(s,t))1r(s,t)
    即最小化损失等价于最大化皮尔逊相关系数。此时对于损失对于FPN特征输出 s i s_i si的梯度为:
    ∂ L F P N ∂ s i = 1 m σ s ( s i ^ ⋅ r ( s , t ) − t i ^ ) \frac{\partial \mathcal{L}_{F P N}}{\partial s_{i}}=\frac{1}{m \sigma_{s}}\left(\hat{s_{i}} \cdot r(\boldsymbol{s}, \boldsymbol{t})-\hat{t_{i}}\right) siLFPN=mσs1(si^r(s,t)ti^)
    这里梯度计算为什么为多了一个 r ( s , t ) r(\boldsymbol{s}, \boldsymbol{t}) r(s,t)呢?首先 L F P N = 1 2 m ∑ i = 1 m ( s ^ i − t ^ i ) 2 \mathcal{L}_{F P N}=\frac{1}{2 m} \sum_{i=1}^{m}\left(\hat{s}_{i}-\hat{t}_{i}\right)^{2} LFPN=2m1i=1m(s^it^i)2, s ^ i = s i − μ s σ s \hat{s}_{i}=\frac{s_{i}-\mu_s}{\sigma_s} s^i=σssiμs, L F P N \mathcal{L}_{F P N} LFPN直接对 s i s_{i} si求导,从这里看应该是 ∂ L F P N ∂ s i = 1 m σ s ( s i ^ − t i ^ ) \frac{\partial \mathcal{L}_{F P N}}{\partial s_{i}}=\frac{1}{m \sigma_{s}}\left(\hat{s_{i}}-\hat{t_{i}}\right) siLFPN=mσs1(si^ti^)吧?没看出来是怎么引入皮尔逊相关系数的
    从上述的梯度表达式中可以看出,皮尔逊系数对于学生网络激活输出进行了加权,从加权结果中来看,实际上这里假设不相关,然后 r ( s , t ) = 0 r(\boldsymbol{s}, \boldsymbol{t})=0 r(s,t)=0,此时梯度完全收教师网络值把控?梯度并不为0,整体给我的感觉很奇怪!,除了这个地方之外,关于皮尔逊相关系数对于上述三个问题的解决描述不清楚
    最终的总损失表示为:
    L = L G T + α L F P N \mathcal{L}=\mathcal{L}_{G T}+\alpha \mathcal{L}_{F P N} L=LGT+αLFPN

PCC和KL散度之间的关联是什么呢?
KL散度在蒸馏过程中的处理方式为:首先通过softmax函数将激活值转换成概率分布,然后最小化教师和学生激活值之间的KL散度损失,从公式上来看是:
L K L = T 2 ∑ i = 1 m ϕ ( t i ) ⋅ log ⁡ [ ϕ ( t i ) ϕ ( s i ) ] \mathcal{L}_{K L}=T^{2} \sum_{i=1}^{m} \phi\left(t_{i}\right) \cdot \log \left[\frac{\phi\left(t_{i}\right)}{\phi\left(s_{i}\right)}\right] LKL=T2i=1mϕ(ti)log[ϕ(si)ϕ(ti)]
归一化方式为:
ϕ ( t ) = exp ⁡ ( t i / T ) ∑ j = 1 m exp ⁡ ( t j / T ) \phi(t)=\frac{\exp \left(t_{i} / T\right)}{\sum_{j=1}^{m} \exp \left(t_{j} / T\right)} ϕ(t)=j=1mexp(tj/T)exp(ti/T)
然后,这里作者说在高温条件下,最小化post-normalized features之间的KL散度,等价于最小化MSE,然后就等价于在pre-normalized features之间的最大化皮尔逊相关系数。
接着KL散度对于normalized activation s ^ i \hat{s}_i s^i求梯度,得到:
∂ L K L ∂ s ^ i = T ( q i − p i ) = T ( e s i / T ^ ∑ j e s j / T ^ − e t i / T ^ ∑ j e t j / T ^ ) \frac{\partial \mathcal{L}_{K L}}{\partial \hat{s}_{i}}=T\left(q_{i}-p_{i}\right)=T\left(\frac{e^{\hat{s_{i} / T}}}{\sum_{j} e^{\hat{s_{j} / T}}}-\frac{e^{\hat{t_{i} / T}}}{\sum_{j} e^{\hat{t_{j} / T}}}\right) s^iLKL=T(qipi)=T(jesj/T^esi/T^jetj/T^eti/T^)
其中 p i = ϕ ( t i ^ ) and  q i = ϕ ( s i ^ ) p_{i}=\phi\left(\hat{t_{i}}\right) \text { and } q_{i}=\phi\left(\hat{s_{i}}\right) pi=ϕ(ti^) and qi=ϕ(si^)这里的梯度求导方式不知道是则得到的?
接着当温度足够高时,有近似计算如下:
∂ L K L ∂ s i ^ ≈ T ( 1 + s i ^ / T N + ∑ j s j ^ / T − 1 + t i ^ / T N + ∑ j t j ^ / T ) \frac{\partial \mathcal{L}_{K L}}{\partial \hat{s_{i}}} \approx T\left(\frac{1+\hat{s_{i}} / T}{N+\sum_{j} \hat{s_{j}} / T}-\frac{1+\hat{t_{i}} / T}{N+\sum_{j} \hat{t_{j}} / T}\right) si^LKLT(N+jsj^/T1+si^/TN+jtj^/T1+ti^/T)
由于 s ^ i , t ^ i \hat{s}_i,\hat{t}_i s^i,t^i都是0均值的,然后上式就可以简化成:
∂ L K L ∂ s i ^ ≈ 1 N ( s i ^ − t i ^ ) \frac{\partial \mathcal{L}_{K L}}{\partial \hat{s_{i}}} \approx \frac{1}{N}\left(\hat{s_{i}}-\hat{t_{i}}\right) si^LKLN1(si^ti^)
然后观察同PCC之间的差异。

(五) Experiments

在这里插入图片描述
同质结构下的蒸馏
在这里插入图片描述
异质结构下的蒸馏过程。
在这里插入图片描述
针对之前提到的三种问题,设计了三个蒸馏对象来比较MSE和本文提出的PKD的差异。
在这里插入图片描述
超参数对于蒸馏效果的影响

这篇关于PKD: General Distillation Framework for Object Detectors via Pearson Correlation Coefficient阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/469100

相关文章

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

Windows中,.net framework 3.5安装

安装.net framework,目前已知2种方法,如下: 一、在MSDN下载对应的安装包,安装,这种可能无法安装成功,概率很大,不成功使用第二种方法,基本上没问题。 二、win8/8.1/10 下安装 .net framework 3.5.1: 1. 打开 win8/8.1/10 安装盘(这里指系统安装镜像文件),提取 sources\sxs 文件夹到 X:\sources\sxs (X代

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

【软考】信息系统项目管理师(高项)备考笔记——信息系统项目管理基础

信息系统项目管理基础 日常笔记 项目的特点:临时性(一次性)、独特的产品、服务或成果、逐步完善、资源约束、目的性。 临时性是指每一个项目都有确定的开始和结束日期独特性,创造独特的可交付成果,如产品、服务或成果逐步完善意味着分步、连续的积累。例如,在项目早期,项目范围的说明是粗略的,随着项目团队对目标和可交付成果的理解更完整和深入时,项目的范围也就更具体和详细。 战略管理包括以下三个过程

【软考】信息系统项目管理师(高项)备考笔记——信息化与信息系统

信息化与信息系统 最近在备考信息系统项目管理师软考证书,特记录笔记留念,也希望可以帮到有需求的人。 因为这是从notion里导出来的,格式上可能有点问题,懒的逐条修改了,还望见谅! 日常笔记 核心知识 信息的质量属性:1.精确性 2.完整性 3.可靠性 4.及时性 5.经济性 6.可验证下 7.安全性 信息的传输技术(通常指通信、网络)是信息技术的核心。另外,噪声影响的是信道