目录

论文

介绍

详解

SqueezeNet的压缩策略

Fire模块

SqueezeNet的网络架构

SqueezeNet性能


论文

SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size

https://arxiv.org/abs/1602.07360  2016

介绍

从LeNet5到DenseNet,反应卷积网络的一个发展方向:提高精度。这里我们开始另外一个方向的介绍:在不大幅降低模型精度的前提下,最大程度的提高运算速度

提高运算所读有两个可以调整的方向:

  1. 减少可学习参数的数量;
  2. 减少整个网络的计算量。

SqueezeNet正是诞生在这个环境下的一个精度的网络,它能够在ImageNet数据集上达到AlexNet近似的效果,但是参数比AlexNet少50倍

结合他们的模型压缩技术 Deep Compression,模型文件可比AlexNet小510倍。Deep Compression的论文地址:https://arxiv.org/abs/1510.00149

详解

SqueezeNet的压缩策略

1. 将 3*3 卷积替换成 1*1 卷积:通过这一步,一个卷积操作的参数数量减少了9倍;
       2.减少 3*3 卷积的通道数:一个 3*3 卷积的计算量是 3*3*M*N(其中 M , N 分别是输入Feature Map和输出Feature Map的通道数),作者任务这样一个计算量过于庞大,因此希望将 M , N 减小以减少参数数量;
       3. 将降采样后置:作者认为较大的Feature Map含有更多的信息,因此将降采样往分类层移动。注意这样的操作虽然会提升网络的精度,但是它有一个非常严重的缺点:即会增加网络的计算量。

Fire模块

Fire module输入的feature map为H*W*M的,输出的feature map为H*M*(e1+e3),可以看到feature map的分辨率是不变的,变的仅是维数,也就是通道数,这一点和VGG的思想一致。

首先,H*W*M的feature map经过Squeeze层,得到S1个feature map,这里的S1均是小于M的,以达到“压缩”的目的,详细思想可参考Google的Inception系列。

其次,H*W*S1的特征图输入到Expand层,分别经过1*1卷积层和3*3卷积层进行卷积,再将结果进行concat,得到Fire module的输出,为 H*M*(e1+e3)的feature map。

fire模块有三个可调参数:S1,e1,e3,分别代表卷积核的个数,同时也表示对应输出feature map的维数,在本文提出的SqueezeNet结构中,e1=e3=4s1 。

SqueezeNet的网络架构

网络结构设计思想,同样与VGG的类似,堆叠的使用卷积操作,只不过这里堆叠的使用本文提出的Fire module

SqueezeNet的几个实现,左侧是不加short-cut的SqueezeNet,中间是加了short-cut的,右侧是short-cut跨有不同Feature Map个数的卷积的。还有一些细节图3中并没有体现出来:

  1. 激活函数默认都使用ReLU;
  2. fire9之后接了一个rate为0.5的dropout;
  3. 使用same卷积。

SqueezeNet性能

从网络结构来看,SqueezeNet也算是设计精良了,但是最终性能还是要实验说话。论文作者将SqueezeNet与AlexNet在ImageNet上做了对比,值得注意的是,不仅对比了基础模型之间的差异,还对比了模型压缩的性能,其中模型压缩主要采用的技术有SVD,网络剪枝(network pruning)和量化(quantization)等。

具体的对比结果如下图所示。首先看一下基准模型的性能对比,SqueezeNet的Top-1优于AlexNet,Top-5性能一样,但是最重要的模型大小降低了50倍,从240MB->4.8MB,这个提升是非常有价值的,因为这个大小意味着有可能部署在移动端。

作者并没有止于此,而是继续进行了模型压缩。其中SVD就是奇异值分解,而所谓的网络剪枝就是在weight中设置一个阈值,低于这个阈值就设为0,从而将weight变成系数矩阵,可以采用比较高效的稀疏存储方式,进而降低模型大小。值得一提的Deep Compression技术,这个也是Han等提出的深度模型压缩技术,其包括网络剪枝,权重共享以及Huffman编码技术

