Knowledge Review(CVPR 2021)论文解析

news2025/1/22 9:17:30

paper:Distilling Knowledge via Knowledge Review

official implementation:https://github.com/dvlab-research/ReviewKD

前言 

识蒸馏将知识从教师网络转移到学生网络,可以提高学生网络的性能,作为一种“模型压缩”的方法被广泛使用。15年第一篇蒸馏方法KD对logits进行蒸馏,FitNet提出对feature进行蒸馏,后续AT、PKT、CRD等多种蒸馏方法被提出,这些蒸馏方法大都专注于改进教师与学生同一层级特征的转换和损失函数上。

本文的创新点

本文从另一个新的角度来思考蒸馏问题,即教师和学生网络之间的连接路径,之前的方法大都使用教师网络的同一层级的信息来指导学生,本文认为这是整个蒸馏框架的瓶颈所在。本文提出了一种新的蒸馏方法,关键点在于用教师网络的低层特征来监督学生网络的高层特征,从而提高蒸馏的效果。

本文提出的方法叫做knowledge review,如图1(d)所示,这种review机制用之前(浅层)的特征来指导当前的特征,这意味学生必须总是检查以前学过的东西,以更新对“旧知识”的理解和背景。这和人类的学习曲线很类似,一个小孩只能理解被教知识的一部分,在成长的过程中,过去几年学过的知识越来越多的被记住和理解。

方法介绍 

Review Mechanism

假设一张输入图片为 \(\mathbf{X}\),学生网络表示为 \(\mathcal{S} \),\(\mathbf{Y}_{s}=\mathcal{S}(\mathbf{X})\) 表示学生的输出logit。其中 \(\mathcal{S} \) 可以分成多个部分 \((\mathcal{S}_{1}, \mathcal{S}_{2},\cdot\cdot\cdot,\mathcal{S}_{n},\mathcal{S}_{c})\),其中 \(\mathcal{S}_{c}\) 表示classifier部分,\(\mathcal{S}_{1},\cdot\cdot\cdot,\mathcal{S}_{n}\) 表示不同的stage部分,那么 \(\mathbf{Y}_{s}\) 可以表示为

\(\circ \) 表示函数的嵌套,\(g\circ f(x)=g(f(x))\)。中间层的特征表示为 \((\mathbf{F}^1_{s},\cdot \cdot \cdot ,\mathbf{F}^{n}_{s} )\),第 \(i\) 层的特征计算如下

对于教师网络 \(\mathcal{T} \) 过程是类似的。单层的知识蒸馏可以表示如下

其中 \(\mathcal{M} \) 是转换函数,\(\mathcal{D}\) 是衡量教师和学生之间差异的距离函数。类似的,多层的知识蒸馏可以表示如下

其中 \(\mathbf{I}\) 存储了所有要进行蒸馏的层的特征。

本文提出的 \(review\) 机制是用之前的特征来指导当前的特征。 review机制下单层的蒸馏表示如下

 

尽管看上去和多层蒸馏很像,但实际上有本质的区别。这里学生的特征固定为 \(\mathbf{F}^{i}_{s}\),然后使用教师的前 \(i\) 层特征来指导 \(\mathbf{F}^{i}_{s}\)。当review机制和多层知识蒸馏结合时,损失函数表示如下

Residual Learning Framework

基于上述review机制得到的结构如图2(a)所示,推广到多层如图2(b)所示,但是由于不同stage之间巨大的信息差异这种策略不是最优的,并且过程复杂计算量大,比如如果一个网络有 \(n\) 个stage那么损失函数就需要计算 \(n(n+1)/2\) 对特征。为了使过程更加简洁优雅,我们可以将图2(b)的对应的式(6)重新表示如下

 其中为了简洁省去了转换函数,然后转换 \(i,j\) 两个求和的顺序,如下

当固定住 \(j\),式(9)计算的是教师特征 \(\mathbf{F}^{j}_{t}\) 和学生特征 \(\mathbf{F}^{j}_{s}-\mathbf{F}^{n}_{s}\) 之间的距离,然后我们将距离的和近似为融合特征的距离,如下

