基于轻量级特征融合卷积网络的图像分类算法

2021-11-18 02:19陈鑫华钱雪忠
计算机工程 2021年11期
关键词:错误率集上瓶颈

陈鑫华,钱雪忠,宋 威

(1.江南大学人工智能与计算机学院,江苏无锡 214122;2.江南大学物联网技术应用教育部工程研究中心,江苏 无锡 214122;3.江南大学 江苏省模式识别与计算智能工程实验室,江苏无锡 214122)

0 概述

深度学习是机器学习领域的研究热点之一,卷积神经网络(Convolutional Neural Network,CNN)作为深度学习的代表算法,广泛应用于计算机视觉、自然语言处理、信息检索、图像识别和分类等领域[1]。随着网络规模扩大,网络结构越来越复杂,因此,需要设计更轻量级的网络模型应用于深度学习的各个领域。

卷积网络模型的轻量化改进主要有浅层压缩和深层压缩两个方向。浅层压缩通过网络剪枝、量化、编码等方式对模型进行压缩。文献[2]提出一种通道裁剪方法,通过判断每层通道的灵敏度以逐层裁剪网络模型,在VGG 网络上参数压缩了约80%,但通道裁剪是细粒度裁剪,能删除大量通道并降低网络性能。文献[3]提出一种混合裁剪方法,结合核裁剪以及权重裁剪,通过对卷积核低秩分解,增加稀疏性以降低计算消耗,在精度降低很小的情况下,获得较好的压缩倍率,但稀疏网络还没有成熟的框架或硬件来支持,所以只能有限地提升速度。深层压缩通过设计新的网络模块和改变网络模型结构来达到轻量化的效果。IANDOLA 等[4]提出SqueezeNet,利用Fire module 对输入通道进行压缩和扩张,减少了整个模型的参数量。文献[5]提出ShuffleNet,将输入通道进行分组,并且为了加强各组间信息流通,提出混洗操作,将来自不同组的特征进行重新排列。MEHTA 等[6]提出EspNet,将标准卷积分解为1×1 逐点卷积和空间金字塔空洞卷积,不仅增大了感受野还减少了计算量。但是过多增加分组卷积会增大内存访问成本,使得网络结构更复杂,导致研究成本和时间成本增大,从而限制轻量级卷积网络应用于移动设备。

本文提出轻量级特征融合卷积神经网络MS-FNet。利用不同大小的卷积核对输入特征图进行处理,加入空洞卷积和瓶颈结构提取不同的特征,同时使用卷积层代替全连接层,以减少参数量并降低计算资源的消耗,提高网络的分类精度和学习能力。

1 相关工作

传统CNN 结构通过简单的堆叠卷积层和池化层来实现,然后不断加深网络层数来达到较高的精度。但这样的网络参数量十分庞大,易产生过拟合现象,不利于应用,并且随着网络层数的加深,会发生梯度消失现象,网络结构的优化也变得越来越困难。

Inception 模块结构[7]是GoogleMind 提出的一类高性能CNN,其特点是将传统的卷积分解,使用不同尺度的卷积核来代替,将同一个输入使用多种不同尺度卷积核来卷积运算,再将运算完成的结果进行合并输出,利用特征融合获得比单一卷积核更丰富的特征,在有限的计算资源下使网络的深度和宽度得到扩充,也使网络模型的分类结果更精确。Inception 模块结构如图1 所示。

图1 Inception 模块结构Fig.1 Structure of Inception module

HE、HUANG[8-9]等提出在网络模块中引入1×1卷积层形成瓶颈结构,不仅能降低网络参数量,还能提升网络的计算效率。标准卷积层和瓶颈结构卷积层结构如图2 所示。假设输入输出特征图的数量N均为128,从图2(a)可以看出,标准卷积层参数量P=128×3×3×128=147 456。从图2(b)可以看出,瓶颈结构卷积层的参数量P=128×1×1×32+32×3×3×32+32×1×1×128=17 408。

图2 标准卷积与瓶颈结构Fig.2 Standard convolution and bottleneck structure

通过计算可以看出,使用瓶颈结构计算的参数量约为标准卷积层参数量的1/8。由于瓶颈结构比标准卷积结构更深,网络的非线性表达能力也更强,因此通过瓶颈结构既减少了网络参数,又增加了网络深度,提高了网络的运行效率。

