轻量级网络设计-SqueezeNet

轻量级网络设计-SqueezeNet

  • ICLR2017-SqueezeNet
    • SqueezeNet设计策略
    • Fire Module 模块
    • SqueezeNet 结构
    • 主要实验设置与结果
      • 实验参数设置
      • 实验细节
      • 实验结果
    • 总结

ICLR2017-SqueezeNet

SqueezeNet设计策略

  1. 用1x1卷积核代替3x3卷积核

  2. 减少3x3卷积核的输入通道数

  3. 将采样层之后,以使得卷积层有更大的activation map(作者提到其直观认为更大的激活图可以提供更好的分类精度)

    策略1、2主要是减少参数量,策略3是在此情况下最大化模型精度

Fire Module 模块

SqueezeNet使用Fire Module来代替标准卷积核,Fire Module示意图如下:
轻量级网络设计-SqueezeNet_第1张图片

  1. 图片中squeeze 部分实现了策略1与策略2,包括替换1x1卷积核与减少输入通道数
  2. 有3个超参数可调节,s1x1, e1x1, e3x3, 分别表示图片中卷积核的个数,一般设置s1x1的值小于(e1x1+e3x3),使得3x3卷积核的输入通道数减小

SqueezeNet 结构

网络整体结构如下,使用fire module代替标准卷积,
轻量级网络设计-SqueezeNet_第2张图片

主要实验设置与结果

文章主要实验了标准的AlexNet网络、SqueezeNet、以及Deep Compression等各种压缩方法,实验参数如table1,实验结果如table2,还有一些实验细节

实验参数设置

轻量级网络设计-SqueezeNet_第3张图片

实验细节

(1)在Fire模块中,expand层采用了混合卷积核1x1和3x3,其stride均为1,对于1x1卷积核,其输出feature map与原始一样大小,但是由于它要和3x3得到的feature map做concat,所以3x3卷积进行了padding=1的操作,实现的话就设置padding=”same”;

(2)Fire模块中所有卷积层的激活函数采用ReLU;

(3)Fire9层后采用了dropout,其中keep_prob=0.5;

(4)SqueezeNet没有全连接层,而是采用了全局的avgpool层,即pool size与输入feature map大小一致;

(5)训练采用线性递减的学习速率,初始学习速率为0.04。

实验结果

轻量级网络设计-SqueezeNet_第4张图片
可以很明显的看出,在没使用压缩的情况下,SqueezeNet网络的精度与AlexNet相当(Top-1更高),但是其网络的容量从240MB->4.8MB,效果非常明显,使用了Deep Compression的压缩之后,又降到了0.47MB,精度也是不损失,真的牛逼。

总结

SqueezeNet的文章实现了两种方法:紧致模型结构设计与模型压缩,是神经网络应用于移动端的两种主要方法,从效果看,SqueezeNet的效果是惊艳的,是作为轻量级网络设计的一种可参考的思路。

你可能感兴趣的:(神经网络模型加速与压缩)