其中 \(\mathcal{U} \) 是融合特征的模块,得到的结构如图2(c)所示。然后如图2(d)所示,作者用递归的方式对融合的计算进行进一步优化,\(\mathbf{F}^{j}_{s},\cdot\cdot\cdot,\mathbf{F}^{n}_{s}\) 的融合可以看成是 \(\mathbf{F}^{j}_{s}\) 和 \(\mathcal{U}(\mathbf{F}^{j+1}_{s},\cdot\cdot\cdot,\mathbf{F}^{n}_{s})\) 的融合,其中 \(\mathcal{U} (\cdot,\cdot)\) 看作一个递归函数,\(\mathbf{F}^{j+1}_{s}\) 到 \(\mathbf{F}^{n}_{s}\) 的融合定义为 \(\mathbf{F}^{j+1,n}_{s}\),损失函数可以表示为

图2(d)的结构非常优雅并且利用残差学习的概念简化了蒸馏过程,例如,学生stage4的特征和stage3的特征结合到一起来模拟教师stage3的特征,因此学生stage4的特征学习了教师和学生stage3之间的残差,这种残差信息很有可能是教师产生更高质量结果的关因素。

ABF and HCL

受SENET的启发,作者设计了一个基于注意力的融合模块,如图3(a)所示,高层特征首先resize成和低层特征一样的shape,然后concat一起生成两个 \(H\times W\) 的特征图,然后分别与原本的两个特征图相乘最后再相加得到最终结果。

HCL如图3(b)所示,我们通常用 \(\mathcal{L}_{2}\) 距离作为两个特征图之间的损失函数,但都是用在同一level的特征之间,但本文中不同层级的特征聚集到一起然后向teacher学习,直接利用全局 \(\mathcal{L}_{2}\) 距离不足以传递不同层级之间的复合信息,受PSPNET的启发,作者提出了HCL,利用spatial pyramid pooling将知识的传递划分到不同层级的context信息中。

实验结果

在CIFAR100数据集上,无论教师和学生的网络结构是否一样,本文提出的review蒸馏方法都优于之前的方法。

在ImageNet上也取得了最优的结果

目标检测任务中,使用COCO数据集,在两阶段Faster R-CNN和单阶段RetinaNet上实验,也都取得了最优的结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode调试mit6s081Lab

环境 mit6.s081的实验环境gdb-multiarch(用于gdb调试,vscode调试实质上就是提供个图形化页面,底层还是这个) // 安装 gdb-multiarch sudo apt-get install gdb-multiarch大家好,我叫徐锦桐,个人博客地址为…

css如何设置文本添加下划线

css文本添加下划线 text-decoration: underline;text-decoration相关属性参数 参数描述none默认。定义标准的文本。underline定义文本下的一条线。overline定义文本上的一条线。line-through定义穿过文本下的一条线。blink定义闪烁的文本。inherit规定应该从父元素继承 text-…

组件的props属性

目录 1:使用props的作用: 2:props自定义属性的用法: 3:集合v-bind使用自定义属性: 4:props自定义属性是只读的: 5:default默认值: 6:type值类…

文件操作--IO

