深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

2023-11-18

主要贡献:基于网络蒸馏方法,提出了一种提升裁剪后模型的精度的方法!将训练时间大大缩短!
推荐指数:4颗星(5颗星满)

本系列是在阅读深度神经网络模型小型化方面论文时的笔记!内容大部分从论文中摘取,也会有部分自己理解,有错误的地方还望大家批评指出!

论文链接:Be Your Own Teacher: Improve the Performance of Convolutional Neural
Networks via Self Distillation

代码链接:github代码

1.摘要和背景

1.1 摘要

原文摘要:
Convolutional neural networks have been widely deployed in various application scenarios. In order to extend the applications’ boundaries to some accuracy-crucial domains,researchers have been investigating approaches to boost accuracy through either deeper or wider network structures, which brings with them the exponential increment of the computational and storage cost, delaying the responding time.
卷积网络被用于很多地方,其中很多人为了提高卷积网络的精度,对模型的深度和宽度进行增加,但是虽然模型的精度有所增加,但是模型的大小和模型的flops急剧增加,这是得不偿失的。
In this paper, we propose a general training framework named self distillation, which notably enhances the performance (accuracy) of convolutional neural networks through shrinking the size of the network rather than aggrandizing it. Different from traditional knowledge distillation - a knowledge transformation methodology among networks, which forces student neural networks to approximate the softmax layer outputs of pre-trained teacher neural networks, the proposed self distillation framework distills knowledge within network itself. The networks are firstly divided into several sections. Then the knowledge in the deeper portion of the networks is squeezed into the shallow ones. Experiments further prove the generalization of the proposed self distillation framework: enhancement of accuracy at average level is 2.65%, varying from 0.61% in ResNeXt as minimum to 4.07% in VGG19 as maximum. In addition, it can also provide flexibility of depth-wise scalable inference on resource-limited edge devices. Our codes will be released on github soon.
在本文中,提出了一种通用的训练框架,使用该框架,模型可以在不增加深度和宽度的基础上,提高模型的精度。提出的自蒸馏框架是一种网络间的知识转换方法,它要求学生神经网络近似于预先训练好的教师神经网络的softmax层的输出。该方法主要步骤为:1)将原始网络按照网络结构的特点分成几个浅层的网络;2)对分出来的浅层的网络分别使用网络蒸馏的方法(与传统的蒸馏方法还不一样,具体请看下面)。最后得出的结果发现使用提出的框架对网络进行训练比fine_turn效果好!

1.2 背景
  • 卷积网络由已经在图像分类,目标检测和语义分割方面取得了非常好的结果;一般提升网络精度的方法是度网络的深度和宽度增加,但是常常得到的结果是增加的精度与增加的计算量是不对等的,所以该方法有弊端。
  • 为了能够让网络在计算资源受限的平台上运行,则需要优化的目标是在满足资源限制的基础上,尽可能的降低裁剪后模型的精度;常用的方法包括:1)轻量级的网络设计;2)网络剪枝;3)网络量化等;但是如何提高裁剪后模型的精度是模型后优化问题。
  • 知识蒸馏是网络模型压缩中常用的方法,但是传统的知识蒸馏方法需要先预先训练一个大的强的老师网络,然后在指导不同结构的学生网络进行训练,从而达到将大网络(老师网络)的知识压缩到小网络(学生网络)。其中,大网络的训练和小网络结构的寻找是非常耗时的。
  • 本文提出一个方法,不需要训练老师网络也不需要寻找学生网络,老师网络和学生网络使用相同的结构,然后只需要一步就可以使用知识蒸馏的方法对网络精度进行提升。
    在这里插入图片描述

2.方法和贡献

2.1 方法

在这里插入图片描述
上图是本文提出的自蒸馏训练框架图。从图中可以看出,论文首先将原始网络分成了4个浅层的网络,然后在每个浅层的网络的输出加上一个瓶颈卷积,全连接层和softmax层,并能够输出预测的类别的概率。网络的前传播过程主要分为4个,其中前面3个为浅层网络的前向通道,最后一个为老师网络的前向通道。网络中的loss也分为3类。下面将详细介绍。

2.1.1 训练过程
  • 根据初始网络的深度和结构,将初始网络分为几个浅层网络。其中初始网络作为老师网络,浅层网络和深层网络作为学生网络(如果我们选择的学生网络的结构是和老师网络一样的,那么深层网络就是学生网络,否则浅层网络是学生网络。)
  • 在每一个浅层网络的后面加上一个瓶颈层,全连接层和softmax层,构成一个学生分类器。其中使用瓶颈卷积的目的是减少每个浅层分类器之间的影响。
  • 在训连教师网络的基础上,使用知识蒸馏方法对学生网络进行训练,最终训练好学生网络。
    在这里插入图片描述

