SqueezeNet: Alexnet-level accuracy whith 50x Fewer Parameters And < 0.5MB Model Size

来源:互联网 发布:淘宝黑搜二期 编辑:程序博客网 时间:2024/05/21 23:34

SqueezeNet: Alexnet-level accuracy whith 50x Fewer Parameters And < 0.5MB Model Size

本篇博文主要是对之前看过的深度模型压缩论文的整理。本文在ICLR 2017 under review。论文作者:Forrest N. Iandola , Song Han, Matthew W. Moskewicz, Khalid Ashraf, William J. Dally, Kurt Keutzer其中Song Han的论文(Deep compression: Compressing DNNs with pruning, trained quantization and huffman coding.)在深度模型压缩上取得state-of-the-art。

论文内容简介

  • 本文提出了一种新的网络结构,作者将其成为SqueezeNet,该模型大小上远小于AlexNet为参数所占空间大约是AlexNet的50分之一,但其效果相对与AlexNet没有下降(在某些问题上略有提升)。此外该模型可以使用前面提到的Deep Compression方法继续压缩使其参数占用空间大小小于0.5MB( 其中压缩前约为4.8MB, ALexNet约为240MB)并且不损失精度(这个很赞,虽然AlexNet在ImageNet 数据集上已经被远远的抛在后面)。

小模型的优势

  1. 提高分布式训练的效率,深度模型进行训练时参数数量与机器间通信成正比,参数越少训练时间可越短
  2. 便于客户端更新,这个优势显而易见,对手机等移动设备来说这个优势很大。
  3. 利于嵌入式部署(FPGA),FPGA通常有较小的存储空间

设计策略

  1. 使用更小的卷积核。深度模型卷集成共享卷积核,卷积核越小参数显然越少。
  2. 减少channel 数,这个也是很明显的
  3. 推迟下采样,作者认为推迟下采用可以获得large activation map这样能够使得模型不需要那么“深”。

网络结构

  • Fire Module
    SqueezeNet 之所以参数很少,就在于作者自行设计了Fire Module,其实就是两层连在一起成为一个模块。
    前面提到过的设计策略中第一条就是使用更小的卷积核,因此在Fire Module中包含的第一层就是采用1*1卷积核,作者称该层为压缩层(squeeze layer) 紧跟压缩层的时作者称为拓展层(expand layer)该层包含两种卷积核,1*1卷积核以及3*3卷积核,该层将不同卷积核的产生的特征图合并输出。
    简单来说,Fire Module = Squeeze layer + expand layer。
    对于深度模型来说,所谓的模型结构很大程度上指的是卷积层(FC层)的数量以及卷积核的大小和数目和FC层连接情况。对应与Fire Module,我们关心的时压缩层卷积核的数量以及拓展层两种卷积核的比例,关于这个作者做了实验进行测试,稍后再讲,下面先说一下squeezeNet的整体网络结构。

  • 模型整体结构
     SqueezeNet 包含两个卷积层,9个FireModule和3个下采样层 。其中输入数据大小为224*224*3,第一层为卷积层采用96个大小为7*7的卷积核步长为2,紧跟着一个下采用层使用maxpool 大小为3*3步长为2,然后是3个fire module,再然后是下采样层,4个Fire Module,下采样层maxpool,再跟一个Fire Module,一个卷积层,最后一层是下采样层使用avaverge pool。值得注意的是SqueezeNet没有全连接层这也是它模型能够如此之小的原因,在深度模型中卷积层因为卷积核共享相比与全连接层(FC层)有更少的参数,但卷积层占大量的计算。
     
    这里写图片描述

模型评估及探索

由于之前关于模型压缩的论文大都集中于ALexNet上,本文作者也使用AlexNet作为评估的baseline,具体见下表:

这里写图片描述

SR: squeeze ration,squeeze层filter的数目与expand层layer数目之比
这里写图片描述

总结

这篇文章中作者提出一种新的网络结构称为squeezeNet,相比于AlexNet其参数更少,并且保证模型性能与AlexNet相当。此外通通过使用deep compression 的方法,能够对模型进一步进行压缩,并且不损失精度。
    -

第一次写博客,如有不足之处敬请指正。

0 0