大大减少网络参数的squeezenet

一、简介

近些年来深度学习在计算机视觉方面取得了突飞猛进的发展,但是目前深度学习存在着一个非常严重的问题就是模型过大,对计算资源的需求太多,所以目前深度学习在移动端的应用还比较有限。为此网络压缩成为了神经网络研究的一个重点,一般神经网络的压缩方法有对网络的裁剪、网络的量化等,而从网络的设计上来进行考虑,从根本上减少网络的冗余,也是网络压缩的重要手段,本文所介绍的squeezenet就是从这方面来解决网络模型较大的问题的,相比于Alexnet,它能够减少50倍参数的情况下达到同样的识别准确率,因此该网络也是移动端使用比较多的物体识别网络。

二、网络设计

1、本文主要根据以下三个方面来设计网络,从而减少网络的参数

(1)、使用1x1的卷积核来代替3x3的卷积核,从而能将卷积核的参数减少9倍

(2)、减少3x3卷积的通道数,每一层的卷积参数为(输入通道数*滤波器个数*(3*3)),因此减少输入通道数的个数,可以大大减少参数。

(3)、卷积神经网路中大的激活图能够有更高的准确率,因此在网络的后面进行下采样,以便卷积层能够有更大的激活图从而保证网络有较高的识别准确率。

文中指出第1、2步可以在保证模型识别准确率的情况下来尽量的减少参数的数量,而第三步可以在参数受限的情况下来最大化模型的准确率。

2、根据上面的这三条经验,作者设计了名为FIRE的模块,整个模块如图1所示。从图中可以看出FIRE模块可以分为两部分,一部分为squeeze layer,文中用来表示该层的卷积核个数,这部分全为1x1的卷积核,从而实现像(1)中那样减少网络参数的目的;第二部分为expand layer,该层包含1x1及3x3两种卷积核,其中1x1卷积核的个数用来表示,3x3卷积核的个数用表示。在FIRE模块中,要小于的和,从而像(2)中那样实现对3x3卷积核个数减少的目的

大大减少网络参数的squeezenet_第1张图片

                                                                                     图1 FIRE Module

文中设计的SqueezeNet的网络结构如图2所示,网络一般以一个标准的卷积层开始,然后后面跟随着8个FIRE模块,最后再以一个卷积层来结束。图中所采用的max-pooling的步长均为2,具体网络每一层的参数如表1所示。

在网络的细节方面,主要包括以下几点:

1、为确保1x1卷积核和3x3卷积核的输出有一样的大小,需要对3x3卷积核的输入进行1个像素的0填充

2、在squeeze及expand层后面使用ReLU激活函数

3、在第9层FIRE模块的后面使用50%的Dropout

4、借鉴了NiN的思想,SqueezeNet并未使用全连接层

5、训练开始时的学习速率是0.04,然后在训练过程中我们逐渐的减小学习速率

大大减少网络参数的squeezenet_第2张图片

                                                                                        图2 squeezenet 架构

                                                                                                        表1

大大减少网络参数的squeezenet_第3张图片

三、实验结果分析

1、性能比较

表2是SqueezeNet和目前的一些基于AlexNet网络压缩后的模型的性能的比较结果。从表中可以看出即使是使用未压缩的32位的模型,SqueezeNet也会比压缩后的最小的模型小1.4倍,而且能够保证准去率没什么下降。此外作者更进一步的使用权重稀疏化及网络量化的方法对网络进一步压缩,最终从表中的实验结果可以看出,SqueezeNet可以进一步的被压缩。

                                                                                          表2

大大减少网络参数的squeezenet_第4张图片

2、对网络设计的进一步探索

为了对网络的设计进行进一步的探索,作者分别从网络的微观角度及宏观角度对网络架构的设计进行了实验。

在微观角度上,作者分析了FIRE模块中的压缩比例(即squeeze层的滤波器数量与expand层数量的对比)对网络的影响,结果如图3(a)所示。此外作者还分析了expand层3x3卷积核数量对于识别精度的影响,结果如图3(b)所示。从图中可以看出,压缩比例和3x3卷积核所占比例的提升可以在一定范围内提高网络的识别准确率,但是过高的比例对网络性能的提升就显得比较有限。

大大减少网络参数的squeezenet_第5张图片

                                                                                       图3 性能分析

在宏观角度,作者利用ResNet网络的思想,分别设计了三种SqueezeNet的网络结构,如图2所示。最终作者针对三种网络进行实验,实验结果如表3所示,从表中可以看出,使用简单的跳跃连接方式的网络结构的识别效果最好。

                                                                                                  表3

四、总结

这篇文章是16年的文章了,虽然很老,但是对于网络结构的设计具有很大的参考意义。在实际工程中使用深度学习所要考虑的不仅仅是模型的准确性,还要考虑其运算速度及所占空间,尤其是在一些嵌入式设备中,在实际的工程应用中一般都需要对训练好的网络进行裁剪、量化等一些网络压缩操作,因此这篇文章可以说在这方面有着很好的借鉴意义。

你可能感兴趣的:(论文解读)