CNN模型的尺寸、计算量和参数数量对比

CNN模型的尺寸、计算量和参数数量对比

自从AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络(CNN)的热潮便席卷了整个计算机视觉领域。CNN模型火速替代了传统人工设计(hand-crafted)特征和分类器,不仅提供了一种端到端的处理方法,还大幅度地刷新了各个图像竞赛任务的精度,更甚者超越了人眼的精度(LFW人脸识别任务)。CNN模型在不断逼近计算机视觉任务的精度极限的同时,其深度和尺寸也在成倍增长。

 

图1 几种经典模型的尺寸,计算量和参数数量对比

随之而来的是一个很尴尬的场景:如此巨大的模型只能在有限的平台下使用,根本无法移植到移动端和嵌入式芯片当中。就算想通过网络传输,但较高的带宽占用也让很多用户望而生畏。另一方面,大尺寸的模型也对设备功耗和运行速度带来了巨大的挑战。因此这样的模型距离实用还有一段距离。

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

近年来,关于模型小型化的算法从压缩角度上可以大致分为两类:从模型权重数值角度压缩和从网络架构角度压缩。另一方面,从兼顾计算速度方面,又可以划分为:仅压缩尺寸和压缩尺寸的同时提升速度。

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

 

图2. 几种经典压缩方法及对比

MobileNet

引入了传统网络中原先采用的group思想,即限制滤波器的卷积计算,只针对特定的group中的输入,从而大大降低了卷积计算量,提升了移动端前向计算的速度。

1) 卷积分解:

将普通卷积操作分为两部分:
深度卷积:每个卷积核滤波器只针对特定的输入通道进行卷积操作;

点卷积:采用1*1大小的卷积核将深度卷积层的多通道输出进行结合;

2) 对于3*3尺寸的卷积核而言,深度可分离卷积理论上可以带来大约8~9倍的效率提升。

3) 结构:

 

每个卷积操作后面都接着一个BN操作和ReLU操作,在MobileNet中,由于3*3卷积核只应用在深度卷积中,因此95%的计算量都集中在点卷积中的1*1卷积中进行。

 

图4. MobileNet与主流的大模型在ImageNet上的精度对比

 

ShuffleNet

ShuffleNet基于MobileNet的group思想,将卷积操作限制到特定的输入通道,但是不同的是,ShuffleNet将输入的group进行打散,从而保证了每个卷积核的感受野能够分散到不同group的输入中,增加了模型的学习能力。

Group带来的新的问题是:特定的滤波器进对于特定的通道输入进行作用,这就阻碍了通道之间的信息流传递,group的数量越多,可以编码的信息就越丰富,但是每个group的输入通道数量减少,因此可能造成单个卷积滤波器的退化,这在一定程度上削弱了网络的表达能力。

 

图5. ShuffleNet与MobileNet在ImageNet上精度的对比

相比于MobileNet,ShuffleNet的前向计算量不仅有效地得到了减少,而且分类错误率也有明显提升,验证了网络的可行性。

 

相关论文

[1] ImageNet Classification with Deep Convolutional Neural Networks

[2] Very Deep Convolutional Networks for Large-Scale Image Recognition

[3] Going Deeper with Convolutions

[4] Rethinking the Inception Architecture for Computer Vision

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

[6] Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

[7] Distilling the Knowledge in a Neural Network

[8] XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks

[9] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

[10] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

[11] Network in Network

[12] EIE: Efficient Inference Engine on Compressed Deep Neural Network

 

 

深度网络的计算消耗是学术类文章相对少见的话题,在早期网络精度不高的情况下讨论压缩也没有意义,工程师需要实现模型并让网络尽可能地在各种环境下工作,模型的资源消耗情况和运行速度都非常关键。

要考虑的四个方面:空间占用、内存占用、运行速度、耗电情况。

1、计算消耗:

神经网络中大多进行乘-加操作(MACCs)(Multiply-Accumulate operations)

2、内存占用“

内存带宽其实比MACCs更加重要,设备涉及大量的内存访问,内存是很慢的,所以网络层的内存读写对于速度有很大的影响,可能比计算耗时还要多。

2.1、权重的内存占用:

卷积层的kernel通常是正方形的,

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值