在CNN 中卷积层之后一般会对特征图进行下采样,导致信息丢失。针对这一问题,在网络结构中加入空洞卷积[10],使得网络模型参数和计算量不变的同时扩大感受野,提高网络性能。空洞卷积patch尺寸如式(1)所示:

其中:超参数r为每个像素之间填充r-1 个空格。假设卷积核尺寸为k×k,空洞卷积步长为r,则相当于用于计算卷积的k2个数值分别从特征图中相隔r-1的位置获取,使得感受野从k×k变为k+(r-1)×(k-1)。空洞卷积其实是一种特殊的数据采样方式,使数据采样由密集变为稀疏,并不会改变网络参数,而是改变了输入数据的采样方式。因此,空洞卷积可以在网络模型中无缝使用,不需要改变网络模型的结构,而且也不会增加额外的参数和计算量。

为加深网络深度,SZEGEDY 等[11]提出卷积核分解思想,例如,将5×5 等大卷积核分解为2 个3×3卷积核,将n×n卷积核非对称分解为1×n和n×1 的2 个连续卷积核。通过卷积核分解不仅能提升网络的深度和宽度,而且有效降低了网络的参数量和计算量。卷积核分解示意图如图3 所示。从图3(a)可以看出,将5×5 卷积核分解为2 个连续的3×3 卷积核,由于5×5 卷积核有25 个参数,而2 个3×3 卷积核只有18 个参数,在达到相同卷积效果的同时,参数量降低了28%。从图3(b)可以看出,将3×3 卷积核分解为1×3 卷积核和3×1 卷积核,3×3 卷积核有9 个参数,而分解后卷积核有6 个参数,在达到相同卷积效果的同时,参数量降低了33%。

图3 卷积核分解示意图Fig.3 Schematic diagram of convolutional kernel factorization

2 图像分类方法改进

2.1 融合模块结构

基于上述网络模型结构,本文网络基于Inception 架构的设计思路,采用模块化设计,通过调整网络模块组件来增加卷积分支通道数以形成集成结构。因此,本文提出MS-FNet 网络模型,解决了CNN 单个卷积核提取特征不丰富、网络结构复杂、参数冗余的问题。融合模块结构如图4 所示。

图4 融合模块结构Fig.4 Structure of fusion module

在网络设计中,网络尺寸越大,参数越多,容易导致过拟合现象。文献[12]提出如果把CNN 看作数据集的概率分布,那么将具有高度相关的输出进行聚类可以构建最优的网络结构。从图4 可以看出,本文网络融合模块利用不同像素的特征来代表提取到不同的细节,然后将这些相关性较高的节点聚类连接到一起,相当于在多个尺度上同时进行卷积,搭建符合上述理论的多分支结构。在本文融合模块中,一部分选取了2 个3×3 卷积核代替原来的5×5 卷积核;另一部分选取了3×3 卷积核,并分别用1×3 和3×1 卷积核进行替代,在每个卷积核前和池化操作后分别加入1×1 卷积核降低特征图厚度。改进后模块的每个分支选用不同卷积核进行处理,使提取的图像特征更丰富,同时替代的卷积核在保证性能的同时能有效减少网络参数。由于使用的卷积核尺寸较小,获得感受野也小,因此通过引入空洞卷积来扩大感受野且不增加额外的参数。

本文融合模块的参数量F(i,n)和计算量Fl(i,n)如式(2)、式(3)所示:

其中:i为当前卷积核序号;n为卷积核个数;k×k为当前卷积核尺寸;Cin为输入通道数;Cout为输出通道数;Hi和Wi分别为输出特征图的高度和宽度。

2.2 全连接层处理

全连接层一般连接在CNN 的最后一个单层卷积层末端,这层的神经元与前一层所有神经元全部连接,其作用是整合网络学习到的特征表达,然后全部输入到分类器中,但会加大网络参数使得网络结构变得冗余,占据网络中绝大多数的计算开销。例如,VGG-16[13]网络模型中全部参数约1.4 亿,而全连接层中的参数有1.24 亿左右,约占网络所有参数90%,使得网络模型参数冗余,易造成过拟合现象且效率低。

