SqueezeNet:AlexNet-Level accuracy with 50x fewer parameters and < 0.5 MB models size论文解读
一、论文下载链接及贡献
论文下载链接:http://arxiv.org/abs/1602.07360
论文贡献:
在同等精度下,较小的CNN体系结构至少有三个优点:
(1)在分布式训练期间,较小的CNN需要较少的跨服务器通信。
(2) 较小的cnn需要较少的带宽才能将新车型从云端导出到自动驾驶汽车。
(3) 更小的cnn更适合部署在fpga和其他内存有限的硬件上。为了提供所有这些优势。
论文提出了一个称为挤压网的小型CNN架构。SqueezeNet在ImageNet上实现AlexNet级精度,参数减少50倍。此外,通过模型压缩技术,将SqueezeNet压缩到0.5MB以下(比AlexNet小510倍)
在同等精度下,参数较少的CNN体系结构有以下优点:
(1)在训练时候更高效
(2)新模型导出到客户端时候开销小
(3)可行的FPGA和嵌入式部署
二、SqueezeNet体系结构
2.1 结构设计策略
设计CNN主要是三种策略:
(1)用1x1filters替换3x3filters。给定一定数量的卷积滤波器的预算,我们将选择使这些滤波器的大多数为1x1,因为1x1filter的参数比3x3 filters少9X。
(2)将输入通道的数量减少到3×3个filters。考虑一个完全由3×3 filters组成的卷积层。该层的参数总数为(输入通道数)*(filters数)* (3*3)。因此,为了在CNN中保持较少的参数总数,不仅要减少3×3filters的数量(参见上面的策略1),还要减少3×3 filters的输入通道数量.
(3)在网络后期进行下采样,以便卷积层具有大的激活图。在卷积网络中,每个卷积层产生一个输出激活图,其空间分辨率至少为1×1,通常比1×1大得多。这些激活图的高度和宽度由以下因素控制:输入数据的大小;在CNN结构中选择下采样的层。
2.2 Fire模块
Fire模块包括:一个Squeeze卷积层,嵌入一个扩展层,该扩展层混合含有1*1和3*3两种卷积filters,如下图所示:
Fire模块公开的三个可调维度超参数:
s
1
x
1
、
e
1
x
1
、
e
3
x
3
s_{1x1}、e_{1x1}、e_{3x3}
s1x1、e1x1、e3x3其中第一个参数是压缩层中的1x1filters数量,第二个参数是扩展层的1x1filters数量,第三个参数是扩展层的3x3filters数量。
2.3 SqueeeNet模块
SqueezeNet从一个独立的卷积层(conv1)开始,然后是8个Fire模块(fire2-9),最后是一个conv层(conv10)。从网络的开始到结束,逐渐增加每个Fire模块的filters数量。SqueezeNet在conv1、fire4、fire8和conv10层之后以2的步长执行最大池化;这些后面的池按照第3.1节中的策略3放置。下图是AqueezeNwet模块宏观结构:
有些细节上图没有体现出来:
(1)激活函数默认使用的ReLu;
(2)Fire9之后接了一个rate为0.5的dropout
(3)使用相同卷积
而在下图展示了完整的SqueezeNet框架: