文献阅读1 SqueezeNet:一种参数量只有AlexNet的1/50且模型小于0.5MB的网络
一、基本信息
信息 | 内容 |
---|---|
论文名称 | SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size |
论文链接 | https://www.researchgate.net/publication/301878495 |
代码链接 | https://github.com/DeepScale/SqueezeNet |
首次上传 | 2020/11/7 |
修改时间 | 2020/11/11 |
关键词 | 模型压缩 、轻量化模型、Fire module |
二、笔记正文
1. 摘要
最近对深度卷积神经网络的研究主要集中在提高准确性上,对于给定的精度级别,通常可以找到多个达到该精度级别的CNN架构。在精度相当的情况下,较小的CNN架构有很多优点:
- (1)更高效的分布式训练,小模型参数小,网络通信量减少
- (2)便于模型更新,模型小,客户端程序容易更新
- (3)利于部署在特定硬件或资源有限的平台上,如FPGA
因此作者提出了一种叫做挤压网的小型CNN架构。SqueezeNet能达到AlexNet级别的精度且参数量只有AlexNet的1/50,此外,借助模型压缩技术,将SqueezeNet压缩到小于0.5MB
关键词:模型压缩、小型卷积网络架构
2.研究背景及目的
深度神经网络的轻量化,使深度神经网络能在移动端部署
SqueezeNet是作者在广泛探索CNN架构设计空间的同时发现的几种新的CNN网络之一。
其希望SqueezeNet能够启发读者思考和探索CNN架构设计空间中广泛的可能性,并以更系统的方式进行探索。
3.研究思路与网络架构
作者Han等将CNN模型的研究与设计思路总结为以下四个方面:
- (1)模型压缩:对pre-trained的模型进行压缩,使其变成小模型,如采用网络剪枝和量化等手段
- (2)CNN微观结构:对单个卷积层进行优化设计,如采用1x1的小卷积核,还有很多采用可分解卷积(factorized
convolution)结构或者模块化的结构(blocks, modules) - (3)CNN宏观结构:网络架构层面上的优化设计,如网路深度(层数),还有像ResNet那样采用跳跃连接
- (4)设计空间:不同超参数、网络结构,优化器等的组合优化。
基于以上思路,作者提出了一种名叫 Fire module的新结构,并在模型构建中进行以下设计:
- (1)将3x3卷积核替换为1x1卷积核
从降低网络参数考虑,作者选择将这些卷积核中的大部分设置为1x1卷积核,因为1x1卷积核比3x3卷积核的参数可以降低9倍; - (2)减少3x3卷积核的输入通道数
计算公式:参数总量 = (输入通道数) x (卷积核数) x 3 x 3
从上式可知,为了在一个CNN中保持较小的参数总量,不仅要减少3x3卷积核的数量,而且要减少3x3卷积核的输入通道的数量。
在此,作者使用挤压层将输入通道的数量减少到3x3个卷积核。
- (3)在网络中延迟下采样,使卷积层具有较大的激活映射
在卷积网络中,每个卷积层都会产生一个空间分辨率至少为1x1且通常要比1x1大得多的输出激活映射。
上图即是Fire module 的基本结构示意图,正如示意图所示,SqueezeNet网络基本单元都采用了这种模块化的卷积结构Fire module ,Fire module主要包含两层卷积操作:一是采用1x1卷积核的squeeze层;二是混合使用1x1和3x3卷积核的expand层。
上图是SqueezeNet的网络结构示意图,正如示意图所示,很明显,该网络由大量的Fire module组成,不同的是左图为原始的SqueezeNet,中图和右图是引入借鉴了ResNet跳跃连接的改进型SqueezeNet。
上图是从论文中截取的SqueezeNet各层参数表格,从表格中以及论文所述可以看出以下内容:
- (1)在Fire module中,expand层采用了两种卷积核1x1和3x3,其步长(stride)均为1;
- (2)Fire module中所有卷积层的激活函数采用的是ReLU;
- (3)Fire9层后采用了dropout,其中keep_prob=0.5;
- (4)SqueezeNet没有全连接层,而是采用了全局的avgpool层;
- (5)作者训练采用线性递减的学习速率,初始学习率为0.04。
4.贡献点
- 在这篇文章中,作者提出了一些步骤,以使卷积神经网络的设计空间探索更有章法。为了达到这个目标,提出了SqueezeNet,一种与AlexNet同精度、参数量只有AlexNet的1/50且模型小于0.5MB的CNN网络,在作者前期研究基础上,宋汉等人对SqueezeNet和model compression进行了进一步的研究,提出了一种新的方法称为稠密-稀疏- 稠密 【Dense-Sparse-Dense(DSD)】
- 有利于小型网络模型在FPGA等资源有限的硬件上的部署实现。 在SqueezeNet的基础上Gschwend提出了一种SqueezeNet的变体,并在FPGA上实现了它。其能够将挤压式模型的参数完全存储在FPGA并消除FPGA对芯片外存储器访问加载模型参数的需求。
5.SqueezeNet的代码实现
待总结更新…