为解决这个问题,研究人员提出利用全局平均池化或卷积操作的方式来代替全连接层。全局平均池 化(Global Average Pooling,GAP)由LIN 等[14]提出,其原理是对于输出每个通道的特征图中所有像素计算一个平均值,经过GAP 后得到一个维度等于输出类别数的特征向量,可以更好地将分类类别与最后一个卷积层的特征图对应起来。虽然通过GAP降低了参数量,缓解了过拟合现象,但是将网络训练的压力转移到了前面的卷积层[15],减缓了网络整体的收敛速度。另一种方法是使用语义分割任务中的全卷积网络[16],该方法使用卷积层取代最后的全连接层,输出一个特征图,将特征图转换为原始输入大小,通过上采样实现分类。如果网络最后是全连接层,输入神经元个数是固定的,可以反推出上层卷积层输出也是固定的,继续反推可知网络的输入分辨率是固定的;如果使用卷积层代替全连接层,网络中只有卷积层,则网络的输出分辨率随着输入分辨率而得出,输出特征图中每个像素点都对应输入图片的一个区域,保留了更多特征。由于卷积是局部连接,需要计算局部信息,全连接是计算全局信息,这样可以减少计算量,使得网络训练更加高效。

经初步实验,网络最后卷积层输出特征图尺寸为14×14×96,假设全连接层隐藏层节点为1 000,则使用全连接层的参数量约为1.8×107;当直接使用14×14 的大卷积核对输入特征图进行卷积操作后,参数量约为3.6×106,是全连接层的1/5,分类精度与全连接层相比提高1%左右;若将14×14 的大卷积核进行分解,使用3×3 和4×4 的小卷积核代替,则参数量约为8.8×104,是全连接层的1/200,分类精度与使用14×14 卷积核相比只损失0.3%左右,且收敛速度更快,网络模型泛化能力更强。

2.3 MS-FNet 网络模型结构

MS-FNet 网络模型结构如图5 所示,采用模块化设计方式将各模块按照拓扑结构进行有序连接,最终形成整体结构。从图5 可以看出,s表示步长,k表示卷积核尺寸,p表示池化窗口尺寸。首先,对网络输入进行卷积池化操作,将提取到的特征进行组合,从而增加下一层的输出通道;然后,在每个融合模块前后都使用1×1 卷积操作,对特征图进行降维或者升维操作,同时使用很小的计算量增加了一层非线性层,增强了级联操作后特征图的空间信息交流,实现不同感受野特征通道之间的特征融合;最后,使用逐层卷积代替全连接层进行分类输出。

图5 MS-FNet 网络模型结构Fig.5 Structure of MS-FNet network model

评价算法时间性能的主要指标是算法时间复杂度,假设本文MS-FNet 网络模型输入特征图维数为n,则MS-FNet 模型整体的时间复杂度如式(4)所示:

其中:N为网络的深度;i为第i层卷积层;M为输出特征图的尺寸;K为卷积核尺寸;Ni-1为前一层特征图的维数;Ni为下一层特征图的维数。

2.4 网络收敛性分析

在每次卷积后都对特征图进行批归一化[16](Batch Normalization,BN)处理,经过BN 层的数据均值为0,标准差为1,降低了特征间相关性,使网络输出规范到正态分布,防止出现梯度爆炸或梯度消失现象,加快网络收敛,缓解了网络过拟合现象。批归一化处理如式(5)所示:

其中:μB和分别为输出特征图的均值和方差;xi为特征图的序号;yi为经过批归一化处理后的输出;γ和β分别为学习参数。

采用ReLU 激活函数来激活卷积层,使网络收敛更快,防止梯度消失,增强特征稀疏性和非线性表达能力,其函数表示如式(6)所示:

本文网络模型使用交叉熵损失函数衡量预测值与真实值的误差,首先对网络最后一层输出通过softmax 求出属于某类的概率yi,然后将yi和样本的实际标签yi'做一个交叉熵,如式(7)、式(8)所示:

3 实验与分析

本文实验平台为GTX1080Ti GPU,使用的深度学习框架为TensorFlow[17],分别在MNIST、CIFAR-10和CIFAR-100 数据集上进行测试,通过网络的参数量和错误率来验证本文MS-FNet 网络模型的性能。

3.1 CIFAR-10 数据集实验

