本文选择了4个light weight CNN模型,并对它们的设计思路和性能进行了分析与总结,目的在于为在完成图像识别任务时模型的选择与设计方面提供相关的参考资料。
1 简介
自AlexNet[1]在LSVRC-2010 ImageNet[22]图像分类任务上取得突破性进展之后,构建更深更大的convolutional neural networks(CNN)几乎成了一种主要的趋势[2-9]。通常,获得state-of-the-art准确率的模型都有成百上千的网路层以及成千上万的中间特征通道,这便导致了一些complex CNN模型[7-9]需要上十亿的FLOPs(每秒浮点计算次数),也就限制了他们在移动手机平台或移动机器人平台的应用。为了解决这一问题,构建light weight CNN模型[10-19]成为了一个非常活跃的研究方向。近年来在light weight CNN模型构建方面的一些成果已经表明,一些经过精心设计的小模型,也能够在图像分类问题如ImageNet上取得state-of-the-art的性能,而在模型参数以及计算效率方面都有大幅度的减少与提高。为了能够在完成图像识别任务(如菜品识别等)时模型的选择与设计方面提供相关的参考资料,本文首先简单的对构建light weight CNN模型的方法进行了介绍,继而选择了4个模型并对它们的设计思路和性能进行了分析与总结。
2 Light Weight CNN模型
在构建light weight CNN模型方面主要有两个大的方向:
(1) 基于不同的卷积计算方式构造新的网络结构
如All Convolution Net[10],SqueezeNet[11],MobileNet[12]以及ShuffleNet[13]等。
(2)在已训练好的模型上做裁剪[14-19]
Pruning:从权重(weight)层面或从(kernel & channel)层面对模型进行修剪;Compressing:如权重共享(clustering based weight sharing)或对权重采用Huffman编码等;Low-bit representing :如权重量化(quantization)将浮点型转换到[0~255],或者将网络二值(binary)化等。
我们这里选择,从基于不同的卷积计算方式构造新的网络结构这个方向下,挑选一些就近的成果来进行分析与总结。这样选择的理由是因为,上述1这个方向是解决问题的一种更为本真的方式。它是一种更为靠近底层的解决问题的思路,而上述2这种方式是可以被认为是以1为基础而进行的相关拓展。
3 基于不同的卷积计算方式构造的Light Weight CNN模型
对于Light Weight CNN模型的评估除准确率之外,我们还比较关注模型参数压缩的比率以及模型的计算效率。因此,在选择模型时需要注意一下,一些方法在模型参数压缩方面的比率和模型计算方面的效率之间的权衡。
(1) All Convolution Net [10]
大量的卷积神经网络均采用了相似的设计方式,即使用可变的卷积层、池化层、再加一些小数量的全连接层。在如何增强这种设计方式下的网络模型的性能上,很多人进行了不同的探索:1)使用更复杂的激活函数,使用改善的正则化(regularization),以及利用标签信息进行layer-wise的预训练 ;2)使用不同的CNN架构 。All Convolution Net的作者通过在不同的数据集上进行实验后,发现仅仅使用卷积层的网络结构并不会对物体检测的性能产生影响,池化层的存在并非必要,可以使用步长较大的卷积层进行替代。因此,All Convolution Net抛弃了以往CNN网络中的池化层和全连接层,通过使用步长更大的卷积层来代替池化以及使用卷积核为1的卷积层来代替全连接层。
对于池化层的作用现在还很难给出比较完整的解释,一般假定池化层可以通过如下三个方面来对CNN的性能产生帮助:1)p-norm(p范数)使CNN的表示更具不变性(invariance);2)降维使高层能够覆盖输入层的更多部分(receptive field);3)池化的feature-wise特性能够使得优化更为容易。假设第2)点,即降维对与CNN的性能提升至关重要,那么我们可以通过使用如下两种方法,来代替池化层取得相似的降维效果:1)直接移除池化层并增大卷积层的步长;2)使用步长大于1的卷积层来代替池化层。第1)种方法等价于池化操作但仅考虑了顶部左侧的特征响应,因而可能会降低检测的准确率。第二种则没有这种缺陷。
最终All Convolution Net模型相较于以往CNN模型的不同之处有:1)使用stride大于1的卷积层代替以往CNN中的池化层(下采样层);2)使用filter大小为1*1的卷积层代替全连接层(减少参数和计算量)。其在cifar-10和cifar-100上取得了很好的效果,见下图。
这里有一个值得注意的地方是,All Convolution Net和 Fully Convolution Net [20]它们的中文翻译都叫做“全卷积网络”,但是他们是有区别的,区别在于前者抛弃了池化层和全连接层,而后者保留了池化层而丢弃了全连接层。
(2) SqueezeNet[11]
SqueezeNet遵循了三个设计原则:1)使用更小的11的卷积核来代替33的卷积核。类似于GoogleNet[5]以及ResNet[6]设计中的33卷积来代替AlexNet中的77卷积的思路,SqueezeNet进一步用11卷积代替了33卷积。为了保证不影响识别的精度,因此在SqueezeNet中并不是完全的代替,而是进行了部分的替换。2)减少输入33卷积的特征图数量。如果是conv1到conv2这样的直接连接,实际上是不太好减少输入到conv2的特征图的数量的,在SqueezeNet中通过利用11卷积的升维或降维的作用,采用11卷积生成新的数量的特征图,然后将他们接入到33的卷积,进而达到目标。在SqueezeNet中将这种思路封装成了一个Fire Modeule, 见下图。3)减少pooling。在(1)中的All Convolution Net,GoogleNet以及ResNet中都发现,适当的减少pooling操作能够得到比较好的效果,因此在SqueezeNet中只是进行了3次max pooling和1次global pooling。
基于上述的三个设计原则,SqueezeNet在ImageNet上与AlexNet以及其他的一些模型压缩方法进行了对比,在准确率差不多的情况下,SqueezeNet模型参数数量显著降低了,如下图所示。
但是,Squeeze Net并没有在模型参数数量与模型计算效率之间做很好的trade-off,见下图,了解更多可访问https://pjreddie.com/darknet/tiny-darknet/ 。接下来,我们将分析两个在参数数量与计算效率间有比较好的trade-off的模型MobileNet[12]和ShuffleNet[13]。
(3) MobileNet[12]
MobileNet提出了一种depth-wise separable convolution卷积的方式来代替传统卷积的方式, depth-wise separable convolution包含两种操作:1)depth-wise convolution;2)point-wise convolution。首先提出depth-wise convolution这种卷积方式的是论文[21],这种卷积方式的好处是减少参数数量的同时也提升了计算效率。不同于传统的卷积计算,将一个卷积核在所有的输入通道上做卷积操作,在depth-wise convolution中一个卷积核只在一个输入通道上进行卷积。但是depth-wise convolution只是对输入通道进行单独的特征计算,并没有将他们结合起来计算特征。因此,为了产生一些联合特征,增加了一层网络采用1*1卷积来对depth-wise convolution生成的特征之间进行一个线性组合,这就是poit-wise convolution。
MobileNet 的网络结构共 28 层,没有采用池化的方式进行下采样,而是利用 depth-wise convolution 的时候将步长设置为 2,达到下采样的目的。相较于 GoogLeNet,在同一个量级的参数情况下,但是在运算量上却小于 GoogLeNet 一个量级,同时也保证了较高的准确率,见下图。这些都是得益于包含depth-wise convolution以及point-wise convolution的depth-wise separable convolution。
(4) ShuffleNet[13]
ShuffleNet可以被看作是从MobileNet发展而来的。首先,ShuffleNet的作者发现point-wise convolution这种操作实际上是非常耗时的,为了能够高效的在输入特征图间建立信息流通,他们基于group convolution 提出了一种channel shuffle的操作。通过利用group convolution和channel shuffle这两个操作来设计卷积神经网络模型,在减少了参数的同时也能够有效提高计算效率。
Group convolution 是一组卷积核负责一组输入通道,也就是每组通道只被一组卷积核卷积。那depth-wise convolution 其实是可以看成是一个特殊的 group convolution,即每一个通道是一组。Group convolution早在AlexNet中就已经出现了,当时是因为硬件限制而采用分组卷积的。之后在 2016 年的 ResNeXt [9] 中,也表明采用 group convolution 可以获得高效的网络。由于基于不同组计算出来的特征图之间是没有信息流通的,这会影响网络的表达,为了建立组间的信息流通,channel shuffle操作就被引入进来。Channel shuffle操作实际上是对group convolution操作计算出来的特征图组进行一个重组,也就是从各个特征图组中随机的选择一个特征图,进而构成新的特征图组。每一组这种新的特征图组中都包含了旧的特征图组中的信息的,也就是在旧的特征图组间建立了信息流通。同时,channel shuffle操作也避免了MobileNet中的point-wise convolution的计算量。Channel shuffle操作的略缩图如下所示。
ShuffleNet论文中采用了 Complexity (MFLOPs) 指标,在相同的 Complexity (MFLOPs) 下,对ShuffleNet 和各个网络以及特别的与 MobileNet 进行了对比,由于 ShuffleNet 相较于 MobileNet 少了point-wise convolution,所以效率大大的提高了,同时也取得state-of-the-art的准确率,见下图。
4 总结
从上述4种轻量级的网络模型的实验比较种可以看出,基于不同的卷积计算方式构造新的网络结构这个方向是非常有潜力的,而且现阶段已有的一些方法与一些complex CNN模型相比,也基本能够达到state-of-the-art的性能。此外,从上述4种网络结构的设计中,我们也可以得到如下的一些设计Light Weight CNN模型的经验:
1) 减少池化操作;
2) 使用较小尺度的卷积核;
3) 采用depth-wise convolution是设计轻量化模型的非常重要的技术,但是要注意解决信息不流通的问题。
最后,由于水平有限,出错之处,还请多多指教!
备注: 了解更多请访问:http://edu.51cto.com/course/14030.html 。
Reference
[1] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton, “ImageNet Classification with Deep Convolutional Neural Networks,” in Advances in Neural Information Processing Systems (NIPS), pages 1097–1105, 2012
[2] K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman, “Return of the Devil in the Details: Delving Deep into Convolutional Nets,” in British Machine Vision Conference (BMVC), 2014.
[3] Karen Simonyan and Andrew Zisserman, “Very Deep Convolutional Networks for Large-Scale Image Recognition,” in CoRR, 2014. URL http://arxiv.org/abs/1409.1556.
[4] Artem Babenko, Anton Slesarev, Alexandr Chigorin, and Victor Lempitsky, “Neural Codes for Image Retrieval,” in European Conference on Computer Vision (ECCV), volume 8689, pages 584–599, 2014.
[5] Szegedy C, Liu W, Jia Y, Sermanet P, Reed S, Anguelov D, Erhan D, Vanhoucke V, Rabinovich A, “Going deeper with convolutions,” in CVPR, 7-12 June 2015, doi: 10.1109/CVPR.2015.7298594.
[6] He K, Zhang X, Ren S, Sun J, “Deep residual learning for image recognition,” in Computer Vision and Pattern Recognition, 2016.
[7] C. Szegedy, S. Ioffe, V. Vanhoucke, and A. Alemi, “Inceptionv4, inception-resnet and the impact of residual connections on learning,” arXiv preprint arXiv:1602.07261, 2016.
[8] C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna, “Rethinking the inception architecture for computer vision,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2818–2826, 2016.
[9] S. Xie, R. Girshick, P. Doll′ar, Z. Tu, and K. He, “Aggregated residual transformations for deep neural networks,” arXiv preprint arXiv:1611.05431, 2016.
[10] J. T. Springenberg, A. Dosovitskiy, T. Brox, and M. A. Riedmiller, “Striving for simplicity: The all convolutional net,” in CoRR, vol. abs/1412.6806, 2014.
[11] F. N. Iandola, S. Han, M. W. Moskewicz, K. Ashraf, W. J. Dally, and K. Keutzer, “Squeezenet: Alexnet-level accuracy with 50x fewer parameters and< 0.5 mb model size,” in ICLR, 2017.
[12] A. G. Howard, M. Zhu, B. Chen, D. Kalenichenko, W. Wang, T. Weyand, M. Andreetto, and H. Adam, “Mobilenets: Efficient convolutional neural networks for mobile vision applications,” in CVPR, 2017.
[13] Zhang X, Zhou X, Lin M, and Sun J, “Shufflenet: An extremely efficient convolutional neural network for mobile devices,” in CVPR 2017. arXiv preprint arXiv:1707.01083
[14] M. Jaderberg, A. Vedaldi, and A. Zisserman, “Speeding up convolutional neural networks with low rank expansions,” arXiv preprint arXiv:1405.3866, 2014.
[15] X. Zhang, J. Zou, X. Ming, K. He, and J. Sun, “Efficient and accurate approximations of nonlinear convolutional networks,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 1984–1992, 2015.
[16] J. Wu, C. Leng, Y. Wang, Q. Hu, and J. Cheng, “Quantized convolutional neural networks for mobile devices,” arXiv preprint arXiv:1512.06473, 2015.
[17] S. Han, H. Mao, and W. J. Dally, “Deep compression: Compressing deep neural network with pruning, trained quantization and huffman coding,” in CoRR, abs/1510.00149, 2, 2015.
[18] M. Rastegari, V. Ordonez, J. Redmon, and A. Farhadi, “Xnornet: Imagenet classification using binary convolutional neural networks,” in European Conference on Computer Vision, pages 525–542. Springer, 2016.
[19] Luo JH, Wu J, and Lin W, “Thinet: A filter level pruning method for deep neural network compression,” in ICCV 2017.
[20] Evan Shelhamer, Jonathan Long, Trevor Darrell, “Fully Convolutional Networks for Semantic Segmentation,” in CVPR, 2015.
[21] L. Sifre, “Rigid-motion scattering for image classification,” hD thesis, Ph. D. thesis, 2014.
[22] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei-Fei, “Imagenet: A large-scale hierarchical image database,” in Proc. CVPR, 2009.
原文地址:http://blog.51cto.com/remyspot/2159218