文章目录

  • 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 展望

主要贡献:基于网络蒸馏方法,提出了一种提升裁剪后模型的精度的方法!将训练时间大大缩短!
推荐指数: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

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

  1. 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

    文章目录 1.摘要和介绍 1.1摘要部分 2.背景和方法 2.1 背景 2.2 贡献 2.3 方法 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅 ...

  2. (论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks

    目录 论文解读之: High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks ...

  3. 深度模型压缩论文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression

    文章目录 1.摘要和背景 1.1 摘要 1.2 背景 2.方法和贡献 2.1 方法 2.2 贡献 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅读 ...

  4. 论文阅读:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    文章目录 论文总述 2.感受野的定义 3.理论感受野大小的计算 4.3种增加感受野的操作 5.感受野中心像素的值对输出feature map 的response影响比边缘的像素更大 6.如何知道fea ...

  5. 论文阅读笔记:Retinal vessel segmentation based on Fully Convolutional Neural Networks

    基于全卷积神经网络的视网膜血管分割 关键词:全卷积神经网络.平稳小波变换.视网膜眼底图像.血管分割.深度学习 摘要 本文提出了一种新的方法,将平稳小波变换提供的多尺度分析与多尺度全卷积神经网络相结合, ...

  6. 《每日论文》ImageNet Classification with Deep Convolutional Neural Networks

    这篇论文是剖析 CNN 领域的经典之作,也是入门 CNN 的必读论文.作者训练了一个面向数量为 1.2 百万的高分辨率的图像数据集 ImageNet, 图像的种类为 1000 种的深度卷积神经网络. ...

  7. 【压缩感知】Convolutional Neural Networks for Non-iterative Reconstruction of Compressively Sensed Images

    1.基本信息 论文:S. Lohit, K. Kulkarni, R. Kerviche, et al, Convolutional Neural Networks for Noniterative ...

  8. DNN模型压缩:深度神经网络压缩论文总结

    1.HanS, Mao H, Dally W J. Deep Compression: Compressing Deep NeuralNetworks with Pruning, Trained Qu ...

  9. 深度模型压缩技术在智能座舱方案的探索与实践

    桔妹导读:近年来,智能汽车的概念已经成为了主流的发展趋势.汽车座舱在智能汽车的场景中成为关键一环.将汽车座舱智能化可以提高整体乘客乘坐品质和驾驶员行驶体验,智能座舱的功能丰富,其中多数核心算法是基于深 ...

最新文章

  1. JavaScript的Cookie操作
  2. ActionScript3.0程序开发工具
  3. ITK:从图像区域中随机选择像素而不进行替换
  4. 从getmemery()函数看内存管理、函数传参等一系列问题
  5. 联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
  6. 在web开发中,为什么前端比后端更得到转行程序员的青睐?必看
  7. C#:foreach语句,yield语句
  8. 详解Java动态代理机制
  9. win10远程桌面查看对方计算机名,教你如何使用Win10远程桌面控制他人电脑?
  10. 花花公子 243线SLOT
  11. 计算机组成原理GLK,计算机组成原理课件第一讲.ppt
  12. LAMBDA表达式常用写法
  13. RocketMQ集群(2主2从)搭建详细步骤
  14. 阿里云ACP云计算错题集1-40
  15. 比炒币还香的在线作图工具draw.io
  16. matlab 游戏手柄,QtGamepad模块与游戏手柄交互小示例
  17. vue3.0 组件传值
  18. 贵州支教之第三天(11月9日)
  19. 【莹伙丛】javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringAppl
  20. DE、SaDE、JADE、SHADE、L-SHADE算法整理

热门文章

  1. 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...
  2. java监听机制_详解java的事件监听机制和观察者设计模式
  3. nmf算法 python_NMF算法简介及python实现
  4. 延边大学c语言题库,延边大学-SPOC官方网站
  5. 小数点化分数的过程_分数和小数的互化
  6. python i开发工具_Python轻量级开发工具Genay使用
  7. 解决mapgis比例尺不正确问题
  8. 【转】Ubuntu下使用sysv-rc-conf管理服务
  9. jQuery Ajax 如何设置Timeout
  10. java +号变空格_base64码通过http传输 +号变 空格 问题解决