轻便网络之SqueezeNet

论文:SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE

代码: https://github.com/DeepScale/SqueezeNet

前面介绍过MobileNet,这里介绍另一个轻便型网络SqueezeNet。这是一个号称能够将AlexNet的

网络参数压缩510倍,达到小于0.5M。下面就让我们来慢慢揭开它的神秘面纱吧。

首先,我们需要知道Sq ueezeNet的整体设计都是围绕下面三个核心思想展开的:

  • Replace 3x3 filters with 1x1 filters.
  • Decrease the number of input channels to 3x3 filters.
  • Downsample late in the network so that convolution layers have large activation maps.

根据上面的思路,SqueezeNet引入了一种模块——Fire module:

                   轻便网络之SqueezeNet_第1张图片

Fire module 会先通过squeeze layer对输入的通道数进行压缩,之后通过expand layer,对输入的特征

进行多尺度的卷积运算,最后将结果在通道级别上进行级联。鉴于Squeeze layer的作用,我们需要

考虑到Squeeze layer的卷积核个数要小于Expand layer中卷积核的个数。下面来看一看Caffe的代码

是怎么写的吧。

layer {
  name: "fire2/squeeze1x1"
  type: "Convolution"
  bottom: "pool1"
  top: "fire2/squeeze1x1"
  convolution_param {
    num_output: 16
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
  }
}
layer {
  name: "fire2/relu_squeeze1x1"
  type: "ReLU"
  bottom: "fire2/squeeze1x1"
  top: "fire2/squeeze1x1"
}
layer {
  name: "fire2/expand1x1"
  type: "Convolution"
  bottom: "fire2/squeeze1x1"
  top: "fire2/expand1x1"
  convolution_param {
    num_output: 64
    kernel_size: 1
    weight_filler {
      type: "xavier"
    }
  }
}
layer {
  name: "fire2/relu_expand1x1"
  type: "ReLU"
  bottom: "fire2/expand1x1"
  top: "fire2/expand1x1"
}
layer {
  name: "fire2/expand3x3"
  type: "Convolution"
  bottom: "fire2/squeeze1x1"
  top: "fire2/expand3x3"
  convolution_param {
    num_output: 64
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "xavier"
    }
  }
}
layer {
  name: "fire2/relu_expand3x3"
  type: "ReLU"
  bottom: "fire2/expand3x3"
  top: "fire2/expand3x3"
}
layer {
  name: "fire2/concat"
  type: "Concat"
  bottom: "fire2/expand1x1"
  bottom: "fire2/expand3x3"
  top: "fire2/concat"
}

很容易理解吧。ResNet 网络火了之后,很多网络中都引入了残差结构,当然SqueezeNet也不例外:

                                轻便网络之SqueezeNet_第2张图片

下面这张图是网络的参数情况:

                        轻便网络之SqueezeNet_第3张图片

最后,就是关键的实验部分了,文中对压缩率(Squeeze Rate, SR)和3x3 filter的个数也进行了实验。结果发现,当

SR超过0.25后,在ImageNet上Top-5的准确率便基本保持不变了;当3x3 filter的个数增加到一定程度时网络性能便

基本保持不变了。

                         轻便网络之SqueezeNet_第4张图片

最后的最后,如果想了解更多CV知识,可以关注公众号: 

                                                                轻便网络之SqueezeNet_第5张图片

你可能感兴趣的:(ML,AI)