这里简单说一下权重共享,其实就是对一个weight进行聚类,比如采用k-means分为256类,那么对这个weight只需要存储256个值就可以了,然后可以采用8 bit存储类别索引,其中用到了codebook来实现。关于Deep Compression详细技术可以参考上文中给出的Deep Compression论文。从下图中可以看到采用6 bit的压缩,SqueezeNet模型大小降到了0.47MB,这已经降低了510倍,而性能还保持不变。为了实现硬件加速,Han等还设计了特定的硬件来高效实现这种压缩后的模型,具体参考论文(https://arxiv.org/abs/1602.01528)。顺便说过题外话就是模型压缩还可以采用量化(quantization),说白了就是对参数降低位数,比如从float32变成int8,这样是有道理,因为训练时采用高位浮点是为了梯度计算,而真正做inference时也许并不需要这么高位的浮点,TensorFlow中是提供了量化工具的,采用更低位的存储不仅降低模型大小,还可以结合特定硬件做inference加速。

和AlexNet对比的结果:

除了上面的工作,作者还探索了网络的设计空间,包括微观结构和宏观结构,微观结构包括各个卷积层的维度等设置,宏观结构比如引入ResNet的短路连接机制

参考:SqueezeNet详解 - 知乎

CNN模型之SqueezeNet - 知乎

轻量级网络SqueezeNet相关推荐

  1. 【论文】轻量级网络squeezenet论文的详细翻译

    前言: 整体上翻译了squeezenet:AlexNet-level accuracy with 50X fewer paramenters and 0.5MB model size.这篇论文,便于英 ...

  2. 【目标检测】轻量级网络SqueezeNet

    文章目录 一. SqueezeNet:压缩再扩展 1.1 介绍 1.2 相关工作 1.2.1 模型压缩 1.2.2 CNN 微/宏 架构 1.3 SqueezeNet 1.3.1 设计策略 1.3.2 ...

  3. 轻量级网络SqueezeNet学习笔记

    目录 论文 介绍 详解 SqueezeNet的压缩策略 Fire模块 SqueezeNet的网络架构 SqueezeNet性能 论文 SqueezeNet: AlexNet-level accurac ...

  4. 14种轻量级网络综述 — 主干网络篇

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨VincentLee 来源丨晓飞的算法工程笔记 编辑丨极市平台 导读 早期的卷积神经很少考虑参数 ...

  5. 轻量级网络综述 — 主干网络篇

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 轻量级网络的核心是在尽量保持精度的前提下,从体积和速度两方面对网络进行轻量化改造,本文对轻量级网络进 ...

  6. 轻量级网络--ShuffleNet论文解读

    ShuffleNet ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 原文地址: ...

  7. 『高性能模型』轻量级网络梳理

    墙裂推荐:那些Network能work的本质究竟是啥? SqueezeNet 轻量化网络:SqueezeNet 2017年的文章,和后面的几篇文章一对比思路显得比较老套:大量的1*1的卷积和少量的3* ...

  8. 华为轻量级网络架构,幽灵网络(GhostNets)再升级——附源码下载

    关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2201.03297.p ...

  9. (四十七)论文阅读 | 轻量级网络之MobileNetV3

    简介 图1:论文原文 该论文基于神经架构搜索技术提出下一代轻量级网络结构, M o b i l e N e t V 3 {\rm MobileNetV3} MobileNetV3,实验结果表明该模型在 ...

最新文章

  1. Vuex 的应用场景
  2. python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
  3. python教程:有参装饰器
  4. 使用jenkins进行项目的自动构建部署
  5. python scikit库
  6. 51单片机入门——LCD1602
  7. 提取mkv文件中的字幕
  8. 中介效应、调节效应与交互作用咋回事?
  9. Kanban in Action 免积分下载
  10. Scratch精通之侦测的使用
  11. css空心图形,css画空心箭头
  12. xDM Land Patterns 封装工具使用笔记
  13. matlab中cond为啥比bet好,关于dpabi中bet步骤
  14. isBlank与isEmpty的区别
  15. xp运行linux软件下载,为你演示xp系统利用U盘直接运行Linux软件 的解决方案
  16. 时间序列的数据分析(六):指数平滑预测法
  17. 鸿蒙相符合的图片,鸿蒙操作系统亮相——目标是未来的物联网
  18. office365 ppt创意方法(3d模型)
  19. 服务器2003蓝屏A5修复,重装Win7系统开机蓝屏错误代码0X000000a5的修复方案
  20. English学习网站

热门文章

  1. PHP获取git提交信意_FakeGit:一个自欺欺人的好玩意
  2. 未来世界的超级计算机,中国超级计算机被超越了?美帝造史上最快电脑!
  3. 票据打印机-蓝牙的开关
  4. 福建厦门双十计算机竞赛,五大学科竞赛获奖名单公布 厦门两名学生保送清华北大...
  5. 三四月份面试阿里+腾讯IEG,有一些心得分享给大家(Java岗)
  6. RewriteCond 重写规则执行条件
  7. ss5 mysql radius_SS5+MYSQL
  8. java 递归终止_java中执行程序如何终止递归?
  9. F5服务器负载均衡原理
  10. 测试报告要求内容(标准)