您的位置 首页 知识

CNN模型紧缩与加快算法总述

自从AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络(CNN)的热潮便席卷了整个计算机视觉领域。CNN模型火速替代了传统人工设计

自从AlexNet一举夺得ILSVRC 2012 ImageNet图画分类比赛的冠军后,卷积神经网络(CNN)的热潮便席卷了整个核算机视觉范畴。CNN模型火速代替了传统人工规划(hand-crafted)特征和分类器,不只供给了一种端到端的处理办法,还大起伏地改写了各个图画比赛使命的精度,更甚者逾越了人眼的精度(LFW人脸辨认使命)。CNN模型在不断迫临核算机视觉使命的精度极限的一起,其深度和标准也在成倍增长。

表1 几种经典模型的标准,核算量和参数数量比照

Model Model Size(MB) Million
Mult-Adds
Million
Parameters
AlexNet[1] >200 720 60
VGG16[2] >500 15300 138
GoogleNet[3] ~50 1550 6.8
Inception-v3[4] 90-100 5000 23.2

随之而来的是一个很为难的场景:如此巨大的模型只能在有限的平台下运用,底子无法移植到移动端和嵌入式芯片傍边。就算想经过网络传输,但较高的带宽占用也让许多用户望而生畏。另一方面,大标准的模型也对设备功耗和运转速度带来了巨大的应战。因而这样的模型间隔有用还有一段间隔。

在这样的景象下,模型小型化与加快成了亟待解决的问题。其实前期就有学者提出了一系列CNN模型紧缩办法,包括权值剪值(prunning)和矩阵SVD分化等,但紧缩率和功率还远不能令人满意。

近年来,关于模型小型化的算法从紧缩视点上能够大致分为两类:从模型权重数值视点紧缩和从网络架构视点紧缩。另一方面,从统筹核算速度方面,又能够划分为:仅紧缩标准和紧缩标准的一起提高速度。

本文首要评论如下几篇代表性的文章和办法,包括SqueezeNet[5]、Deep Compression[6]、XNorNet[7]、Distilling[8]、MobileNet[9]和ShuffleNet[10],也可按照上述办法进行大致分类:

表2 几种经典紧缩办法及比照

Method Compression Approach Speed Consideration
SqueezeNet architecture No
Deep Compression weights No
XNorNet weights Yes
Distilling architecture No
MobileNet architecture Yes
ShuffleNet architecture Yes

一、SqueezeNet

1.1 规划思维

SqueezeNet是F. N. Iandola,S.Han等人于2016年的论文《SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and 0.5MB model size》中提出的一个小型化的网络模型结构,该网络能在确保不丢失精度的一起,将原始AlexNet紧缩至本来的510倍左右( 0.5MB)。

SqueezeNet的中心指导思维是——在确保精度的一起运用最少的参数。

而这也是一切模型紧缩办法的一个终极方针。

根据这个思维,SqueezeNet提出了3点网络结构规划战略:

战略 1.将3×3卷积核替换为1×1卷积核。

这一战略很好了解,由于1个1×1卷积核的参数是3×3卷积核参数的1/9,这一改动理论上能够将模型标准紧缩9倍。

战略 2.减小输入到3×3卷积核的输入通道数。

咱们知道,关于一个选用3×3卷积核的卷积层,该层一切卷积参数的数量(不考虑偏置)为:

式中,N是卷积核的数量,也即输出通道数,C是输入通道数。

因而,为了确保减小网络参数,不只仅需求削减3×3卷积核的数量,还需削减输入到3×3卷积核的输入通道数量,即式中C的数量。

战略 3.尽可能的将降采样放在网络后边的层中。

在卷积神经网络中,每层输出的特征图(feature map)是否下采样是由卷积层的步长或许池化层决议的。而一个重要的观念是:分辨率越大的特征图(推迟降采样)能够带来更高的分类精度,而这一观念从直觉上也能够很好了解,由于分辨率越大的输入能够供给的信息就越多。

上述三个战略中,前两个战略都是针对怎么下降参数数量而规划的,终究一个旨在最大化网络精度。

1.2 网络架构

根据以上三个战略,作者提出了一个相似inception的网络单元结构,取名为fire module。一个fire module 包括一个squeeze 卷积层(只包括1×1卷积核)和一个expand卷积层(包括1×1和3×3卷积核)。其间,squeeze层学习了inception的思维,运用1×1卷积核来下降输入到expand层中3×3卷积核的输入通道数。如图1所示。

图1 Fire module结构示意图

其间,界说squeeze层中1×1卷积核的数量是s1x1,相似的,expand层中1×1卷积核的数量是e1x1, 3×3卷积核的数量是e3x3。令s1x1 e1x1+ e3x3然后确保输入到3×3的输入通道数减小。SqueezeNet的网络结构由若干个 fire module 组成,别的文章还给出了一些架构规划上的细节:

为了确保1×1卷积核和3×3卷积核具有相同巨细的输出,3×3卷积核选用1像素的zero-padding和步长

squeeze层和expand层均选用RELU作为激活函数

在fire9后选用50%的dropout

由于全衔接层的参数数量巨大,因而学习NIN[11]的思维,去除了全衔接层而改用global average pooling。

1.3 试验成果

表3 不同紧缩办法在ImageNet上的比照试验成果[5]

上表显现,比较传统的紧缩办法,SqueezeNet能在确保精度不损(乃至略有提高)的情况下,到达最大的紧缩率,将原始AlexNet从240MB紧缩至4.8MB,而结合Deep Compression后更能到达0.47MB,彻底满意了移动端的布置和低带宽网络的传输。