2.1.2 loss介绍

  • loss Source1:Cross entropy loss from labels to not only the deepest classifier, but also all the shallow classifiers;衡量的是深层网络和浅层网络的输出与真实标签之间的差异。
  • loss Source2:KL (Kullback-Leibler) divergence loss under teacher’s guidance;衡量的是老师网络和学生网络的分布差异性。
  • loss Source3:L2 loss from hints;衡量的是学生网络和老师网络特征之间的差异性;
    在这里插入图片描述
2.2 贡献
  • 提出了自蒸馏的训练框架,使得模型在不增加大小,flops和时间的基础上,提高模型的精度。
  • 自蒸馏提供了一个可在不同深度执行的单一神经网络,允许在资源有限的边缘设备上进行自适应的精度-效率权衡。即:我们可以在原始网络的基础上,根据资源的要求在进行网络的裁剪(分成很多浅层网络)。
  • 在常用的5种卷积模型和2种数据集上进行了实验,发现使用本文所提出的的方法得到的结果都比自学习的方法要好。

3.实验和结果

3.1 实验
  • 5个常用的模型:ResNet,WideResNet,Pyramid ResNet,ResNeXt,VGG
  • 两个数据集:cifar100 和ImageNet
3.2 结果
  • 不同模型在cifar100上,使用本文方法和不使用本文方法的结果对比:
    在这里插入图片描述

1.从实验的结果可以看出,无论是哪种模型,使用本文方法训练后的模型精度都会比直接训练的模型精度高。
2.针对大部分模型,当网络截取0.75 的时候,得到模型的精度已经比基准模型要好了。
3.集成的结果比使用本文方法训练后全部网络效果要好。

  • 不同模型在ImageNet上,使用本文方法和不使用本文方法的结果对比:
    在这里插入图片描述

1.从实验的结果可以看出,实验结果和cifar100上的结果类似。

  • 不同方法在cifar100和不同模型上的结果对比,其中baseline是不采用蒸馏方法得到的结果,其余的都采用了蒸馏的方法。
    在这里插入图片描述

1.从表中的结果可以看出,使用蒸馏方法训练得到的模型精度比不使用蒸馏得到的要高。
2.本文所提方法得到的精度都要比其他蒸馏方法的结果要高。

  • 本文方法与使用深度监督方法在cifar100和不同模型上的结果对比。
    在这里插入图片描述

1.通过表中你的结果可以看出,无论哪种模型,本文所提出的的方法相比于只是用深度监督方法的结果要好。

  • 本文方法在模型速度和精度方面的权衡结果。
    在这里插入图片描述

1.初始网络的层数越深,则加速效果会更加明显!
2.从实验的结果来看,在几乎相同的裁剪率下,legr算法得到的模型的精度比本文提出的方法要高一些!
3.是否可以将网络拆分的更多,使得速度的增加粒度更细

4.总结和展望

4.1 总结
  • 提出的自蒸馏训练框架能够大大的增加训练后模型的精度。
  • 相比于传统的蒸馏方法,提出了一段式的蒸馏方法,将模型的训练时间缩短。
  • 相比于其他改进的蒸馏方法,模型的精度得到提升
  • 不仅可以提升模型的精度,还可以在一定精度的要求下,对模型的结构进行裁剪。
4.2 展望
  • Automatic adjustment of newly introduced hyperparameters
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self 的相关文章

