VansNet轻量化卷积神经网络
2020-04-24孙若钒高建瓴陈娅先
孙若钒 高建瓴 陈娅先
摘要:近年来,研究人员们在卷积神经网络的基础上保证效率的条件下提出了轻量化卷积神经网络,其中SqueezeNet轻量化卷积神经网络在保证精度的前提下,压缩了参数,提高了整体效率。本文针对SqueezeNet网络中由于压缩参数,存在准确率不理想的问题,提出了引入残差网络,增加跳层结构和网络宽度的改进方法VansNet,相较于AlexNet、ResNet和SqueezeNet三种卷积神经网络其计算量最小且参数量很小。实验结果表明,改进后的VansNet轻量化结构在略增加参数的前提下提高了图像分类的准确率和效率。
关键词:轻量化;卷积神经网络;图像分类;压缩参数 ;残差网络;跳层结构
中图分类号:TP391
文献标识码: A
随着卷积神经网络的不断发展,人们把研究的重點集中于如何提高正确率上,随着准确率的提升,卷积神经网络[1](Convolutional Neural Networks,CNN)
逐渐演变为了深度卷积神经网络,为了达到更好的性能,使得网络层数不断增加,网络结构更加复杂,虽然网络性能得到了一定的提升,但是随之而来的就是效率问题。例如,AlexNet[2]、ResNet[3]等性能不错的卷积神经网络在图像分类等很多领域已经广泛使用,这些卷积神经网络结构参数量非常高,识别一张图片需要很大的运算量,需要大量的计算资源,而一般电脑的CPU计算耗费时间,效率也低,因此运行时需要用到性能优异的GPU等更好的设备。实际中,为了发挥卷积神经网络的作用,将卷积神经网络运用到终端设备中,例如手机和航拍设备等移动设备,然而像手机这样的移动终端设备内存以及计算能力较小,不适合将网络直接使用到当中去,因此研究人员们提出了适用于移动设备的卷积神经网络,也就是轻量化卷积神经网络。轻量化结构是指结构分类精度满足应用需求,移动设备能承担其结构参数量和计算量。轻量化结构的特点为一能加快运用到移动设备的效率,二为其占用空间小、计算量小并且能够节约流量。在效率方面相较于传统的卷积神经网络有了很大的提升,因此更受研究人员们的青睐。
2016年,提出的第一个轻量化网络结构Fire模块,是由IANDOLA等[4]根据之前的网络结构提出来的,命名为SqueezeNet。SqueezeNet的分类精度跟AlexNet能够达到基本相同,但其结构参数量仅为后者的五十分之一。
本文主要针对SqueezeNet网络中由于压缩了参数,存在准确率不理想的问题,提出了引入残差网络,增加跳层结构和网络宽度的VansNet,以提升网络的准确性以及效率。
1卷积神经网络
1.1卷积神经网络简介
随着人工智能的高速发展,深度学习也随之在图像识别、语音识别和自然语言处理等科技、大数据等应用领域飞速发展,从而引起了研究人员们的广泛重视与研究。其中深度学习的经典代表算法CNN在分类领域中成为研究人员重点研究的对象,这是由于卷积神经网络在进行图像分类时,可以直接将原始的图像直接输入神经网络,不需要做像传统图像处理中繁琐的图像预处理工作,因而被广泛应用。
CNN是一种多层的神经网络[5],一个典型的卷积网络由卷积层、池化层和全连接层构成,擅长处理大图像、大数据等的相关问题,卷积网络通过卷积层与池化层的相互配合,组成多个卷积组,逐层进行特征提取,在卷积层完成操作之后,紧接着池化层降低数据维度,最后通过数个全连接层来完成所需分类。卷积神经网络其独特的优越性在于它的局部权值共享的特殊结构,其布局接近于实际的生物神经网络(如人的神经网络),CNN中权值共享这样的特殊结构有效地降低了网络的复杂性,尤其是将包含多维输入向量的图像直接输入到网络中,避免了分类和特征提取过程中数据重建的复杂方式。
1.2卷积神经网络的架构
CNN是一种前馈神经网络[6],是受到生物思考方式启发的多层感知器,它有着不同的类别层次,并且各层的工作方式和作用也不同。卷积神经网络架构与常规人工神经网络架构非常相似,可以响应周围单元,也可以进行大型的图像处理。卷积神经网络的基本结构一般分为:输入层、卷积层、池化层、全连接层和输出层五个部分,如图1所示。
输入特征的标准化有利于提升算法的运行效率和学习表现,卷积神经网络的输入层可以处理多维数据,在将图像的像素值输入卷积神经网络前,需在通道对原始图像进行归一化、去均值等操作。
在卷积层中,卷积层内部包含很多卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量,类似于一个前馈神经网络的神经元。计算输入图像的区域和滤波器的权重矩阵之间的点积,然后将其计算结果作为卷积层的输出,主要作用是对输入的数据提取特征。
池化层也称为欠采样或下采样,核心目标是在卷积神经网络上减小特征空间维度,进行特征选择和信息过滤。目前使用最广泛的池化操作有最大池化和平均池化,当使用最大池化层时,采用的是输入区域中的最大数量,而当使用平均池化时,采用的是输入区域中的平均值。
全连接层搭建在网络结构中的最后部分,等价于传统前馈神经网络中的隐含层,在一些卷积神经网络中由全局均值池化取代。
输出层的上游基本是全连接层,其工作原理与前馈神经网络的输出层相同。在分类任务中输出层通常是分类器。
1.3卷积神经网络的相关运算
1.3.1卷积运算
卷积神经网络使用卷积来提取图像的局部特征,其最核心的概念就是卷积,它的计算方法如下:
卷积神经网络的卷积操作方式和数学中的离散卷积是有一定的区别,虽然其卷积操作方式的定义是离散卷积,卷积操作实际上是用卷积核在图像矩阵上滑动,对卷积核矩阵与图像矩阵中对应位置元素相乘然后求和。卷积层内每个神经元都与前一层中位置接近的区域的多个神经元相连,卷积核的参数值决定了卷积结果的投票能力,即卷积核与对应的像素点的重合区域,参数权值越大,投票比重越大。
1.3.2下采样
池化通常紧跟在CNN的卷积层之后,主要用于特征降维,减少网络要学习的数据和参数的数量,防止过拟合,扩大感受视野,实现平移、旋转和尺度不变性,同时提高模型的容错性。主要的池化方法:最大池化法,对领域内特征点取最大值;平均池化法,对领域特征点求平均。
进行卷积,主要目的是减少Feature Map的维数。SqueezeNet的核心在于Fire Module,可以理解为网络中的小模块,Fire Module包含两个部分:Squeeze层与Expand层,如图2所示,Squeeze层采用1×1卷积层对输入特征数据进行卷积,主要目的是减少输入特征的通道数,也即是降维。Expand层分别采用1×1和3×3卷积,然后再拼接,具体操作如图3所示。
本文對SqueezeNet的改进主要为两点:第一,扩展网络宽度,在略增加网络参数的前提下,提高模型准确率;第二,引入残差网络的思想,防止在训练过程中出现梯度消失和梯度爆炸,增强网络对图像分类的泛化能力,并且提高网络效率。如图5所示,在原网络结构的基础上增加Fire模块,以提高网络的准确率,同时引入残差思想增加运算效率,没有增加网络的深度而是适当增加网络的宽度。在Fire模块中,在原基础上引入残差网络的思想,增加跳层结构,防止训练过程中梯度消失,以提高网络的效率,如图6所示。
4实验分析
实验是基于Tensorflow[8]来构建和训练VansNet,且卷积网络模型的训练使用了 GPU并行处理。实验环境的主要参数:Intel(R) Xeon(R) CPU X5690 @ 3.47 GHz和NVIDIA GeForce RTX 2080Ti GPU,操作系统为Linux系统,实验平台为python36。
由于该网络对不同数据集具有普遍适应能力,本文采用以下两个不同的数据集[9-10]进行实验,如表1所示:
使用测试集的分类精度、网络参数量和网络计算量作为评估指标[11]。网络计算量指推断一张图片所需浮点数的运算次数。通过输入通道数量、输出通道数量、卷积核的高和宽以及输出通道的高和宽的相应关系来得到网络计算量。
实验首先将VansNet与AlexNet、ResNet、SqueezeNet分别在同一数据集下做对比实验。
将四种网络结构在Flowers5 数据集上进行比较,如图7所示,四种网络结构均在迭代20轮后趋近于稳定。在迭代25~30轮后,AlexNet与SqueezeNet趋近于稳定,而VansNet和ResNet保持小范围的波动。文中提到AlexNet和SqueezeNet分类精度基本相同,而在此次实验中两者的分类精度不同,这是因为本次实验使用的数据集Flowers5自身存在的问题所致,并不能代表普遍情况,在其他数据集下测试两者的分类精度是相同的,如ImageNet ̄1K数据集以及文中的Simpsons13数据集等。从此次实验结果可知,相较于其他三种网络结构,在数据集Flowers5上,VansNet的分类精度优于其余三者。
将四种网络在数据集Simpsons13上进行实验,如图8所示,在迭代15~20轮后,ResNet与VansNet趋近于稳定,在迭代25~30轮后,AlexNet与 SqueezeNet趋近于稳定。由训练结果图像可知,分类精度由高到低依次为ResNet 、VansNet、SqueezeNet、AlexNet。并且由训练结果图像可见AlexNet与SqueezeNet分类精度几乎相同,同时VansNet相较于SqueezeNet 有更好的分类精度。从此次实验结果可知,数据集Simpsons13上,VansNet相较于AlexNet与SqueezeNet,能达到较好的分类精度。
将四种网络AlexNet、ResNet、SqueezeNet和VansNet的参数量、计算量作比较,如表2所示。AlexNet 结构参数量最大,计算量处于四种网络之间。这是因为AlexNet含三个全连接层,且三个全连接层中的参数占比较大造成AlexNet总体参数量较大;计算量不是很大是由于AlexNet中结构层数不多并且卷积层的参数较少。ResNet结构参数量处于四种网络之间,而计算量却是最大的。这是因为 ResNet中应用了全局平均池化层,有效地减少结构参数量;计算量最大是由于ResNet结构中含有较多的层数。SqueezeNet结构参数量很小,计算量处于四种结构之间。这是因为SqueezeNet结构中Fire模块使用了较少的3×3的卷积,故其参数量很小;计算量偏大是因为Fire模块中1×1的卷积较多。VansNet采用跳层结构以及增加网络宽度使得其计算量最小但参数量比SqueezeNet稍高一些。
5结语
本文引入残差的思想,增加跳层结构以及增加SqueezeNet中网络结构的宽度,使得VansNet在分类精度和计算量上均优于SqueezeNet。但VansNet在参数量上还是稍高于SqueezeNet,这是由于在VansNet中增加宽度的策略自然增加了模块数使得参数量略微提高。将来可进一步研究VansNet网络模型的改进,使得网络更加轻量化以及在其他领域中运用的可行性。
参考文献:
[1]吴正文.卷积神经网络在图像分类中的应用研究[D]. 成都:电子科技大学,2015.
[2]KRIZHEVSKY A, SUTSKEVER I, HINTON G . ImageNet Classification with Deep Convolutional Neural Networks[C]//2012 IEEE Conference on Computer Vision and Pattern Recognition.USA:IEEE,2012:154-161.