目标分类之SQUEEZENET

论文简介

introduction

小网络的优点

  • 分布式训练的效率更高。
  • 在客户端与云端进行通信时,减少传输负载。
  • 在FPGA和嵌入式上的封装成为可能。

method

SqueezeNet的设计策略

  • 用$1X1$的filter代替$3X3$的filter,这可以大大减少网络参数
  • 减少feature map的channel数量
  • 在网络后期进行降采样,这可以使得卷积层有较大的activation map,从而提升分类的精度。

Fire Module

  • 论文中提出了Fire Module这个结构,对于输入,经过squeeze子模块(1X1的filter和RELU的激活函数),之后经过expand子模块,这个expand子模块是由1X1和3X3的卷积filter构成。
  • 在这个模块中,有3个超参数需要调节,分别是squeeze中1X1filter的个数,expand中1X1和3X3模块的个数。

SqueezeNet的主要结构和细节

  • 经过一个卷积层和pooling层,然后经过8个fire Module,在经过1个卷积层,最后经过softmax,输出1000个类别的置信度。具体的网络可以见论文。注意:在fire4和fire8后有最大池化的操作,在conv10后面有全局平均池化的操作,为了减少feature layer的大小。
  • 为了保证squeeze子模块中1X1和3X3卷积输出尺寸相同,设置3X3的卷积层的padding=1
  • 在fire9后,加入了dropout的操作,减小过拟合。
  • 在SqueezeNet中没有FC层(借鉴了NiN)。
  • 在训练过程中,学习率是变化的。

CNN结构设计

  • 之前提到,每个Fire Module中有3个超参数,因此模型关于Fire Module共有24个超参数。论文中设置$fire_i$层的expand filter数量为
    $$e_i=base_e$ + (incr_e \lfloor \frac{i}{freq} \rfloor )$$
    定义
    $$e_i = e_{i,1x1} + e_{i,3x3}$$
    同时定义
    $$e_{i,3x3} = e_i
    pct_{3x3} $$

设squeeze中1X1filter的数量为$s_{i,1x1}$,定义$s_{i,1x1} = SR * e_i$。论文中设置$base_e=128$,$incr_e=128$,$pct_{3x3}=0.5$,$freq=2$,$SR=0.125$。

  • 论文中也比较了不同超参数下模型的性能,在此就不列出了。