目录 ♫什么是文件 ♫文件路径 ♫文件类型 ♫文件的管理 ♪File的构造方法 ♪File的常用方法 ♫文件的内容操作 ♪InputStream ♪OutputStream ♪字符流读写文件 ♫Scanner与流对象 ♫什么是文件 文件在计算机里可以指“狭义”的文件(指硬盘上的文件和目录&…

深层神经网络(第四周)

这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。 一、为什么使用深层表示 解决问题时其实并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层。这是为什么…

LeetCode(49)用最少数量的箭引爆气球【区间】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 用最少数量的箭引爆气球 1.题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [x_start, x_end] 表示水平直径在 x_start 和 x_end之间的气球。你不知道气…

基于OpenAPI工具包以及LSTM的CDN网络流量预测

基于LSTM的CDN网络流量预测 本案例是基于英特尔CDN以及英特尔 OpenAPI Intel Extension for TensorFlow* Intel oneAPIDPC Library 的网络流量预测,CDN是构建在现有网络基础之上的智能虚拟网络,目的是将源站内容分发至最接近用户的节点,使用…

【JVM】一篇通关JVM类加载与字节码技术

目录 1. 类文件结构1-1. 魔数 版本 常量池 2. 字节码指令3. 编译期处理4. 类加载阶段5. 类加载器6. 运行期优化 类加载与字节码技术 1. 类文件结构 案例 // HelloWorld 示例 public class HelloWorld {public static void main(String[] args) {System.out.println("h…

淘宝商家店铺注册流程

如果本身已经有淘宝账号了,直接从第三步骤:创建店铺开始就可以了。一、注册淘宝账号、支付宝账号 首先,如果你有买家账号,是可以直接拿来开店的,不用单独在注册淘宝账号开店。 注意事项: 1:淘宝账号注册后,不能修改,如果会员名有写错情况&a…

创意项目开源,文生图、排序/优选等...,持续开源更新!!

热烈欢迎大家在git上star!!!冲鸭!!! 1.dalle1在厨房家具中文场景上训练。 GitHub - leeguandong/DALLE1: dalle1在中文家具场景的微调,效果并不好dalle1在中文家具场景的微调,效果…

Centos7安装GItLab(在线版)

基础环境准备 1.配置清华大学镜像仓库 新建仓库配置文件使用 vim /etc/yum.repos.d/gitlab-ce.repo 命令,输入以下内容,保存 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabl…

拥抱变化,良心AI工具推荐

文章目录 💥 简介🍄 工具介绍🍓 功能特点🥗 使用场景🎉 用户体验🧩 下载地址🍭 总结 💥 简介 我是一名资深程序员,但薪资缺对不起资深两个字,为了生存&#x…

Golang 原生Rpc Server实现

Golang 原生Rpc Server实现 引言源码解析服务端数据结构服务注册请求处理 客户端数据结构建立连接请求调用 延伸异步调用定制服务名采用TPC协议建立连接自定义编码格式自定义服务器 参考 引言 本文我们来看看golang原生rpc库的实现 , 首先来看一下golang rpc库的demo案例: 服…

百度收录批量查询工具,免费SEO优化排名工具

拥有一个在搜索引擎中得到良好收录的网站对于个人和企业都至关重要。而百度,作为中国最大的搜索引擎,其收录情况直接影响着网站的曝光度和流量。 百度搜索引擎是中文用户获取信息的重要途径之一。而在这个竞争激烈的网络环境中,了解自己网站…

Rust国内sparse镜像源配置

文章目录 1. 遇到问题1.1 问题现象1.2 解决办法 2. 重新设置最新 sparse源3. 更多参考资料3.1 字节源3.2 ustc 源3.3 清华源3.4 其他人的总结 1. 遇到问题 有好一阵子没有更新源和安装软件了, 使用ustc的源, 更新了好一阵子, 最后安装居然还出…

微机原理——定时器8253(8254)学习2应用与设计

目录 简要说明 用户扩展的定时计数器应用举例 1 8254作测量脉冲宽度 2 8254作定时 3 8254作分频 4 8254同时用作计数与定时 硬件设计 ​编辑软件设计 微机系统中定时计数器应用举例 5 计时器设计 硬件设计 软件设计 6 发生器设计 硬件设计 软件设计 简要说明 定…

Python模块与Linux stat 命令:双剑合璧的文件系统探索

简介:在Linux和Unix-like系统中,stat命令用于获取文件或目录的详细属性信息,包括但不限于大小、所有权、权限和时间戳。同样,在Python编程中,我们也有多个模块(例如os、pathlib等)提供了与stat类…

个人成长|实现财务自由的秘诀,在这8句话里

哈喽啊,我是雷工! 有人说,当今社会阶层跃迁的通道已经被堵死了,要想从普通人跨越阶级发家致富根本不可能。 也有人认为,只要踩住时代的风口,吃到时代的红利,成为百万富翁的速度会非常快。 我觉…

韵达速递查询,韵达速递单号查询,对需要的单号进行备注

批量查询韵达速递单号的物流信息,对需要的单号进行备注。 所需工具: 一个【快递批量查询高手】软件 韵达速递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左上角的“…

C++函数模板,类模板

C函数模板,类模板 1.函数模板1.1函数模板的概念1.2函数模板的格式1.3函数模板的原理1.4函数模板的实例化1.5模板参数的匹配原则 2.类模板2.1类模板的定义格式2.2类模板的实例化 1.函数模板 1.1函数模板的概念 在C中,函数模板是一种通用的函数定义&…