【论文速递】CVPR2022 - 通过目标感知transformer进行知识蒸馏

简介: 【论文速递】CVPR2022 - 通过目标感知transformer进行知识蒸馏

【论文速递】CVPR2022 - 通过目标感知transformer进行知识蒸馏

【论文原文】:Knowledge Distillation via the Target-aware Transformer

获取地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9879889

博主关键词: transformer,知识蒸馏,目标感知

推荐相关论文:

-无

摘要:

知识蒸馏成为提高小型神经网络性能的事实标准。以前的大多数作品都提出以一对一的空间匹配方式将表征特征从教师回归到学生。然而,人们往往会忽略这样一个事实,即由于架构差异,同一空间位置的语义信息通常会有所不同。这极大地破坏了一对一蒸馏方法的基本假设。为此,我们提出了一种新的一对多空间匹配知识蒸馏方法。具体来说,我们允许将教师特征的每个像素提炼到学生特征的所有空间位置,因为它的相似性是由目标感知变压器生成的。我们的方法在各种计算机视觉基准测试(如ImageNet,Pascal VOC和COCOStuff10k)上大大超过了最先进的方法。代码可在 https://github.com/sihaoevery/TaT 获得。

关键词 :transformer,知识蒸馏,目标感知。

简介:

知识蒸馏[19],[31]是指提高任何机器学习算法性能的简单技术。一种常见的场景是将知识从较大的教师神经网络提炼到较小的学生神经网络中,这样与单独训练学生模型相比,可以显著提高学生模型的性能。具体来说,人们制定了一个外部损失函数,引导学生的特征图模仿老师的特征图。最近,它已被应用于各种下游应用,例如模型压缩[42],[48],持续学习[25]和半监督学习[8]。

早期的工作只是从神经网络的最后一层提炼出知识,例如,图像分类任务中的“logits”[1],[19]。最近,人们发现提炼中间特征图是提高学生表现的更有效方法。这一系列作品鼓励在空间维度上引出类似的模式[36],[50],并构成最先进的知识蒸馏方法[7],[22]。

6d896c6ab8b382d7169548c10376da6.png

Fig. 1. Illustration of semantic mismatch.

为了计算上述方法的蒸馏损失,需要从教师那里选择源特征图,从学生那里选择目标特征图,其中这两个特征图必须具有相同的空间维度。如图1(b)所示,损失以一对一的空间匹配方式计算,即每个空间位置的源要素和目标要素之间的距离之和。这种方法的一个基本假设是每个像素的空间信息是相同的。在实践中,这种假设通常是无效的,因为学生模型的卷积层通常比教师少。图1(a)显示了一个例子,即使在相同的空间位置,学生特征的感受野通常明显小于教师的感受场,因此包含的语义信息较少。此外,最近的工作[5],[10],[41],[49]证明了感受场对模型表示能力的影响的重要性。 这种差异是当前一对一匹配蒸馏导致次优结果的潜在原因。

为此,我们提出了一种新的一对多空间匹配知识蒸馏方法。在图1(c)中,我们的方法通过参数相关性将教师在每个空间位置的特征提炼成学生特征的所有组成部分,即蒸馏损失是所有学生成分的加权总和。为了模拟这种相关性,我们制定了一个转换器结构,该结构重建了学生特征的相应单个组件,并产生了与目标教师对齐的特征。我们称这种目标感知变压器为目标感知变压器。因此,我们使用参数相关来测量以学生特征和教师特征的表征分量为条件的语义距离,以控制特征聚合的强度,从而解决了一对一匹配知识蒸馏的缺点。

当我们的方法计算特征空间位置之间的相关性时,当特征图很大时,它可能会变得棘手。为此,我们以两步分层的方式扩展我们的管道:1)我们不计算所有空间位置的相关性,而是将特征图分成几组补丁,然后在每组中执行一对多的蒸馏;2)我们进一步将补丁内的特征平均为单个向量以提炼知识。这将我们方法的复杂性降低了几个数量级。

我们评估了我们的方法在两个流行的计算机视觉任务上的有效性,即图像分类和语义分割。在 ImageNet 分类数据集上,ResNet18 学生的准确率可以从 70.04% 提高到 72.41%,比最先进的知识蒸馏高出 1.0%。至于COCOStuff8k上的分割任务,与之前的方法相比,我们的方法能够在平均并集交点(mIoU)方面将紧凑型MobilenetV10架构提高2.1%。

我们的贡献可以总结如下:

  • 我们建议通过目标感知转换器进行知识提炼,使整个学生能够分别模仿教师的每个空间组成部分。通过这种方式,我们可以提高匹配能力,从而提高知识蒸馏性能。
  • 我们提出了分层蒸馏来转移局部特征以及全局依赖关系,而不是原始特征图。这使我们能够将所提出的方法应用于由于特征图尺寸大而承受沉重计算负担的应用程序。
  • 通过应用我们的蒸馏框架,我们在多个计算机视觉任务上实现了与相关替代方案相比的最新性能。
目录
相关文章
|
Linux 异构计算 Python
【linux】nvidia-smi 查看GPU使用率100%
nvidia-smi 查看GPU使用率一直是100%解决办法
【linux】nvidia-smi 查看GPU使用率100%
|
网络性能优化 虚拟化 云计算
云计算——CPU虚拟化
云计算——CPU虚拟化
1441 0
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
558 97
|
12月前
|
人工智能 Serverless
两步构建 AI 总结助手,实现智能文档摘要
本方案将运用函数计算 FC,构建一套高可用性的 Web 服务,以满足用户多样化的需求。当用户发起请求时,系统内部会自动将包含文本和提示词的信息传递给百炼模型服务,百炼平台将根据后台配置调用相应的大模型服务,对文本数据进行智能识别与解析,最终将总结结果返回给用户。
649 20
|
机器学习/深度学习 并行计算 PyTorch
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
本文介绍了PyTorch中利用多GPU进行深度学习的三种策略:数据并行、模型并行和两者结合。通过`DataParallel`实现数据拆分、模型不拆分,将数据批次在不同GPU上处理;数据不拆分、模型拆分则将模型组件分配到不同GPU,适用于复杂模型;数据和模型都拆分,适合大型模型,使用`DistributedDataParallel`结合`torch.distributed`进行分布式训练。代码示例展示了如何在实践中应用这些策略。
3273 2
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
|
JavaScript 前端开发
js中通过正则表达式验证邮箱是否合法
这篇文章提供了一个JavaScript示例,通过正则表达式在网页上验证用户输入的邮箱地址是否合法,并给出了相应的提示信息。
js中通过正则表达式验证邮箱是否合法
|
物联网 网络性能优化 网络架构
关闭 2.4GHz 会让 5GHz 更快吗?
【5月更文挑战第10天】
2154 4
关闭 2.4GHz 会让 5GHz 更快吗?
|
Shell Linux 开发工具
Anaconda安装后报错 -bash: conda: command not found 如何处理
【6月更文挑战第20天】Anaconda安装后报错 -bash: conda: command not found 如何处理
1498 0
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
3183 1