GSDCPeleeNet:基于PeleeNet 的高效轻量化卷积神经网络
2021-04-02倪伟健秦会斌
倪伟健,秦会斌
(杭州电子科技大学 电子信息学院 新型电子器件与应用研究所,浙江 杭州310018)
0 引言
随着深度学习理论的提出和硬件设备计算速度的不断突破,卷积神经网络在近年来得以迅速发展。 2012年,AlexNet[1]在ImageNet 大规模视觉识别挑战赛中获得了图像分类冠军。之后,为了提高网络模型的准确率,研究人员不断地加深卷积网络的深度,相继提出了性能更加优越的卷积神经网络,如VGG16[2]、GoogLeNet[3]和DenseNet[4]等。
这些网络准确率普遍较高,但是有着非常复杂的模型和很深的层次,参数量十分巨大。 在实际生活的应用中,模型往往需要在资源有限的嵌入式设备和移动设备上运行。因此,研究人员开始着手研究,并且相继提出了更高效的轻量级卷积神经网络。 它们保持了网络的性能,大大减少了模型的参数量,从而减少计算量,提升了模型速度。
旷视科技的ShuffleNet 在ResNet[5]单元上进行了改进,有两个创新的地方:逐点分组卷积和通道混洗[6]。WANG R J 等提出的PeleeNet 是一种轻量级网络,它在DenseNet 基础上进行了改进和创新,主要有五个方面的结构改进[7]。 ZHANG J N 等提出了一种卷积核及其压缩算法,通过这种卷积方法,ZHANG J N 等发明了轻量卷积神经网络SDChannelNets[8]。
可以看出,上述轻量卷积神经网络均存在一定不足。 在使用分组卷积时,为了解决分组卷积导致的信息丢失问题, 需要增加额外的操作。 在运用1×1 卷积时,会导致1×1 卷积的参数量在网络总参数量中占据大部分。 通过分析,这些网络需要通过调整相应的超参数来提高网络识别精度。这些操作往往会大大增加网络模型参数量。
为了解决这个不足,本文结合参数共享、密集连接的卷积方法和分组卷积,基于PeleeNet 网络,提出了轻量级卷积神经网络架构GSDCPeleeNet。 适当调节超参数, 在损失较小准确度甚至拥有更高准确度的情况下,减小了模型的参数量。
1 GSDCPeleeNet 网络模型的设计
1.1 SD-Channel-Wise 卷积层
标准卷积层扫描一个宽度和高度均为Df、通道数为m 的输入特征图的每个位置,输出一个宽度和高度均为Dg、通道数为n 的输出特征图。 标准卷积层卷积核的参数在通道方向上是相互独立的,所以标准的卷积层的卷积核的大小为DW·DH·m,一共有n 个,其中DW和DH(一般相等)是卷积核的宽度和高度。 因此,标准卷积层的参数量数量为:
其中,DW和DH分别是卷积核的宽度和高度,m 和n 分别是输入和输出特征图的通道数。
从上述分析中,标准卷积层参数的大小取决于输入特征通道数m 和输出特征通道数n 的乘积m·n 的大小。 为了能够减少卷积层的参数,SD-channel-wise 卷积层提出运用了参数共享、密集连接思想,它可以有效避免m·n 的大小对卷积层参数的影响。
常规卷积层的卷积核数量为n 个,而SD-channel-wise卷积层的卷积核只有1 个。输入特征图每次只和这个卷积核的一小部分进行卷积运算,这一小部分上的参数是共享的,即权值相等。 标准卷积层中的数个卷积核在卷积运算中是相互独立的。而该卷积核运用了密集连接的思想,在卷积过程中,有一部分的参数是重叠的,重叠的部分的参数的权值也是相同的。
为了更好地解释这个卷积层,先从一个高度和宽度均为1、通道数为m 的输入特征图说明。 这个通道数量为m 的输入特征图会逐次和这个卷积核的第(1+x·s)~第(m+x·s)通道进行卷积运算,最终获得一个输出通道数为n 的1×1 输出特征图。 其中,x 是小于n 的自然数,s是长卷积核通道方向上的步长。当输入宽度和高度不为1 时,卷积层的卷积核会和输入特征图的各个空间位置进行卷积运算。 SD-channel-wise 卷积层参数量的数量为:
经过这样参数共享和密集连接的卷积操作,SDchannel-wise 卷积层的参数量不再取决于m×n 的大小。因此,该卷积层的参数相比于标准卷积层,得以大幅度的下降。 需要特别注意的一点是,当通道方向上的步长s 等于或者大于输入特征图的通道数m 时,该卷积层相当于标准的卷积层。
1.2 GSD-Channel-Wise 卷积层
在SD-Channel-Wise 卷积的基础上, 本文提出了分组SD-Channel-Wise 卷积, 命名为GSD-Channel-Wise。在这里将给定的输入特征图分成g 组,每组都独立进行SD-Channel-Wise 卷积操作。 每个分组将会得到n/g 个输出特征图,通过将它们级联来获得整个卷积层的输出特征图。 由于该卷积层的参数共享且连接非常密集,经过分组后提取到的特征会更多,分组卷积的优势得以进一步发挥。
在分组卷积的过程中,相同分组中不同通道可能含有一样的信息,这样就有可能会丢失部分信息,导致输出特征图得到的信息非常有限。ShuffleNet 为了解决这个问题,增加了额外的操作——通道混洗,很好地解决了这个问题,但是也相应增加了网络的复杂度。
本文着手研究其他卷积神经网络,发现PeleeNet 的两路密集层和转换层能够很好地解决这个问题,它们结构如图1 所示。 其中,k 为增长率,两路密集层在Inception结构基础上进行改进,由两路不同的网络分支组成,用来获取不同尺度感受野。第一路经过一层标准的1×1 标准卷积缩减通道数量, 再经过一层3×3 卷积层学习特征;另一路则是在用1×1 卷积减少通道数量后,经过两层3×3 层卷积层来学习不同的特征。 转换层作为过渡,保持输入输出通道一致。
图1 PeleeNet 中两路密集层和转换层
通过分析PeleeNet 网络结构,发现两路密集层和转换层占据了网络的主要部分,且1×1 卷积的输入通道或者输出通道数目比较大,3×3 卷积的输入通道或者输出通道数目比较小,导致1×1 卷积的参数量占据了PeleeNet网络的参数量的60%以上。 本文分析提出,将上述两层结构的1×1 卷积替换成1×1GSD-Channel-Wise,3×3 卷积使用标准卷积。 经过这样的操作,不同分组间的信息可以重新流通。 同时因为运用了新的卷方法,新网络的参数数量在PeleeNet 的基础上大幅度减少。 改进后的两路密集层和转换层如图2 所示。
图2 GSDCPeleeNet 中改进的两路密集层和转换层
不同于常规的分组卷积,1×1GSD-Channel-Wise 卷积层中由于只有一个卷积核, 参数并没有大幅度地减少。 分成g 组的1×1GSD-Channel-Wise 卷积层参数量大小为:
通过将标准1×1 卷积层替换成参数共享的1×1GSD-Channel-Wise 卷积层,将参数缩减为原来的:
1×1GSD-Channel-Wise 卷积层的具体计算如图3 所示。 可以分析出,通过调整超参数卷积核通道方向上的步长s,模型的参数大小会相应改变。 而参数量的改变在一定程度上会影响准确率改变。当选取较小的s和适当的g 时,1×1GSD-Channel-Wise 相比于标准的1×1 标准卷积层,参数量可以减少为原来的数十分之一。
图3 1×1GSD-Channel-Wise 卷积层卷积计算图示
1.3 GSDCPeleeNet
本文遵循了PeleeNet 的基本架构,并对上述方法进行改进,将两路密集层和转换层1×1 标准卷积层替换成1×1GSD-Channel-Wise,提出了GSDCPeleeNet。 每一层输出维度和PeleeNe 保持一致。GSDCPeleeNet 的结构如表1所示。
ShuffleNet v2[9]中提出的高效网络设计实用准则中指出,较大的分组卷积会提升内存访问成本,导致模型的速度反而降低。 综合考虑精度和速度等因素的影响,将1×1GSD-Channel-Wise 卷积中设置分组数量为2。 在该卷积层中,选择长卷积核通道方向上的步长s 作为超参数,该超参数可以根据所需的精度和参数数量进行相应的调整。 本文设计了GSDCPeleeNe-s1、GSDCPeleeNe-s32、GSDCPeleeNe-s64、GSDCPeleeNe-s192 4 种模型,其在通道方向上的步长分别为1、32、64 和192。它们的参数总数在1.11 M~1.808 M 之间,占PeleeNet(2.8 M)的39.6%~64.5%。
表1 GSDCPeleeNet 网络结构
网路模型的复杂度常用浮点运算数衡量,可以理解为计算量(FLoating-point OPerations,FLOPS)。对于卷积层来说,计算量公式为:
其中,m 是输入特征图通道数,K 是卷积核大小,H、W是输出特征图大小,n 是输出通道数通道数。 不考虑偏置bias 时有-1,考虑时没有。 对于全连接层,计算量公式为:
其中,I 是输入神经元数,O 是输出神经元数。 经过计算,GSDCPeleeNet 的计算量为178.6 MFLOPs,为PeleeNet(508 MFLOPs)的35.1%。
2 实验研究
2.1 数据集和实验设置
实验主要在数据集CIFAR-10 和Fashion-MNIST 进行。 CIFAR-10 数据集中的图像均为彩色, 像素大小为32×32。它的训练集包含一共5 万张不同的图像,测试集包含一共1 万张不同的图像,共分为10 个不同的类别。Fashion-MNIST 数据集均是灰度图像,像素大小为28×28。它的训练集一共包含6 万张图像,测试集包含1 万张图像,与CIFAR-10 一样,被划分成为10 个不同的类别。
每张图片均进行一定的预处理。 在CIFAR-10 数据集,本文使用通道均值和标准差对它们进行归一化处理;在Fashion-MNIST 上,每张图像中的每个像素点均除以255 进行归一化处理。 同时数据集里的每张图片进行了数据增强,主要包括水平随机翻转和平移。
所有网络的训练方式均是随机梯度下降法[10],动量设置为0.9[11],权值衰减为5×10-4。训练批量大小设置成64,CIFAR-10 趟数设置成100,Fashion-MNIST 趟数设置成60;初始的学习率设置成0.1,在趟数25 和50 上分别除以10。 每一层后均增加批归一化BN(Batch Normalization)[12]层。 因为只是在各个网络上进行对比,每一层都没有设置Dropout[13]层。 实验训练所有数据集中的图片,并且在训练结束后记录测试集的准确率。
2.2 实验结果与分析
本文在CIFAR-10 和Fashion-MNIST 数据集上使用相同的分组数2 和不同的长卷积核通道方向上的步长s训练GSDCPeleeNet,再用同样条件训练其他不同的卷积神经网络。 在训练结束后,记录下两个数据集的识别正确率,结果如表2、表3 所示。 由于两个数据集的的像素大小分别为32×32×3 和28×28×1,因此GSDCPeleeNet 和PeleeNet 都没有使用茎块,增长率(growth rate)设置为32;DenseNet 中的密集层为3 层,转换层为2 层。
表2 各模型在CIFAR-10 上的识别准确度
表3 各模型在Fashion-MNIST 上的识别准确度
从表2 可以看出,在CIFAR-10 数据集中,GSDCPelee-Net 中长卷积核信道方向上的步长s 取1 时,该网络结构的参数大幅度减少,只有0.404M,在Peleenet 的基础上,大约减少了80%,准确率只大约降低了2%。 当步长s 逐渐增加时,网络结构的参量数量逐渐增大,而识别准确度有一个先上升后下降的过程。 这与SDChannelNets中步长s 和识别准确度呈正相关不同。 这是因为,输入特征图经过分组卷积后,过大的步长s 会使得更多的1×1GSD-Channel-Wise 转换成标准1×1 卷积,导致参数共享和密集连接与分组卷积结合的效果减弱。 因此,选取合适的步长s,可以在网络模型参数增加不大的情况下有一个很好的精准度。 当步长s 选取64 时,网络的识别准确率最高,为91.38%,优于PeleeNet 的90.76%和其他模型。
图4 是各个GSDCPeleeNet 模型在CIFAR-10 上数据集上的测试准确率曲线对比。
图4 GSDCPeleeNet 各模型在CIFAR-10 的准确率曲线
从表3 可以看出,该模型在不同的数据集中也表现出了较强的识别能力。 尤其是在Fashion-MNIST 这样的简单数据集中,GSDCPeleeNet-s1 也表现出了不错的识别能力,准确率达到94.01%。 GSDCPeleeNet-s64 的识别准确率仍然最高,达到了94.61%,优于PeleeNet 的94.35%和其他模型。 图5 是GSDCPeleeNet 各模型在Fashion-MNIST 的准确率曲线。
3 结束语
本文结合SD-Channel-Wise 卷积算法和分组卷积的方法,提出改进的GSD-Channel-Wise 卷积方法;并结合PeleeNet 网络的结构,用该卷积方法代替网络中标准的1×1 卷积,改进出了一种新型网络——GSDCPeleeNet。通过调整长卷积核通道方向上的超参数步长s,可以改变网络模型的参数量和准确度。 通过一定的实验,发现网络的识别准确度和步长s 之间没有成正比。 这表明,选择合适的步长s 可以在一个较少的模型参数量上取得更高的准确率。 实验结果也表明,与其他卷积神经网络相比,该卷积神经网络参数更少,而且识别效果差距不大甚至更佳。但由于PeleeNet 网络结构的限制,GSDCPeleeNet 的网络参数和计算量还是较大。 在接下去的工作中,希望通过结合其他轻量卷积神经网络结构和压缩方法,继续改进该网络。在进一步的工作中,还将会研究该网络在其他计算机视觉领域的应用,如目标检测和图像识别等。
图5 GSDCPeleeNet 各模型在Fashion-MNIST 的准确率曲线