此外,作者还学习ResNet思维,对原始网络结构做了修正,增加了旁路分支,将分类精度提高了约3%。

1.4 速度考量

虽然文章首要以紧缩模型标准为方针,但毋庸置疑的一点是,SqueezeNet在网络结构中很多选用1×1和3×3卷积核是有利于速度的提高的,关于相似caffe这样的深度学习结构,在卷积层的前向核算中,选用1×1卷积核可防止额定的im2col操作,而直接运用gemm进行矩阵加快运算,因而对速度的优化是有必定的作用的。但是,这种提速的作用仍然是有限的,别的,SqueezeNet选用了9个fire module和两个卷积层,因而仍需求进行很多惯例卷积操作,这也是影响速度进一步提高的瓶颈。

二、Deep Compression

Deep Compression出自S.Han 2016 ICLR的一篇论文《Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding》。该文章获得了%&&&&&%LR 2016的最佳论文奖,一起也具有里程碑式的含义,引领了CNN模型小型化与加快研讨方向的新狂潮,使得这一范畴近两年来出现出了很多的优异作业与文章。

2.1 算法流程

与前面的“架构紧缩派”的SqueezeNet不同,Deep Compression是归于“权值紧缩派”的。而两篇文章均出自S.Han团队,因而两种办法结合,双剑合璧,更是能到达空前绝后的紧缩作用。这一试验成果也在上表中得到验证。

Deep Compression的算法流程包括三步,如图2所示:

图2 Deep Compression Pipeline

1、Pruning(权值剪枝)

剪枝的思维其实早已在前期论文中能够窥见,LeCun等人从前就运用剪枝来稀少网络,减小过拟合的危险,提高网络泛化性。

图3是MNIST上练习得到的LeNet conv1卷积层中的参数散布,能够看出,大部分权值会集在0处邻近,对网络的奉献较小,在剪值中,将0值邻近的较小的权值置0,使这些权值不被激活,然后侧重练习剩余的非零权值,终究在确保网络精度不变的情况下到达紧缩标准的意图。

试验发现模型对剪枝更灵敏,因而在剪值时主张逐层迭代修剪,别的每层的剪枝份额怎么主动选取仍然是一个值得深入研讨的课题。

图3 LeNet conv1层权值散布图

2、Quantization (权值量化)

此处的权值量化根据权值聚类,将接连散布的权值离散化,然后减小需求存储的权值数量。

初始化聚类中心,试验证明线性初始化作用最好;

运用k-means算法进行聚类,将权值划分到不同的cluster中;

在前向核算时,每个权值由其聚类中心表明;

在后向核算时,核算每个cluster中的梯度和将其反传。

图4 权值量化前向和后向核算进程

3、Huffman encoding(霍夫曼编码)

霍夫曼编码选用变长编码将均匀编码长度减小,进一步紧缩模型标准。

2.2 模型存储

前述的剪枝和量化都是为了完成模型的更紧致的紧缩,以完成减小模型标准的意图。

关于剪枝后的模型,由于每层很多参数为0,后续只需将非零值及其下标进行存储,文章中选用CSR(Compressed Sparse Row)来进行存储,这一步能够完成9x~13x的紧缩率。

关于量化后的模型,每个权值都由其聚类中心表明(关于卷积层,聚类中心设为256个,关于全衔接层,聚类中心设为32个),因而能够结构对应的码书和下标,大大削减了需求存储的数据量,此步能完成约3x的紧缩率。

终究对上述紧缩后的模型进一步选用变长霍夫曼编码,完成约1x的紧缩率。

2.3 试验成果

表4 不同网络选用Deep Compression后的紧缩率

经过SqueezeNet+Deep Compression,能够将原始240M的AlexNet紧缩至0.47M,完成约510x的紧缩率。

2.4 速度考量

能够看出,Deep Compression的首要规划是针对网络存储标准的紧缩,但在前向时,假如将存储模型读入打开后,并没有带来更大的速度提高。因而Song H.等人专门针对紧缩后的模型规划了一套根据FPGA的硬件前向加快结构EIE[12],有爱好的能够研讨一下。

三、XNorNet

二值网络一直是模型紧缩和加快范畴经久不衰的研讨课题之一。将原始32位浮点型的权值紧缩到1比特,怎么最大程度地减小功能丢失就成为了研讨的要害。

此篇论文首要有以下几个奉献:

提出了一个BWN(Binary-Weight-Network)和XNOR-Network,前者只对网络参数做二值化,带来约32x的存储紧缩和2x的速度提高,而后者对网络输入和参数都做了二值化,在完成32x存储紧缩的一起带了58x的速度提高;

提出了一个新式二值化权值的算法;

第一个在大规模数据集如ImageNet上提交二值化网络成果的作业;

无需预练习,可完成training from scratch。

3.1 BWN

即最优的二值化滤波器张量B即为原始参数的符号函数,最优的标准因子为每个滤波器权值的绝对值的均值。

练习算法如图5所示,值得注意的是,只要在前向核算和后向传达时运用二值化后的权值,在更新参数时仍然运用原始参数,这是由于假如运用二值化后的参数会导致很小的梯度下降,然后使得练习无法收敛。

3.2 XNOR-Net

在XNOR网络中,优化的方针是将两个实数向量的点乘近似到两个二值向量的点乘,即

在卷积核算中,输入和权值均量化成了二值,因而传统的乘法核算变成了异或操作,而非二值化数据的核算只占了很小一部分。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/155726.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部