当前位置: 首页 > 科技观察

CNN模型压缩与加速算法概述_0

时间:2023-03-17 18:19:28 科技观察

前言自AlexNet一举赢得ILSVRC2012ImageNet图像分类竞赛以来,卷积神经网络(CNN)的热潮席卷了整个计算机视觉领域。CNN模型迅速取代了传统的手工特征和分类器,不仅提供了端到端的处理方式,还大大刷新了每一个图像竞赛任务的准确率,甚至超越了人眼的准确率。准确性(LFW人脸识别任务)。在CNN模型不断接近计算机视觉任务的精度极限的同时,它们的深度和大小也在呈指数级增长。表1几个经典模型的大小、计算量和参数个数比较。然后就是尴尬的一幕:如此庞大的模型只能在有限的平台上使用,根本无法移植到移动终端和嵌入式芯片上。之中。即使要通过网络传输,高带宽占用也让很多用户望而却步。另一方面,大型模型也对设备功耗和运行速度提出了巨大挑战。因此,这样的模型距离实用化还有很长的路要走。在这种情况下,模型小型化和加速化成为亟待解决的问题。事实上,早期学者们提出了一系列CNN模型压缩方法,包括权值剪枝和矩阵SVD分解等,但压缩率和效率都差强人意。近年来,模型小型化的算法从压缩的角度大致可以分为两类:从模型权重值角度的压缩和从网络架构角度的压缩。另一方面,从计算速度方面又可以分为:只压缩尺寸和在压缩尺寸的同时提高速度。本文主要讨论以下具有代表性的文章和方法,包括SqueezeNet[5]、DeepCompression[6]、XNorNet[7]、Distilling[8]、MobileNet[9]和ShuffleNet[10]。粗略分类:表2几种经典的压缩方法及比较1.SqueezeNet1.1设计思想SqueezeNet是F.N.Iandola,S.Han等人在论文《SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and < 0.5MB model size》中提出的一种小型化网络模型结构。在2016年。该网络可以将原始AlexNet压缩到大约510倍(<0.5MB),同时确保不损失准确性。SqueezeNet的核心指导思想是在保证精度的同时使用最少的参数。这是所有模型压缩方法的理想目标。基于这个思路,SqueezeNet提出了3点网络结构设计策略:策略1.用1x1的卷积核替换3x3的卷积核。这种策略很容易理解,因为1x1卷积核的参数是3x3卷积核参数的1/9。这一变化理论上可以将模型尺寸压缩9倍。策略2.减少3x3卷积核的输入通道数。我们知道,对于一个使用3x3卷积核的卷积层,该层所有卷积参数的个数(不考虑bias)为:其中N为卷积核个数,即输出通道数,C为输入通道数。因此,为了保证网络参数的减少,不仅要减少3x3卷积核的个数,还要减少输入到3x3卷积核的输入通道数,即C的个数在公式。策略3.尽可能将下采样放在网络的后面几层。在卷积神经网络中,每一层输出的特征图是否被降采样是由卷积层或池化层的步长决定的。重要的一点是,具有更大分辨率(延迟下采样)的特征图可以导致更高的分类精度,并且这个观点也可以直观地理解,因为具有更大分辨率的输入可以提供更多信息。在以上三种策略中,前两种策略是针对如何减少参数数量而设计的,最后一种策略是针对最大化网络精度而设计的。1.2网络架构基于以上三种策略,作者提出了一个类似于inception的网络单元结构,命名为firemodule。一个fire模块包含一个挤压卷积层(仅包含1x1卷积核)和一个扩展卷积层(包含1x1和3x3卷积核)。其中,squeeze层借鉴了inception的思想,在expand层使用1x1卷积核减少输入到3x3卷积核的输入通道数。如图1所示。图1Fire模块结构示意图。定义squeeze层中1x1卷积核的个数为s1x1。同理,expand层1x1卷积核个数为e1x1,3x3卷积核个数为e3x3。让s1x1

猜你喜欢