您的位置:首页 > 产品设计 > UI/UE

SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size

2016-07-13 22:55 483 查看
摘要:

SqueezeNet是UC Berkeley 和 Stanford的作者提出的一种“小网络”。

原文地址: http://arxiv.org/abs/1602.07360

长久以来,研究人员一直在努力提升DCNN的精度。但是,在一些嵌入式便携式设备上,“小网络”更加受欢迎。

“小网络”有三个优势,1)在分布式训练的时候,需要更少的服务器之间的通信。2)模型加载的时候,需要更少的带宽。3)可以装载到FPGA或者其他“内存小”的设备上面。

作者提供的网络SqueezeNet,在达到AlexNet的精度的情况下,只需要AlexNet的1/50的参数。进一步 使用模型压缩技术,可以将模型压缩到0.5MB。

详细介绍

在这部分,首先说明CNN结构设计的策略,然后介绍Fire Module,最后介绍利用Fire Module构建SqueezeNet。

1. 结构设计策略

这篇文章的首要目的找到一种参数很少的网络,并且能够保持有竞争力的精度。为了达到这个目的,作者采用了三个策略。

策略1: 使用1*1网络代替3*3网络

在设计中,减少3*3网络的使用,尽量使用1*1网络。因为”1*1网络的参数数目” 是 “3*3网络的参数数目” 的1/9。

策略2.减少3*3滤波器的输入通道数。

每个卷积层的参数总数 = (前一层的通道数)(输出滤波器数)(滤波器的宽 * 滤波器的高)。因此,减少前一层的通道数(当前层的输入通道数)可以减少参数数目。

策略3.降采样层移到网络的后端

前两个策略的目的是减少网络参数,第三个策略的目的是增加精度。

2. Fire Module

定义如下,一个Fire Module有一个 squeeze层(有1*1滤波器组成)和一个expand层(包括1*1滤波器和3*3滤波器)组成。



在上图中,有三个超参数:

s(1x1): squeeze层的1*1滤波器个数;
e(1x1): expand层的1*1滤波器个数;
e(3x3): expand层的3*3滤波器个数;


作者在设计Fire Module的时候,s(1x1) < ( e(1x1) + e(3x3) )。

*3. SqueezeNet*

SqueezeNet用一个独立的卷积层开始,连接8个Fire Module,结束的时候也是一个卷积层。

SqueezeNet逐渐的增加每个Fire Module中的滤波器数目。

SqueezeNet在conv1,fire4,fire8和conv10之后使用步长为2的max pooling。



其他细节:

(1) 为了使expand层的输出有相同的大小,3*3filter的输入数据增加了padding操作。

(2) squeeze层和expand层之后都用了ReLU

(3) fire9之后,使用了drop out

(4) SqueezeNet没有使用全连接层

(5) 训练的时候,使用多项式学习率

评估结果



上图显示,SqueezeNet在不使用deep compression的情况,模型大小/参数个数已经超过之前的方法。

使用deep compression可以将模型压缩到0.5MB.

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息