CIFAR-10 数据集共60 000 张RGB 三通道图像,尺寸为32 像素×32 像素,其中50 000 张图像用于训练,10 000 张图像用于测试,数据集由10 类组成,每类均有5 000 张训练图像和1 000 张测试图像。在模型训练前,先对样本进行预处理,对每张图像进行随机翻转,设置随机亮度变化和对比度变化,并且将图像裁剪成28 像素×28 像素的尺寸,以提高样本的利用率,使得样本图像既有随机噪声,还有数据增广作用。在CIFAR-10 数据集上,采用batch 大小为128,使用Adam 优化器,学习率设置为0.001。

在CIFAR-10 数据集,本文MS-FNet 网络模型参数设置如表1 所示。MS-FNet 网络模型每层操作产生的总参数量约为370 000。

表1 MS-FNet 网络模型参数设置Table 1 Parameters setting of MS-FNet network model

在CIFAR-10 数据集上MS-FNet 网络模型与其他网络模型的实验结果对比如表2 所示。从表2 可以看出,在CIFAR-10 数据集上MS-FNet 网络模型参数量仅 有 370 000,是 WideResNet 的 1/23,是SqueezeNet 的1/23,是FractalNet 的1/100。本 文MS-FNet 网络模型的参数量远低于传统CNN 模型,而MS-FNet 网络模型错误率只有6.19%。相对较低于其他模型,虽然WideResNet(宽度×4)和FractalNet的错误率更低,但是它们的参数量大于MS-FNet 网络模型。与DSENet(深度为40)和DSENet(深度为100)相比,在错误率相对较低的情况下,MS-FNet 网络模型大幅减少了网络深度,简化了网络的复杂度。与经典网络模型和一些最新网络模型相比,MS-FNet 模型具有更好的分类精度和泛化能力。

表2 在CIFAR-10数据集上不同网络模型的实验结果对比Table 2 Experimental results comparison among different network models on CIFAR-10 data set

3.2 CIFAR-100 数据集实验

CIFAR-100 数据集包含60 000 张RGB 三通道图像,尺寸为32 像素×32 像素,包含100 类,这100 类由20 个超类扩展而成。每类分别包含500 张训练图像和100 张测试图像。

在CIFAR-100 数据集上网络结构参数设置与CIFAR-10 数据集一致。采用的batch 大小为128,使用Adam 优化器,学习率设置为0.001。CIFAR-100数据集上MS-FNet 网络模型与其他网络模型的实验结果对比如表3 所示。从表3 可以看出,MS-FNet 网络模型的参数量是X-CNNS 的1/12,是DSENet(深度为100)的1/4,表明MS-FNet 网络模型在达到相对较低错误率的情况下,减少了网络的参数量。

表3 CIFAR-100 数据集上不同网络模型的实验结果对比Table 3 Experimental results comparison among different models on CIFAR-100 data set

3.3 MNIST 数据集实验

MNIST 数据集是手写数据库NIST 的子集,数据集中包含手写数字0~9,其中每类数字均有6 000 张训练图像和1 000 张测试图像,每张图像均为28 像素×28 像素的单通道图像,共70 000 张图像。由于MNIST 数据集较简单,所以在MS-FNet 网络模型的网络参数设置上,减少了卷积层和融合模块的数量,并且将特征图通道数减小为单通道。采用的batch大小为50,使用Adam 优化器,学习率设置为0.0001。

MNIST 数据集上本文MS-FNet 网络模型与其他网络模型的实验结果对比如表4 所示。从表4 可以看出,本文MS-FNet 网络模型的错误率仅0.42%,与其他网络模型相比有所降低,说明本文MS-FNet网络模型具有更好的分类能力。

表4 MNIST 数据集不同网络模型的错误率对比Table 4 Error rate comparison among different network models on MNIST data set

3.4 消融实验

本文MS-FNet 网络模型的核心是瓶颈结构和空洞卷积,在MNIST 数据集上进行两组消融实验分别对它们进行比较并验证。第一组验证空洞卷积对MS-FNet 网络模型性能的提升,第二组验证瓶颈结构对MS-FNet 网络模型性能的提升。

有空洞卷积和没有空洞卷积结果对比如表5 所示。从表5 可以看出,在相同的实验环境和迭代次数下,使用空洞卷积比不使用空洞卷积的训练时间少,随着训练迭代次数增多,使用空洞卷积和不使用空洞卷积网络模型的训练时间都有所增加,错误率均下降,但是使用空洞卷积比不使用空洞卷积网络模型的错误率略微下降。因此,在网络模型中适当添加空洞卷积可以加快网络模型的训练速度,使网络模型收敛快,从而提升网络性能。

