美文网首页
SqueezeNet: AlexNet-Level Accura

SqueezeNet: AlexNet-Level Accura

作者: 表达_ | 来源:发表于2019-09-25 16:43 被阅读0次

    Abstract

    最近关于深度卷积神经网络的研究主要集中于提升正确率。对于相同的正确率水平,往往能够确定出多种CNN模型。在同等正确率条件下,更小规模的CNN架构可以提供如下的三个优势:
    1)在分布式训练中,与服务器通信需求更小;
    2)在云端向自动驾驶汽车输出一个新模型时,更小模型需要的带宽更小(参数更少,从云端下载模型的数据量小);
    3)在FPGA和有内存限制的其他硬件设备上更加方便部署更小的模型(更适合在FPGA等内存受限的设备上部署)。
    为了达到上述优点(基于以上优点),本文提出SqueezeNet。SqueezeNet在ImageNet数据集上达到与AlexNet相同水平的准确率的情况下,仅仅用了小于其50倍的参数。此外,结合模型压缩技术,我们能够压缩SqueezeNet模型到0.5MB(比AlexNet模型小510倍)。(它在ImageNet上实现了与AlexNet相同的正确率,但是只使用了1/50的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到0.5MB,这是AlexNet参数的1/510)。

    1 Introduction and Motivation

    对于一个给定的正确率,通常可以找到多种模型可以达到相应的正确率水平。使用更小参数的CNN模型能够提供以下几个优势:

    1) 更高效的分布式训练
    服务器之间的通信是分布式CNN训练的重要限制因素,对于分布式数据并行训练,通信需求和模型参数数量成正相关。所以小模型对通信需求更低而训练更快。
    2)减小下载模型到客户端的额外开销
    比如自动驾驶特斯拉公司,经常需要更新客户端模型。更小的模型可以减少通信的额外开销,使得更新更加通畅。
    3)便于FPGA和嵌入式硬件上的部署。
    FPGA通常只有不到10MB的片内储存空间,没有片外存储器。

    2 Related work

    2.1 Model Compression

    常用的模型压缩技术有:
    (1)奇异值分解;
    (2)网络剪枝:使用网络剪枝和稀疏矩阵
    (3)深度压缩:使用网络剪枝、量化(quantization)和霍夫曼编码
    (4)硬件加速(EIE)

    2.2 CNN Microarchitecture

    在设计深度网络架构的过程中,如果手动选择每一层的卷积核维度显得过于繁复。通常先构建由几个卷积层组成的小模块,再将模块堆叠形成完整的网络。定义这种模块的网络为CNN Microarchitecture。

    2.3 CNN Macroarchitecture

    与模块相对,定义整个网络架构为CNN Macroarchitecture。在整个完整的网络架构中,深度是一个重要的参数。

    2.4 Neural Network Design Space Exploration

    由于超参数繁多,深度神经网络具有很大的设计空间(Design Space)。通常进行设计空间探索的方法有:
    (1)贝叶斯优化(bayesian optimization)
    (2)模拟退火(simulated annealing)
    (3)随机搜索(randomized search)
    (4)遗传算法(genetic algorithms)

    3 SqueezeNet:在更少的参数情况下保持模型的精度

    这篇文章主要目的是寻找保持高精度同时参数更少的网络结构,因此使用以下三个主要策略来减少SqueezeNet设计参数:

    (1)使用1x1的卷积代替3x3的卷积:参数量减少为原来的1/9

    (2)减少3x3卷积的输入通道数

    (3)将下采样操作延后,以获得更大的激活图:更大的激活特征图能够保留更多的信息,可以提供更高的分类准确率。

    (1)和(2)可以显著减少模型的参数量,(3)可以在参数量一定时提高正确率。

    3.2 The Fire Module

    Fire Module时构建SqueezeNet的基本模块,以下定义Fire Module

    1.PNG

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

    3.3 The squeeze architecture

    SqueezeNet 以卷积层(conv1)开始,接着使用了8个Fire Modules,最后以卷积层(conv10)结束。每个Fire module中的卷积数量逐渐增加,并且在conv1,fire4,fire8和conv10这几层后使用步长为2的max-pooling,即将池化层放在相对靠后的位置,这是使用了以上的策略(3)。


    2.PNG

    如上图,左边是原始的SqueezeNet,中间是包含simple bypass的改进版本,右边是使用了complex bypass的改进版本。


    image.png

    3.3.1 Other SqueezeNet Details

    以下是网络设计的要点和理念:
    1)为了使1\times13\times3卷积核输出的特征图有相同的尺寸,在expand module中,给3\times3中的原始输入添加一个像素的边界(zero padding)。
    2)squeeze 和 expand layers两者都使用RELU作为激活函数。
    3)在fire 9 module之后,使用Dropout,随即丢弃的概率设置为50%。
    4)在训练过程中,初始学习率设置为0.04,在训练过程中线性降低学习率。更多的训练协议的细节请参考GitHub的配置文件。
    5)由于Caffe框架中不支持使用两个不同尺寸的卷积核,在expand layer中实际是使用了两个单独的卷积层(1\times13\times3),最后将这两层的输出连接起来,这在数值上等价于使用单层但是包含不同尺寸的卷积核。
    在Github上还有SqueezeNet在其他框架下的实现:Mxnet、Chainer、Keras、Torch。

    4 Evaluation of SqueezeNet

    在表2中,以AlexNet为标准来比较不同压缩方法的效果。


    image.png

    SVD方法能够将预训练的AlexNet模型压缩为原先的1/5,top1正确率略微降低。网络剪枝方法能够将模型压缩为原来的1/9,top1和top5的正确率几乎保持不变。深度压缩能将模型压缩为原来的1/35,正确率基本不变。SqueezeNet的压缩倍率可以达到50,并且正确率还能有略微提升。注意到即使使用未进行压缩的32位数值精度来表示模型,SqueezeNet也比压缩率最高的模型更小,同时模型的表现也更好。
    如果使用深度压缩(Deep Compression)的方法用在SqueezeNet上,使用33%的稀疏表示和8位数值精度,会得到一个仅有0.66MB的模型。更进一步,如果使用6位数值精度,会得到仅有0.47MB的模型,同时精度保持不变。因此,结果表明深度压缩不仅对包含庞大参数数量的CNN网络有作用,对于较小的网络,比如SqueezeNet,也是有用的。将SqueezeNet的网络架构创新和深度压缩方法结合起来可以将模型压缩为原来的1/510,并且保持精度不变。

    5 CNN Microarchitecture design space exploration

    在SqueezeNet中,每一个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卷积核的个数)。SqueezeNet一共有8个Fire Module即一共24个超参数。下面讨论其中一些重要超参数的影响。为方便研究,定义一些元参数:

    1. base_e:Fire Module中Expand layer中卷积核的数目;
    2. freq: fire module的个数;
    3. incre_e:在没freq个fire module之后增加的expand layer卷积核的个数;
    4. e_i:第i个module中,expand layer的卷积核个数。
    5. SR:压缩比,即the squeeze ratio,为squeeze layer中卷积核个数除以Fire module中expand layer的卷积核个数得到的比例;
    6. pct_{3\times3}:在expand layer中3\times3卷积核个数所占比例。
      下图为实验结果:
      image.png

    6 CNN Macroarchitecture design space exploration

    受ResNet启发,以下探究旁路连接(bypass connection)的影响。在图2展示了三种不同的网络架构。下表给出了实验结果。


    image.png

    simple bypass方式的旁路连接正确率提升最多。

    7 Conclusion

    在SqueezeNet提出不久,Dense-Sparse-Dense(DSD)使用了新的方法对网络模型进行压缩同时提升了精度。

    相关文章

      网友评论

          本文标题:SqueezeNet: AlexNet-Level Accura

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