【论文学习记录】SqueezeNet

SqueezeNet在相同准确率的情况下更关心模型的体积大小。

作者说同样的准确率,小的CNN模型具有几大优势:

1. 在分布式训练中效率更高;

2. 更容易移植新模型到客户端;

3. 使得在FPGA和嵌入式设备上部署成为可能。

SqueezeNet采用以下三个策略来减少参数数量:

1.  使用1 x 1的卷积核代替3 x 3的卷积核,将参数减少到原来的1/9;

2.  减少输入通道的数量;

3. 将欠采样操作延后,使得卷积层有更大的**图。

作者定义了一个称之为Fire module的结构,由一个squeeze convolutional layer和一个expand layer组成。其实我感觉这个和google inception是非常相似的。

【论文学习记录】SqueezeNet

 其中squeeze convolutional layer只有1 x 1的卷积,expand layer由1 x 1的卷积和3 x 3的卷积组成。

这个fire module的结构中有三个可调的超参数:s1x1(squeeze convolution layer中1 x 1 filter的个数)、e1x1(expand layer中1 x 1 filter的个数)、e3x3(expand layer中3 x 3 filter的个数)。令s1x1 < e1x1 + e3x3,这样squeeze layer就可以限制输入通道数量。

下面是论文给出的几个SqueezeNet的结构。

【论文学习记录】SqueezeNet

 看一下各层的参数量。

【论文学习记录】SqueezeNet

 比较模型大小和准确率。

【论文学习记录】SqueezeNet

 这里SqueezeNet的原始大小的4.8M,使用Deep Compression技术之后可以压缩到0.47M。

作者定义了一个 squeeze ratio (SR)= the number of filters in squeeze layers/ the number of filters in expand layers,通过调整SR和squeeze layer中1 x 1 filters和3 x 3 filters的数量,可以得到不同的准确率。

【论文学习记录】SqueezeNet

 在SqueezeNet结构中,作者还提供了一个simple bypass结构和一个complex bypass结构,下面看一下它们准确率和模型大小的对比。

【论文学习记录】SqueezeNet