表5 有空洞卷积和没有空洞卷积的实验结果对比Table 5 Experimental results comparison of dilated convolution and without dilated convolution

使用瓶颈结构和不使用瓶颈结构的实验结果如表6 所示。从表6 可以看出,在相同的实验环境和迭代次数下,随着训练次数增多,使用瓶颈结构和不使用瓶颈结构网络模型的训练时间都有所增加,而错误率均下降,但是使用瓶颈结构网络模型的训练时间比未使用瓶颈结构略微减少,错误率也有所下降。因此,在网络模型中适当添加瓶颈结构可以提升网络模型训练速度,并且降低网络模型错误率。

表6 使用瓶颈结构和不使用瓶颈结构的实验结果对比Table 6 Experimental results comparison of bottleneck structure and without bottleneck structure

3.5 网络性能分析

在CIFAR-10 数据集上不同方法的运行效率如表7 所示。在CIFAR-100 数据集上不同方法的运行效率如表8 所示。从表7 和表8 可以看出,在网络最后采用卷积层的网络模型每秒训练的样本数量最多,每批次的训练时间最短,同时达到的错误率也最低。说明采用卷积层代替全连接层网络模型的表现能力和学习能力更强。

表7 在CIFAR-10 数据集上不同方法的运行效率对比Table 7 Running efficiency comparison among different methods on CIFAR-10 data set

表8 在CIFAR-100 数据集上不同方法的运行效率对比Table 8 Running efficiency comparison among different methods on CIFAR-100 data set

为了更直观分析本文MS-FNet 网络模型的网络性能,在MNIST 数据集上全连接层、全局平均池化层和卷积层方法的准确率曲线如图6 所示。从图6 可以看出,随着迭代次数增加,3 种方法的准确率都呈上升趋势,但使用卷积层的准确率上升最快,最终达到的准确率也最高。全局平均池化层曲线比卷积层上升稍慢,但最终的准确率与卷积层接近。全连接层曲线上升最缓慢,且最终准确率值也最低。因此,使用卷积层代替全连接层的网络模型能加快网络的训练速度,有效提升其准确率。

图6 在MNIST 数据集上不同方法的准确率曲线Fig.6 Accuracy curves of different methods on MNIST data set

在CIFAR-10 数据集上用不同方法处理的MSFNet 网络模型交叉熵损失函数曲线如图7 所示。在网络模型的最后分别使用全连接层、全局平均池化层和卷积层3 种不同方法。通过这3 种方法的损失函数曲线分析MS-FNet 网络模型的收敛能力。从图7 可以看出,随着迭代次数的增加,3 种方法的损失函数曲线都趋于收敛,然而全连接层曲线收敛于较高位置,而且下降最慢,全局平均池化层曲线比全连接层曲线下降快,收敛数值也更小,卷积层曲线下降最快,比全局平均池化层曲线收敛更小的数值。因此,使用卷积层代替全连接层使MS-FNet 网络模型收敛更快,效果更好。

图7 在CIFAR-10 数据集上不同方法的交叉熵损失曲线Fig.7 Cross entropy loss curves of different methods on CIFAR-10 data set

4 结束语

针对CNN 参数多和网络结构复杂的特点,本文设计轻量级特征融合卷积神经网络MS-FNet。通过多个分支不同大小的卷积核提取不同尺度的特征,以增加网络宽度并提高鲁棒性,同时使用卷积层代替传统的全连接层,减少网络模型的参数量。实验结果表明,MS-FNet 网络模型结构合理,收敛速度快,在参数量远小于对比CNN 模型的情况下,错误率较低且具有较强的泛化能力。后续将优化MS-FNet 网络模型的参数设置,进一步提升网络模型的学习能力。

猜你喜欢
错误率集上瓶颈
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
小学生分数计算高错误率成因及对策
复扇形指标集上的分布混沌
正视错误,寻求策略
突破雾霾治理的瓶颈
解析小学高段学生英语单词抄写作业错误原因
突破瓶颈 实现多赢
民营医院发展瓶颈
如何渡过初创瓶颈期