SqueezeNet:AlexNet准确率,50x模型压缩

作者DjangoPeng

近年来,CNN模型在ImageNet图像分类任务上赚足了眼球。从最早的AlexNet、Inception、VGG,到后来的Network-in-Network、GoogleNet、ResNet等,国内外的研究学者们一直在刷新着准确率,今年我们能够看到AI已经在该任务上超越了人类(5%)的准确率。但是,从工业界应用场景来看,上述网络普遍存在模型大,训练时间长的问题。以Tesla自动驾驶车为例,每一次升级都需要把模型从服务器下载到自动驾驶车(Over-the-air),这对带宽和网络的要求极高。

因此,学术界又涌现出一大批模型压缩的文章,从最简单的SVD,到模型剪枝(Pruning)和量化(Quantization)都取得了不错的效果。2017 ICLR的一篇论文SqueezeNet在不影响准确率的情况下,能够取得50X倍的压缩效果,并提出了系统级(System-level)端到端(end-to-en)的SqueezeNet Macroarchitecture。本文主要介绍SqueezeNet的原理和实验结果

SqueezeNet

优势

SqueezeNet使得我们可以用0.5MB的CNN模型,达到和AlexNet同样的准确率,实现了50x的模型压缩。作为对比,SVD是5x,Network Pruning是9x,Deep Compression是35x。

相比而言,SqueezeNet具有3大优势:

  1. 在分布式训练阶段,显著减小Worker Server和Parameter Server间的通信成本;
  2. 模型导出阶段,显著减小云端到终端(如自动驾驶车)的带宽成本和时延;
  3. 更小的内存需求,在FPGA和其他存在内存限制的硬件上也能成功运行;

原理

在CNN网络中,卷积层参数的个数由输入通道数(number of input channels)、卷积核个数(number of filters)以及卷积核大小(1x1, 3x3, 5x5等)的乘积决定。本文以AlexNet选择的3x3的卷积核为例,分析SqueezeNet模型压缩的原理。(PS:论文中也是以AlexNet为例进行分析)

为了减少卷积层参数,同时又不影响准确率,SqueezeNet提出了3种策略:

  1. 用1x1的卷积核替代3x3的卷积核,减小卷积核尺寸;
  2. 减少3x3卷积核的输入通道数;
  3. 在网络靠后的部分进行下采样,为卷积层提供尽可能大的activation map;

策略1和2是为了减少参数,策略3则是在参数大幅减少的情况下,通过提供更大的activation map保证模型尽量不损失精度。

为了实现这3种策略,作者提出了深度2层的Fire模块,如图1所示。第1层squeeze conv layer,全部由1x1的卷积核组成,个数为s(1x1);第2层expand layer,由1x1和3x3的卷积核组成,个数分别为e(1x1)和e(3x3)。

图1: Fire模块图

因为在squeeze layer用1x1卷积核替换了3x3的卷积核,我们实现了策略1;在实际训练时保证s(1x1) < e(1x1) + e(3x3),这样就减小了3x3卷积核的输入通道数,实现了策略2;同时,作者给出了使用Fire模块的一个完整的网络结构,如图2所示:从头到尾在每个fire模块输出时都增加卷积核个数,并且只在conv1,fire4,fire8和conv10等相对靠后的位置增加stride=2的max-pooling层,这是为了尽可能给卷积核提供较大的activation map,以满足策略3的需求。

作者称这种基于fire模块的系统级网络为SqueezeNet Macroarchitecture,每个Fire模块都为fine-tune提供了3个超参数,s(1x1)、e(1x1)和e(3x3)。

图2: SqueezeNet Macroarchitecture 左:SqueezeNet,中:SqueezeNet with simple bypass,右:SqueezeNet with complex bypass

SqueezeNet的网络结构和各层输出通道数等详细信息如图3所示:

图3:SqueezeNet architecture dimensions

实验结果

本实验主要基于AlexNet做模型压缩,在不影响准确率的情况下,对比压缩前后模型大小。因此,baseline选用原始的AlexNet模型,对比SVD、Pruning、Deep Compression等方法。实验结果如图4所示:

图4:SqueezeNet architecture dimensions

引用

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.

Han S, Mao H, Dally W J. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding[J]. arXiv preprint arXiv:1510.00149, 2015.

Denton E L, Zaremba W, Bruna J, et al. Exploiting linear structure within convolutional networks for efficient evaluation[C]//Advances in Neural Information Processing Systems. 2014: 1269-1277.