随机推荐

  • IT项目管理(4)

    文章目录 联合同学做一个年级微信公众号加强各班相互了解 联合活动等 请编制项目章程和项目管理计划 指导该项目实施与运营 必须包含 WBS 和 甘特图 项目章程 测量目的 可测量的项目目标和相关的成功标准 高层级需求 高层级项目描述 边界定义
  • 【webots教程】你在webots搭建的第一个仿真环境

    系列文章目录 webots教程 简介与软硬件要求 webots教程 安装 webots教程 关于webots的超详细介绍 webots教程 你在webots搭建的第一个仿真环境 webots教程 编写你的第一个控制器 webots教程 简单
  • AI工程师职业经验指南——前新浪微博资深算法工程师告诉你怎样成为一名合格的推荐系统工程师

    本文转载自 程序员 杂志2017年11月期 推荐系统工程师成长路线图 Item based collaborative filtering recommendation algorithms 这篇文章发表于2001年 在Google学术上显
  • Android完全退出程序

    有过Android开发经验的人都知道 应用程序点击返回键或者代码显示调用了Activity finish 方法都无法完全退出 他们还在进程中 下面分享下Android客户端完全退出程序的方法 1 添加权限
  • WPS VAB支持库下载

    WPS VAB支持库下载 WPS VAB支持库下载 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Smar
  • Linux进程编程(PS: exec族函数、system、popen函数)

    目录 1 进程相关概念 程序和进程 查看系统中的进程 ps指令 top指令 进程标识符 使用getpid 获取 父进程 子进程 2 创建进程fork 进程创建发生了什么 C程序的存储空间如何分配 3 创建进程vfork 区别fork 4 进
  • cifar数据集介绍及到图像转换的实现

    CIFAR是一个用于普通物体识别的数据集 CIFAR数据集分为两种 CIFAR 10和CIFAR 100 The CIFAR 10 and CIFAR 100 are labeled subsets of the 80 million ti
  • pandas笔记(2)——导入excel、csv、txt、sql文件

    导入Excel文件 导入xlsx文件可以使用read excel 基本导入 为避免文件路径里的 被转义 需要在路径前面加转义符 r import pandas as pd df pd read excel r C Users 13513 D
  • git提交代码流程

    当我们从git仓库拉去代码后 我们当前分支将会是master 然后在实际工作中 规范要求我们创建自己的分支 开发后再进行合并 那么这一整个流程是啥样的呢 流程 1 创建自己的分支 git checkout b feat mybranch 2
  • C++11继承构造函数在类中的使用

    继承构造函数 概念 衍生问题 使用示例 注意 扩展使用 函数 示例代码 输出结果 注意 概念 继承构造函数在C 11特性中随之提及 其大概可以理解为 解决了派生类无法直接使用基类中的构造函数的这一问题 正常情况下 基类定义了自己的构造函数
  • Java如何编写无返回值的方法的单元测试

    有一个方法 他的返回值是void也就是说 我们无法对方法的返回值进行断言 但是 既然这个方法是无返回值的方法 那么他一定修改了对象的状态 成员变量 或是进行了输入输出 向某个窗口发送消息 与某个进程通讯 总之 他是有副作用的 如果没有任何副
  • AI催生教育行业“焦虑症”,加拿大高校用机器人教学来解

    过去几年间 安大略省南部的高等院校中涌现出许多类人机器人 这些机器人可以在工程训练 健康护理和皮肤医学等方面为学生们提供帮助 今年六月 麦克马斯特大学和瑞尔森大学通信与设计学院 FCAD 合力引进了由日本电信巨头SoftBank打造的类人机
  • 模块电路选型(7)----人机交互模块

    系列文章目录 1 电源模块 2 主控模块 3 传感器模块 4 通信模块 5 电机驱动模块 6 存储模块 7 人机交互模块 文章目录 前言 一 按键 1 触摸按键 前言 送给大学毕业后找不到奋斗方向的你 每周不定时更新 牛客网 构建从学习到职
  • 【line-height】 line-height详解

    1 line height是什么 w3school定义使用line height属性定义行与行之间的距离 也就是一个行的行高 它不允许使用负值 使用在文本行的时候line height 与 font size 的计算值之差 在 CSS 中成
  • PCE投稿要求

    进入PCE的投稿网址 http mc manuscriptcentral com pce 查了一下 大家都建议创建ORCID号 于是按照指示创建了 蓝色笔圈起来的是一些投稿指导 于是打开Instructions Forms Instruct
  • Flink checkPoint和SavePoint

    savepoint和checkpoint都是flink为容错提供的强大功能特性 能够自动或手动保存job的运行状态 两者区别 checkpoint 应用定时触发 用户保存状态 会过期 内部应用失败重启的时候启用 但是手动cancel时 会删
  • nginx配置转发日志

    http include mime types default type application octet stream log format main remote user time local http x Forwarded fo
  • Vue3 icons 图标无效

    问题描述 需要在账号 密码处加上icon图标 但是引用完element plus icons之后 还是不行 不显示icon图标 后面发现 当前版本的emement plus的icon图标不能直接使用了 前置条件 npm install el
  • Go 服务自动收集线上问题现场

    前言 对于 pprof 相信熟悉 Go 语言的程序员基本都不陌生 一般线上的问题都是靠它可以快速定位 但是实际项目中 很多时候我们为了性能都不会开启它 但是出了问题又要靠它来分析 好在 go zero 已经帮我们很好的集成进来了 我们只需要
  • 深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

    文章目录 1 摘要和背景 1 1 摘要 1 2 背景 2 方法和贡献 2 1 方法 2 1 1 训练过程 2 1 2 loss介绍 2 2 贡献 3 实验和结果 3 1 实验 3 2 结果 4 总结和展望 4 1 总结 4 2 展望 主要贡