论文中作者在保证精度不损失的同时,将原始AlexNet压缩至原来的510倍。(Squeezenet比AlexNet参数少50倍,再使用了deep compression使得模型压缩至原来的510倍)
SqueezeNet的核心指导思想是——在保证精度的同时使用最少的参数。
这也是所有模型压缩方法的一个终极目标。
设计思想
- 用卷积核代替卷积核。理论上一个卷积核的参数是一个卷积核的,可以讲模型尺寸压缩9倍。
- 减少卷积的输入通道数。减少输入通道数不仅可以减少卷积的运算量,而且输入通道数与输出通道数相同时还可以减少MAC。
- 延迟下采样。分辨率越大的输入能够提供更多特征的信息,有利于网络的训练判断,延迟下采样可以提高网络精度。
网络架构
SqueezeNet提出了一种多分支结构——fire model。这个结构是由squeeze层和expand层构成的。squeeze层是由数s1个卷积组成,主要是通过卷积降低expand层的输入维度。expand层利用e1个和e3个卷积构成多分支结构提取输入特征,以此提高网络的精度(其中文中给出)。
其中,expand层中,把和得到的feature map进行通道上的concat。
详细过程如下图所示:
可以看到feature map的输入和输出的分辨率是不变的,改变的仅仅是维数(通道数)。
这里的可调参数也是s1,e1和e3。
SqueezeNet整体网络结构如下图所示:
为什么保证卷积核和卷积核具有相同大小的输出,卷积核采用1像素的zero-padding和stride。
在fire9后采用50%的dropout。
由于全连接层的参数量巨大,因此借鉴NIN的思想,去除了全连接层而改用global average pooling层。
实验结果
注意:上图中最后一行使用了deep compression技术,对SqueezeNet进行了压缩,最终才会得到0.47M的模型,并且模型性能还不错。