SqueezeNet: AlexNet-Level Accuracy With 50x Fewer Parameters And <0.5MB Model Size 文章解读

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)使用了新的方法对网络模型进行压缩同时提升了精度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354