SqueezeNet(2016 ICLR)

论文标题 SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <1MB model size
论文作者 Forrest N. Iandola, Song Han, Matthew W. Moskewicz, Khalid Ashraf, William J. Dally, Kurt Keutzer
发表日期 2016年02月01日
GB引用 > Forrest N Iandola, Matthew W Moskewicz, Khalid Ashraf, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <1MB model size.[J]. ArXiv, 2016, abs/1602.07360.
DOI 10.48550/arXiv.1602.07360

论文地址:https://arxiv.org/pdf/1602.07360v3

摘要

本文提出了一种名为SqueezeNet的小型卷积神经网络(CNN),其在ImageNet数据集上达到了与AlexNet相当的准确率,但参数量减少了50倍。此外,通过模型压缩技术,SqueezeNet可以被压缩到小于0.5MB,比AlexNet小510倍。SqueezeNet主要由Fire模块构成,该模块包含挤压层和扩展层,通过使用1x1滤波器减少参数量,并通过延迟下采样来提高分类准确性。实验表明,SqueezeNet不仅具有高效的小模型优势,还适用于硬件部署及频繁更新场景。

全文摘要

这篇论文介绍了一种名为SqueezeNet的卷积神经网络(CNN)架构,旨在在保持与AlexNet相当的准确率的同时,大幅减少模型参数数量。SqueezeNet模型的参数数量仅为AlexNet的1/50,且模型大小小于0.5MB,提供了更高效的存储和计算性能。论文的主要贡献与创新点包括:

  • 模型压缩: SqueezeNet采用了一系列设计策略,以减少参数数量并保持网络性能。这些策略包括用1x1卷积替代3x3卷积、减少输入通道的数量,和推迟下采样以保持较大的激活图。
  • Fire模块:论文提出了一种新的模块称为“Fire模块”,其中包含一个压缩层(squeeze layer)和一个扩展层(expand layer)。压缩层使用1x1卷积来减少输入通道,扩展层则结合了1x1和3x3卷积,以获得丰富的特征表示。
  • 模型性能和压缩效果: 在实验中,SqueezeNet在ImageNet数据集上达到了57.5%的Top-1准确率和80.3%的Top-5准确率。通过应用深度压缩技术,SqueezeNet的模型大小可进一步降低至不到0.5MB,同时保持相同的准确率。
  • 设计空间探索:论文还探讨了CNN微观架构和宏观架构的设计选择,比较了不同的Fire模块和连接方式对模型性能的影响。这种探索为设计更高效的CNN提供了理论依据。

研究问题

如何设计一个具有较少参数但保持同等准确性的卷积神经网络架构?

研究方法

实验研究: 通过设计和训练SqueezeNet架构,并应用多种压缩技术来减少模型大小,同时保持或提高准确性。

比较研究: 对比SqueezeNet与其他压缩技术(如SVD、Network Pruning、Deep Compression)在模型大小和精度方面的表现,证明SqueezeNet在模型压缩方面具有优势。

混合方法研究: 结合CNN架构创新(如SqueezeNet)与先进的压缩技术(如Deep Compression),实现显著的模型大小缩减,同时保持或提高模型的准确性。

现象学研究: 探索SqueezeNet在不同设计参数下的性能变化,例如通过调整挤压层的过滤器数量和比例来观察模型大小和精度的变化。

系统分析: 分析SqueezeNet的不同组成部分(如Fire模块的配置)如何影响模型的整体性能,通过调整宏观和微观架构的设计参数来优化模型。

研究思路

这篇论文提出了一种新的卷积神经网络架构,称为SqueezeNet,旨在在保持图像分类精度的同时,大幅度减少模型参数数量和大小。

理论基础

  • 深度学习,尤其是卷积神经网络(CNN)在计算机视觉领域的广泛应用,通常关注的是提升准确率。然而,较小的网络架构在多方面具有优势,包括更快的训练速度、减少传输带宽和便于在资源有限的设备(如FPGA)上进行部署。
  • 结合现有模型(如AlexNet)进行设计,对比小型网络与大型网络在性能上的平衡,从而提出一种能够在保持高精度的前提下显著减小模型大小的方法。

核心理论框架

  • SqueezeNet的设计围绕着几个关键策略展开,旨在实现小型CNN架构,这些策略包括:
  • 用1x1卷积替代3x3卷积以减少参数数量。
  • 延迟下采样,以保持较大的特征图,进而提高分类精度。
  • 采用“压缩”和“扩展”模块(Fire模块),以精确控制参数数量。

研究方法

模型架构设计

  • 论文设计了一个主要由Fire模块组成的网络结构。每个Fire模块包含一个压缩层(只有1x1卷积)和一个扩展层(结合1x1和3x3卷积)。
  • 通过合理配置每个Fire模块中的卷积滤波器数量,逐步增大网络的复杂度,并使用最大池化层在网络的后期进行下采样。

模型压缩技术

  • 论文中还使用了“深度压缩”技术,包括网络剪枝(去除参数较小的部分)和量化(将参数精度降低到8位或更少)来进一步减少模型大小。
  • 结合上述方法,SqueezeNet在不降低分类性能的情况下,能被压缩到尽可能小的尺寸(小于0.5MB)。

结构设计策略

本文的总体目标是确定具有较少参数但保持竞争精度的CNN架构。为了实现这一目标,我们在设计CNN架构时采用了三种主要策略:

策略1用1x1滤波器替换3x3滤波器。考虑到一定数量的卷积滤波器的预算,我们将选择使这些滤波器中的大多数为1x1,因为1x1滤波器的参数比3x3滤波器少9倍。

