美文网首页
轻量化网络之SqueezeNet

轻量化网络之SqueezeNet

作者: 残剑天下论 | 来源:发表于2020-05-15 19:29 被阅读0次

一、前言

本文介绍ICLR 2017的SqueezeNet。近些年来深层卷积网络的主要方向集中于提高网络的准确率。而对于相同的正确率,更小的CNN架构可以提供如下优势:

  • 在分布式训练中,与服务器通信需求更小;
  • 参数更少,从云端下载模型的数据量少;
  • 更适合在FPGA等内存受限的设备上部署。

基于这些优点,这篇论文提出了SqueezeNet。它在ImageNet上实现了和AlexNet相同的准确率,但是只使用了AlexNet \frac{1}{50}的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到0.5M,这是AlexNet的\frac{1}{510}

二、SqueezeNet

1、设计思想

1)使用1×1卷积来替代部分的3×3卷积,可以将参数减少为原来的1/9;
2)减少输入通道的数量,这一点通过squeeze层实现,也能减少参数量;
3)将下采样操作延后,可以给卷积层提供更大的特征图:更大的激特征图保留了更多的信息,可以获得更高的分类准确率。

2、Fire Module

Fire Module是SqueezeNet中的基础构建模块,Fire Module如Figure1所示 :

  • squeeze convolution layer: 只使用1x1卷积核;
  • expand layer: 使用1x1和3x3卷积核的组合;
  • Fire Module 有3个可调的超参数:s_{1 \times 1}(squeeze convolution layer中1x1卷积核的个数);e_{1 \times 1}(expand layer中1x1卷积核的个数);e_{3 \times 3}(expand layer中3x3卷积核的个数);
  • 使用Fire Module的过程中,令 s_{1 \times 1} < e_{1 \times 1} + e_{3 \times 3},这样squeeze layer可以限制输入通道数量。

3、网络结构

SqueezeNet以卷积层conv1开始,接着使用8个Fire modules (fire 2-9),最后以卷积层conv10结束。每个Fire Module中的Filter数量逐渐增加,并且在conv1,fire4,fire8, 和 conv10这几层之后使用步长为2的Max-Pooling,即将池化层放在相对靠后的位置。

如图,左边为原始版本的SqueezeNet,中间为包含简单跳跃连接的改进版本,最右侧为使用复杂跳跃连接的改进版本。更加具体的细节如Table1所示:

参数量的计算过程:
例如我们看fire2这个模块在剪枝前的参数是11920,这个参数是怎么计算得到的呢?fire2之前的maxpool1层的输出是55 * 55 * 96,之后接着的Squeeze层有16个的1*1*96卷积filter,注意这里是多通道卷积,为了避免与二维卷积混淆,在卷积尺寸末尾写上了通道数。这一层的输出尺寸为55*55*16,之后将输出分别送到expand层中的1*1*16(64个)和3*3*16(64个)进行处理,注意这里不对16个通道进行切分(就是说这里和MobileNet里面的那种深度可分离卷积不一样,这里就是普通的卷积)。为了得到大小相同的输出,对3*3*16的卷积输入进行尺寸为1的zero padding。分别得到55*55*6455*55*64的大小相同的特征图。将这两个特征图concat到一起得到55*55*128大小的特征图,加上bias参数,这样总参数为(1 * 1 * 96 + 1) * 16 + (1*1*16+1) * 64 + (3*3*16+1) * 64 = (1552 + 1088 + 9280) = 11920

其他细节:

  • 为了使1*13*3卷积核输出的特征图尺寸相同,在expand模块中,给3*3卷积核的原始输入添加一个像素的边界(zero-padding);
  • squeeze layer和expand layer都是用ReLU作为激活函数;
  • 在fire9模块之后,使用Dropout,比例取50%;
  • 注意到SqueezeNet中没有全连接层,这借鉴了Network in Network的思想;
  • 训练过程中,初始学习率设置为0.04,,在训练过程中线性衰减学习率。

4、实验结果

SqueezeNet和AlexNet以及其他压缩算法比较的结果如Table2所示:

可以看到,SVD方法能将预训练的AlexNet模型压缩为原来的\frac{1}{5},top1和top5正确率几乎不变。模型压缩能将AlexNet压缩到原来的\frac{1}{35},正确率基本不变。SqueezeNet的压缩倍率可以达到50倍以上,并且准确率还有略微的提升。注意到即使使用float32数值来表示模型参数,SqueezeNet也比之前压缩率最高的模型更小,同时表现更好。如果将模型压缩策略用在SqueezeNet上,使用33%的稀疏表示和int8量化,会得到一个仅有0.66M的模型。进一步,如果使用6比特量化,会得到仅有0.47MB的模型,同时准确率不变。此外,结果表明模型压缩不仅对包含庞大参数参数量的CNN网络起作用,对于较小的网络,例如SqueezeNet也是有用的。将SqueezeNet的网络结构和模型压缩结合起来可以将原模型压缩到\frac{1}{510}

相关文章

网友评论

      本文标题:轻量化网络之SqueezeNet

      本文链接:https://www.haomeiwen.com/subject/ofmrohtx.html