摘要
最近对于CNN的研究摘要集中在提高精度上,同样的精度下更小的CNN至少具有3个优点。
(1).较小的CNN在分布式训练期间需要较少的服务器间的通信
(2).较小的CNN需要更少的带宽将新模型从云端导出到自动驾驶的汽车上
(3).较小的CNN更适合部署在内存有限的FPGA等硬件上。
1 INTRODUCTION AND MOTIVATION
对于同样的精度,可以有多种CNN架构可以达到这样的精度。但是更小的CNN具有一下3个优点:
(1).更有效地分布式训练:服务器间通信限制了分布式CNN的可扩展性,通信开销与模型中参数参数数量成正比,所以越小的模型训练的越快,所需要的通信就越少。
(2).导出新模型到客户端开销更小:CNN模型无线更新需要大量的数据传输,更小的模型需要更少的通信,使频繁更新成为可能。
(3).可行的FPGA和嵌入式部署。
2 RELATED WORK
2.1 MODEL COMPRESSION
使用现有的模型并以有损的方式压缩它。常用的模型压缩技术有:
(1).SVD奇异值分解
(2).网络剪枝:将低于阈值的参数替换为0,形成稀疏矩阵,再对稀疏CNN进行迭代训练
(3).深度压缩
(4).EIE硬件加速器
2.2 CNN MICROARCHITECTUR
随着深度的加深,每层手动选择过滤尺寸变得麻烦,提出固定组织。使用CNN微结构来表示单个模块的特定组织。就是先构建由几个卷积层组成的小模块,再将模块堆叠成一个完整的网络。
2.3 CNN MACROARCHITECTURE
多个模块的系统级组织,形成端到端的CNN体系结构。跨多层或模块连接的选择是CNN宏观架构研究的新领域。
2.4 NEURAL NETWORK DESIGN SPACE EXPLORATION
神经网络设计空间探索大部分工作都集中在开发自动化方法上,来发现更高精度的神经网络架构。后面我们将避开自动化方法,重构CNN,研究CNN架构决策如何影响模型大小和准确率。
常用的设计空间探索方法:
(1)贝叶斯优化
(2)模拟退火
(3)随机搜索
(4)遗传算法
3 SQUEEZENET: PRESERVING ACCURACY WITH FEW PARAMETERS
3.1 ARCHITECTURAL DESIGN STRATEGIES
首要任务是识别参数较少的CNN网络,并保持有竞争力的准确性,实现这一点采用了3种策略。
(1)采用11的滤波器代替33的滤波器:可以有效减少9倍的参数
(2)减少输入通道数:层总参数=输入通道数 * 滤波器数 * (33),这部分通过squeeze层来实现
(3)在网络后期进行下采样,使卷积层有大的激活图
卷积网络中,每个卷积层生成一个输出激活图,激活图的高度和宽度由以下控制:
1)输入数据的大小,如256256image
2)在CNN中选择下采样的层,如果网络中大多数层的stride为1,stride大于1的集中在网络末端,则许多层都有较大的激活映射。因为大的激活图可以导致更高的精度。
策略1,2可以显著的减少参数数量
策略3在参数数量受限时,提高准确率
3.2 THE FIRE MODULE
(1)squeeze层中全为11卷积filter(大量使用11采用策略一)
(2)expand层包含11和33卷积filter
(3)含有可调的超参数:s1x1(squeeze convolution layer中1∗11∗1 filter的个数)、e1x1(expand layer中1∗11∗1 filter的个数)、e3x3(expand layer中3∗33∗3 filter的个数)
(4)在使用Fire module时,令s1x1 < e1x1 + e3x3,这样squeeze可以限制输入通道的数量(使用策略二)
3.3 THE SQUEEZENET ARCHITECTURE
SqueezeNet以卷积层(conv1)开始,共有8个Fire modules(fire2-9),最后以卷积层(conv10)结束。每个Fire module中的filter数量逐渐增加,并且在conv1,fire4,fire8,conv10之后使用了步长为2的max pooling,池化层放在相对靠后的位置(使用了策略三)
上图,左边为原始的SqueezeNet,中间为包含simple bypass的改进版本,最右侧为使用complex bypass的改进版本。在下表中给出了更多的细节。
squeeze要
最近对于CNN的研究摘要集中在提高精度上,同样的精度下更小的CNN至少具有3个优点。(1).较小的CNN在分布式训练期间需要较少的服务器间的通信 (2).较小的CNN需要更少的带宽将新模型从云端导出到自动驾驶的汽车上 (3).较小的CNN更适合部署在内存有限的FPGA等硬件上。 # 1 INTRODUCTION AND MOTIVATION对于同样的精度,可以有多种CNN架构可以达到这样的精度。但是更小的CNN具有一下3个优点: (1).更有效地分布式训练:服务器间通信限制了分布式CNN的可扩展性,通信开销与模型中参数参数数量成正比,所以越小的模型训练的越快,所需要的通信就越少。 (2).导出新模型到客户端开销更小:CNN模型无线更新需要大量的数据传输,更小的模型需要更少的通信,使频繁更新成为可能。 (3).可行的FPGA和嵌入式部署。# 2 RELATED WORK## 2.1 MODEL COMPRESSION使用现有的模型并以有损的方式压缩它。常用的模型压缩技术有: (1).SVD奇异值分解 (2).网络剪枝:将低于阈值的参数替换为0,形成稀疏矩阵,再对稀疏CNN进行迭代训练 (3).深度压缩 (4).EIE硬件加速器## 2.2 CNN MICROARCHITECTUR 随着深度的加深,每层手动选择过滤尺寸变得麻烦,提出固定组织。使用CNN微结构来表示单个模块的特定组织。就是先构建由几个卷积层组成的小模块,再将模块堆叠成一个完整的网络。## 2.3 CNN MACROARCHITECTURE多个模块的系统级组织,形成端到端的CNN体系结构。跨多层或模块连接的选择是CNN宏观架构研究的新领域。## 2.4 NEURAL NETWORK DESIGN SPACE EXPLORATION神经网络设计空间探索大部分工作都集中在开发自动化方法上,来发现更高精度的神经网络架构。后面我们将避开自动化方法,重构CNN,研究CNN架构决策如何影响模型大小和准确率。常用的设计空间探索方法:(1)贝叶斯优化(2)模拟退火(3)随机搜索(4)遗传算法# 3 SQUEEZENET: PRESERVING ACCURACY WITH FEW PARAMETERS## 3.1 ARCHITECTURAL DESIGN STRATEGIES首要任务是识别参数较少的CNN网络,并保持有竞争力的准确性,实现这一点采用了3种策略。(1)采用11的滤波器代替33的滤波器:可以有效减少9倍的参数(2)减少输入通道数:层总参数=输入通道数 * 滤波器数 * (33),这部分通过squeeze层来实现(3)在网络后期进行下采样,使卷积层有大的激活图 卷积网络中,每个卷积层生成一个输出激活图,激活图的高度和宽度由以下控制: 1)输入数据的大小,如256256image 2)在CNN中选择下采样的层,如果网络中大多数层的stride为1,stride大于1的集中在网络末端,则许多层都有较大的激活映射。因为大的激活图可以导致更高的精度。 策略1,2可以显著的减少参数数量 策略3在参数数量受限时,提高准确率 ## 3.2 THE FIRE MODULE(1)squeeze层中全为11卷积filter(大量使用11采用策略一)(2)expand层包含11和33卷积filter(3)含有可调的超参数:s1x1(squeeze convolution layer中1∗11∗1 filter的个数)、e1x1(expand layer中1∗11∗1 filter的个数)、e3x3(expand layer中3∗33∗3 filter的个数)(4)在使用Fire module时,令s1x1 < e1x1 + e3x3,这样squeeze可以限制输入通道的数量(使用策略二)## 3.3 THE SQUEEZENET ARCHITECTURESqueezeNet以卷积层(conv1)开始,共有8个Fire modules(fire2-9),最后以卷积层(conv10)结束。每个Fire module中的filter数量逐渐增加,并且在conv1,fire4,fire8,conv10之后使用了步长为2的max pooling,池化层放在相对靠后的位置(使用了策略三)上图,左边为原始的SqueezeNet,中间为包含simple bypass的改进版本,最右侧为使用complex bypass的改进版本。在下表中给出了更多的细节。
squeeze层总参数由于大量使用1*1而大大压缩了,这导致了通道数的减少,expand层将不同的尺寸的卷积模板提取特征,同时将两个输出连接到一起,将维度上升起来。
3.3.1 OTHER SQUEEZENET DETAILS
(1)为了使11和33的滤波器输出具有相同的高度和宽度,在扩展块上的33滤波器的输入数据中添加了一个padding=1.
(2)ReLU非线性用于squeeze层和expand层激活。
(3)Dropout用在Fire module9后应用,比例为50%。
(4)SqueezeNet没有使用全连接层,借鉴了Network-in-Network思想。
(5)学习率设为0.04,在训练过程中线性下降。
(6)Caffe框架本身并不支持多个滤波器分辨率(11,33),为了解决这个问题,使用2个独立conv层来实现扩展,一个带11的层,一个带有33的层,将这些层的输出连接到通道维中,数值上等价于实现一个包含两者的层11和3*3的滤波器。
4 EVALUATION OF SQUEEZENET
下表以AlexNet为标准来评判不同压缩方法的效果 。
SVD方法能将预训练的AlexNet模型压缩为原先的1/5,top1正确率略微降低。网络剪枝的方法能将模型压缩到原来的1/9,top1和top5正确率几乎保持不变。深度压缩能将模型压缩到原先的1/35,正确率也几乎保持不变。SqeezeNet的压缩率可以达到50倍以上,并且正确率还能有略微的提升。注意到即使使用未进行压缩的32位数值精度来表示模型,SqeezeNet也比压缩率最高的模型更小,同时表现也更好。
如果将深度压缩(Deep Compression)的方法用在SqeezeNet上,使用33%的稀疏表示和8位精度,会得到一个仅有0.66MB的模型。进一步,如果使用6位精度,会得到仅有0.47MB的模型,同时正确率不变。
此外,结果表明深度压缩不仅对包含庞大参数数量的CNN网络作用,对于较小的网络,比如SqueezeNet,也是有用的。将SqueezeNet的网络架构创新和深度压缩结合起来可以将原模型压缩到1/510。
5 CNN MICROARCHITECTURE DESIGN SPACE EXPLORATION
5.1 CNN MICROARCHITECTURE METAPARAMETERS
在SqueezeNet中,每一个Fire module有3个维度的超参数,即s1x1s1x1 、 e1x1e1x1 和 e3x3e3x3。SqueezeNet一共有8个Fire modules,即一共24个超参数。下面讨论其中一些重要的超参数的影响。为方便研究,定义如下参数:
(1)basee:Fire module中expand层中filter的个数
(2)freq:Fire module的个数
(3)incre:在每freqfreq个Fire module之后增加的expand filter个数
(4)ei:第i个Fire module中,expand层中filters的个数
(5)SR:压缩比,为squeeze layer中filter个数除以Fire module中filter总个数得到的一个比值
(6)pct3x3:在expand layer有1∗1和3∗3两种卷积,这里定义的参数是3∗3卷积个占卷积总个数的比值
下图为实验结果:
左图可以看出SR为0.125时,准确率为80.3%,SR上升到0.75时,准确率上升到86%,当SR继续上升时,对准确率没有影响,只会使模型尺寸增大。
右图可以看到在pct33达到50%时,准确率为85.3%,随着33解决个数的比例的逐渐加大,只会增大模型尺寸,没有精度的上升。
6 CNN MACROARCHITECTURE DESIGN SPACE EXPLORATION
简单旁路架构是在3,5,7,9周围添加,要求这些模块学习输入输出之间的剩余功能。F4输入=(F2+F3)输出,这是根据ResNet可以提高精度和训练模型的能力。还有一个限制:要求输入输出通道一致,所以只有一半的Fire可以有简单旁路连接。
复杂旁路,1*1的卷积滤波器数量等于需要的输出通道数。旁路连接有助于缓解由挤压层引入的代表性瓶颈。
可以发现使用旁路连接后准确率有一定的提高,简单旁路比复杂旁路有更高的精确性。
优秀博客链接:https://blog.csdn.net/csdnldp/article/details/78648543#commentBox