简介
该论文也是旨在设计轻量级模型,文中首先指出设计轻量级模型的实际需求,然后提出诸多设计准则,并提出 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet。论文原文 源码
0. Abstract
当具有相当精度时,轻量级 C N N {\rm CNN} CNN拥有以下优势:分布式训练时更少的跨服务器间通信,算法部署时更少的带宽,部署在内存有限的硬件上。论文设计出一个轻量级模型 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet,相比于 A l e x N e t {\rm AlexNet} AlexNet,后者参数是它的 50 {\rm 50} 50倍,且大小小于 0.5 M B {\rm 0.5MB} 0.5MB。
论文贡献:(一)指出设计轻量级模型的实际必要性;(二)提出 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet;(三)探索轻量级模型的设计准则。
1. Introduction and Motivation
轻量级 C N N {\rm CNN} CNN具有以下优势:
More efficient distributed training. 服务器间的通信是限制 C N N {\rm CNN} CNN分布式训练扩展性的主要因素。对于数据的分布式并行训练,通信开销与模型参数成正比,及小模型的训练更快。
Less overhead when exporting new mdoels to clients. 更小的模型使得频繁更新部署在端侧的模型成为可能。
Feasible FPGA and embedded deployment. F P G A {\rm FPGA} FPGA通常仅有少于 10 M B {\rm 10MB} 10MB的存储空间,而小模型可以直接部署在上面。
2. Related Work
2.1 Model Compression
设计轻量级模型的一个思路是基于现有的模型,然后采取某种操作压缩模型,如使用 S V D {\rm SVD} SVD,模型剪枝,模型量化,霍夫曼编码等。
2.2 CNN Microarchitecture
使用模块化的设计代替一系列复杂的卷积操作,如 I n c e p t i o n {\rm Inception} Inception。
2.3 CNN Macroacchitecture
跨层和多模块连接是当前设计神经网络的主流方法。
2.4 Neural Network Design Space Exploration
以自动化的方式设计网络结构,如贝叶斯优化,模拟退火,随机搜索,遗传算法等。
3. SqueezeNet: Preserving Accuracy with Few Parameters
3.1 Architecture Design Strategies
Replace 3x3 filters with 1x1 filters.
Decrese the number of input channels to 3x3 filters.
Downsample late in the network so that convolution layers have large activation maps.
3.2 The Fire Module
F
i
r
e
{\rm Fire}
Fire模块定义为一个压缩卷积和一个扩展卷积的组合。
这里定义三个参数, s 1 x 1 s_{1x1} s1x1表示压缩卷积层中卷积核的数量, e 1 x 1 e_{1x1} e1x1表示扩展卷积层中 1 × 1 {\rm 1\times1} 1×1卷积核的数量, e 3 x 3 e_{3x3} e3x3表示扩展卷积层中 3 × 3 {\rm 3\times3} 3×3卷积核的数量。
3.3 The SqueezeNet Architecture
关于 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet的几点:
- 为了使 1 × 1 {\rm 1\times1} 1×1卷积和 3 × 3 {\rm 3\times3} 3×3卷积的输出结果大小相同,对后者进行加零填充;
- 使用 R e L U {\rm ReLU} ReLU激活函数;
- 在 f i r e 9 {\rm fire9} fire9后使用 0.5 0.5 0.5的 D r o p o u t {\rm Dropout} Dropout;
- 没有全连接层;
- 初始学习率为 0.04 0.04 0.04,然后以线性方式减小;
- 由于 C a f f e {\rm Caffe} Caffe不包含多个分辨率的卷积核,使用通道拼接的方式得到最终结果。
4. Evaluation of SqueezeNet
5. CNN Microarchitecture Design Space Exploration
论文提出针对小型网络的设计策略。
5.1 CNN Microarchitecture Metaparameters
如上,在 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet中,每个 F i r e {\rm Fire} Fire模块定义了三个参数,即 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet中的 8 8 8个 F i r e {\rm Fire} Fire模块共有 24 24 24个参数。为了便于类似 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet结构的设计,论文使用元参数来控制总参数的数量。定义 b a s e e base_e basee表示第一个 F i r e {\rm Fire} Fire模块中扩展卷积层中卷积核的数量,然后每 f r e q freq freq个 F i r e {\rm Fire} Fire模块增加 i n c r e incr_e incre个卷积核。以此,对于第个 i i i个 F i r e {\rm Fire} Fire模块而言,扩展层中卷积核的数量为: e i = b a s e e + ( i n c r e e ∗ ⌊ i f r e q ⌋ ) (1) e_i=base_e+\left(incre_e*\left\lfloor\frac{i}{freq}\right\rfloor\right)\tag{1} ei=basee+(incree∗⌊freqi⌋)(1)
在扩展层中同时存在 1 × 1 {\rm 1\times1} 1×1卷积和 3 × 3 {\rm 3\times3} 3×3卷积,即 e i = e i , 1 x 1 + e i , 3 x 3 e_i=e_{i,1x1}+e_{i,3x3} ei=ei,1x1+ei,3x3卷积,定义变量 p c t 3 x 3 pct_{3x3} pct3x3表示 3 × 3 {\rm 3\times3} 3×3卷积核的比例。即满足: e i , 3 x 3 = e i ∗ p c t 3 x 3 , e i , 1 x 1 = e i ∗ ( 1 − p c t 3 x 3 ) (2) e_{i,3x3}=e_i*pct_{3x3},\ e_{i,1x1}=e_i*(1-pct_{3x3})\tag{2} ei,3x3=ei∗pct3x3, ei,1x1=ei∗(1−pct3x3)(2)
最后,压缩层中卷积核的数量使用元参数 S R SR SR控制,满足: s i , 1 x 1 = S R ∗ ( e i , 1 x 1 + e i , 3 x 3 ) (3) s_{i,1x1}=SR*(e_{i,1x1}+e_{i,3x3})\tag{3} si,1x1=SR∗(ei,1x1+ei,3x3)(3)
对应上图,各参数为 b a s e e = 128 base_e=128 basee=128, i n c r e = 128 incr_e=128 incre=128, p c t 3 x 3 = 0.5 pct_{3x3}=0.5 pct3x3=0.5, f e r q = 2 ferq=2 ferq=2, S R = 0.12 SR=0.12 SR=0.12.。
5.2 Squeeze Ratio
主要是前面定义的参数 S R SR SR的使用。
5.3 Trading off 1x1 and 3x3 Filters
主要是 1 × 1 {\rm 1\times1} 1×1卷积和 3 × 3 {\rm 3\times3} 3×3卷积的使用。
6. CNN Macroarchitecture Design Space Exploration
在本部分,作者探讨其它的优化方法:
- 原始 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet;
- 借助简单跳跃连接;
- 借助复杂跳跃连接。
在第三、五、七和九个
F
i
r
e
{\rm Fire}
Fire模块的输入输出使用简单跳跃连接。由于在跳跃连接中,输入与输出通道数必须相同,所以剩余不能直接使用跳跃连接的
F
i
r
e
{\rm Fire}
Fire模块首先使用
1
×
1
1\times1
1×1卷积统一通道数。
7. Conclusions
论文首先介绍了设计研究轻量级模型的必要性,然后提出一系列轻量级模型的设计准则,并提出一个精度与 A l e x N e t {\rm AlexNet} AlexNet相当的模型 S q u e e z e N e t {\rm SqueezeNet} SqueezeNet,且前者的参数量是后者的 50 {\rm 50} 50倍。
参考
- Iandola F N, Han S, Moskewicz M W, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size[J]. arXiv preprint arXiv:1602.07360, 2016.