策略2将输入通道数量减少到3个滤波器。考虑一个卷积层,它完全由3x3个滤波器组成。这一层的参数总数为 (输入通道数量) * (滤波器数量) (33)。因此,为了在CNN中保持较少的参数总数,重要的是不仅要减少3x3过滤器的数量 (参见上面的策略1),而且要减少3x3滤波器的输入通道数量。我们使用挤压层将输入通道的数量减少到3个滤波器,我们将在下一节中描述。

策略3网络后期降采样,使卷积层具有大的激活图。在一个卷积网络中,每个卷积层产生一个输出激活图,其空间分辨率至少为1 x 1,通常比1 x 1大得多。这些激活图的高度和宽度由以下因素控制:

(1) 输入数据的大小(例如 256x256 图像)。

(2) 在卷积神经网络架构中选择用于下采样的层。最常见的是,在CNN架构中通过设置某些卷积或池化层的(步长 > 1)来实现下采样。
如果网络中的早期层具有较大的步长,那么大多数层将具有较小的激活图。相反,如果网络中的大多数层的步长为1,而大于1的步长集中在网络的末端,那么网络中的许多层将具有较大的激活图。我们的直觉是,由于延迟下采样导致的较大的激活图(activation maps)可以带来更高的分类准确性,其他条件保持不变。确实,K. He 和 H. Sun 将延迟下采样应用于四种不同的CNN架构,在每种情况下,延迟下采样都带来了更高的分类准确率[12]。

策略1和策略2是关于在尝试保持准确度的同时,审慎地减少卷积神经网络(CNN)中的参数数量。策略3旨在在有限的参数预算内最大化准确性。接下来,我们将描述Fire模块,这是我们用于CNN架构的基础构建块,它使我们能够成功地应用策略1、2和3。

Fire 模块

我们定义了 Fire 模块如下。一个Fire模块由以下部分组成:一个挤压卷积层(仅包含1x1的滤波器),输入到一个扩展层,该扩展层包含1x1和3x3卷积滤波器的混合;我们在图1中展示了这一点

在 Fire 模块中广泛使用1x1滤波器是策略1的应用。我们在一个 Fire 模块中公开了三个可调维度 (超参数): s 1 x 1 , e 1 x 1 , e 3 x 3 s_{1x1},e_{1x1},e_{3x3} s1x1,e1x1,e3x3。在 Fire 模块中, s 1 x 1 s_{1x1} s1x1是挤压层中过滤器的数量 (全部为1 x 1), e 1 x 1 e_{1x1} e1x1是扩展层中 1 x 1 过滤器的数量, e 3 x 3 e_{3x3} e3x3是扩展层中 3 x 3 滤镜的数量。当我们使用火灾模块时,我们将 s 1 x 1 s_{1x1} s1x1设置为小于 ( e 1 x 1 + e 3 x 3 ) (e_{1x1}+e_{3x3}) (e1x1+e3x3),因此根据策略2,挤压层有助于将输入通道数量限制为 3 x 3 滤波器。

SqueezeNet架构

我们现在描述 SqueezeNet CNN 架构。我们在图2中说明了 SqueezeNet 以一个标准独立的卷积层 (conv1) 开始,紧随其后的是8个 Fire 模块 (Fire 2-9),最后是一个卷积层 (conv10)。我们从网络的开始到结束逐渐增加每个 Fire 模块的过滤器数量。SqueezeNet 在 conv1、fire4、fire8 和 conv10 之后执行步长为 2 的最大池化;这些相对靠后的池化位置是根据第 3.1 节中的策略 3。我们在表 1 中展示了完整的SqueezeNet 架构

为了使来自1x1和3x3滤波器的输出激活具有相同的高度和宽度,我们在输入数据中为3x3滤波器的扩展模块添加了1像素宽的零填充边框。

  • 对挤压和扩展层的激活应用ReLU [24]。

  • 在 fire9 模块之后应用了50%的 Dropout 率[28]。

  • 注意 SqueezeNet 中缺少完全连接层;这种设计选择是受到NiN [22]架构的启发。

在训练 SqueezeNet 时,我们使用了一个多项式学习率,这与[15]中描述的类似。对于有关训练协议的详细信息(例如批处理大小、学习速率和参数初始化),请参阅我们的Caffe [19]配置文件,位于此处:https://github.com/DeepScale/SqueezeNet

Caffe框架不原生支持包含多个滤波器分辨率(例如1x1和3x3)的卷积层。为了解决这个问题,我们用两个单独的卷积层实现我们的扩展层:一个带有1x1滤波器的层,另一个带有3x3滤波器的层。然后,在通道维度上将这些层的输出连接在一起。这在数值上等同于实现一个同时包含1x1和3x3滤波器的层。

CNN微架构设计空间探索

到目前为止,我们已经为小型模型提出了建筑设计策略,并遵循这些原则创建了 SqueezeNet。发现SqueezeNet 的大小是AlexNet的一半,但精度相当。然而,SqueezeNet 和其他模型存在于CNN架构的一个广泛且大部分未被探索的设计空间中。现在,我们将探讨设计空间的几个方面。我们把探索分为三个主要主题:微架构探索(模块层维度和配置),宏观架构探索(模块和其他层的高级端到端组织)以及模型压缩配置的探索。

在本节中,我们设计并执行实验,目的是提供有关微架构设计空间形状的直觉,这与我们在第3.1节中提出的策略相关。请注意,我们的目标不是使每个实验中的准确率最大化,而是要理解CNN架构选择对模型大小和准确率的影响。

CNN微架构元参数

在 SqueezeNet 中,每个 Fire 模块都有我们在3.2节中定义的三维超参数: s 1 x 1 , e 1 x 1 , e 3 x 3 s_{1x1},e_{1x1},e_{3x3} s1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘若里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值