基于AlexNet的图像识别与分类算法
2022-03-30段傲,李莉,杨旭
段 傲,李 莉,杨 旭
(天津职业技术师范大学电子工程学院,天津 300222)
世界上大约有200~300种不同品种的狗,有的品种极其相似,分类标准复杂且难以准确区分。目前,狗品种识别大都基于人眼直接观察,这种方法准确性不高,且受人工经验和主观因素的影响较大。基于深度学习的图像识别是机器视觉领域的发展前沿,在很多领域都有广泛应用[1],如在人脸识别领域,有使用深入研究面孔的自动面部识别系统[2];在场景识别领域,场景特征融合技术有效提高了场景识别精度[3];在农业领域,可以进行作物识别[4]等。本文提出基于AlexNet的图像识别与分类算法,旨在解决人眼识别犬类准确率不高且效率低的问题。
1 深度学习神经网络
1.1 卷积神经网络模型
卷积神经网络属于前馈神经网络,其具有一定的深层结构。模拟人的大脑表面视觉形成过程的卷积神经网络,也成功地成为了目前机器视觉领域内的最实用的模型结构[5]。图像输入卷积神经网络后,直接进入输入层,该层负责原始图像的预处理,如平均、分散化等;然后进入卷积层,对图像中的每个特点起首局部感知;第3层是BN层,BN层为批量归一化层,对卷积层抓取的特征进行归一化操作,以便增加学习率,还可以提高训练速度以及改善流经网络的梯度[6];第4层为池化层,用来提高网络模型的泛化性;最后通过全连接层输出。
1.2 卷积神经网络理论
卷积层是卷积神经网络最重要的部分,图像特点的抓取取决于卷积层。卷积层经由过程卷积模板进行对象的提取,跟随卷积模板的转变,卷积层也会在不同的特征通道进行运算,从而实现不同特点的提取和相同特点的整合。根据数据的变化,通过优化算法可以将卷积核调整到适合的权值,进而使提取的特征最为有效[7]。
卷积神经网络的运算公式为
式中:W为输入图片的宽和高;F为卷积/池化和的大小;S为卷积/池化的步距;P为padding的步数。
卷积过程描述为
式中:kil(j′)为第j′层的i卷积核的权重;xl(rj)为l层的第j个卷积局部区域;W为卷积核的宽度[8]。
2 AlexNet网络算法及网络结构的改进
2.1 AlexNet网络算法
AlexNet网络是深度卷积神经网络的起源。在2012年的ImageNet竞赛图像分类任务中,石翠萍等[9]采用AlexNet网络结构取得了最好的成绩,这也使得卷积神经网络在图像分类中取得了阶段性成功。本研究对近几年比较具有代表性的AlexNet[10]进行改进。
AlexNet网络包含5个卷积层(Conv),3个最大池化层(Max pooling)和3个全连接层(dense)。卷积层和最大池化层交替排布,不同的卷积层有不同的卷积核,提取低层次特征的能力也不同。
AlexNet网络的亮点在于利用双GPU进行网络加速训练,对照利用单GPU训练学习,学习速度有很大的提高。AlexNet网络使用的激活函数是ReLU函数,而不是传统的Sigmiod函数,这也加快了学习的速度,并且很好地解决了梯度弥撒问题。LRN局部响应归一化是在ReLU后对局部神经元建立竞争机制,使得响应较大的值变得相对更大,抑制响应较小的神经元,加强网络的泛化本领。
Hinton在2012年的AlexNet网络中给出其具体的计算式为
式中:a为卷积层后的输出结果,其表现为一个四维数组;N表示通道数;n为相邻的卷积核;k为偏差;α和β为自定义值[11]。
此外,AlexNet还增加了Dropout层,其以0.5的概率随机失活神经元,失活的神经元便不再参与进行前向传播与反向传播,由于神经元并不是依靠某一个特定神经元而存在,因此Dropout技术有效减少了神经元之间复杂的连接关系,在一定程度上也有效地减少了过拟合问题。
2.2 深度学习的正则化
深度学习经由过程神经网络将抽样空间映射到概率特征分布空间。在机器学习的框架下,对于描述模型的复杂程度,部分学者认为Error=Bias(偏差)+Variance(方差),这可以理解为模型的预测错误率由两部分组成:第一部分为预测值的期望与真实值之间的差距,即为偏差;第二部分为预测值的离散程度。方差越大,数据的分布越离散,就会带来过拟合问题[12]。简单来说,当训练集与验证集的特征分布差距很大,或者模型相较于样本量过于复杂时,机器通过学习方法得到的结果并不乐观,这说明模型已过拟合。为了解决过拟合问题,通常使用正则化方法,在正则化中会保留所有的特征变量,但这样会相应减少特征变量的数量级,简而言之,即为损失函数加一个正则化项。可先计算出正则化项,再把其加在目标函数,使其影响目标函数最优点的选取[12]。L1和L2是最常见的正则化范例,它们通过增加一个额外项来更新目标函数,因此称该额外项为正则项。常见的L2正则化公式为
2.3 改进的AlexNet模型
为了构建训练识别准确率高和收敛速度快的神经网络模型,本文提出了一种改进的AlexNet卷积神经网络模型。AlexNet每层使用不同的卷积核,因此每层提取的低层次特征不同。本模型分别使用11×11的卷积核48个,7×7的卷积核128个,5×5的卷积核192个,3×3的卷积核128个。仍使用RelU作为网络的激活函数,3个最大池化层来缩小模型的大小,并且增加了被提取特征的鲁棒性。此外,在模型的通道维度增加了注意力机制(attention mechanism),这样网络通过自主学习的方式得到不同特征通道的重要程度,通过给重要程度高的特征通道增加一个权值达到使网络关注一些特征通道的作用。然后使用4 096和1 024个神经元进行全连接,每一个全连接层后面加上Dropout层,并且在原有Dropout层上继续增加了权重衰减(正则化)。改进后的网络框架如图1所示。
图1 改进后的AlexNet深度学习网络框架
经典的卷积层或者全连接层在进行特征信息的传递时,可能会发生信息的缺失和损耗等,分类狗的图片需要识别较高层次的特征,因此特征信息损耗、丢失等问题会降低算法的识别效率。注意力机制可以认为是一种资源分配的机制,根据对象的重要程度分配资源而不是平均分配。选取目标任务中重要的关键信息是注意力机制的主要任务[13]。
保持输入和输出神经元不变的情况下,Dropout层随机失活了一些隐藏的神经元,再重新把输入通过已经改变的神经网络进行前向传播,再把得到的loss函数结果通过神经网络反向传播。首先选取一小部分的训练样本,先进行一个前向的传输过程,后将loss函数结果反向传输回来,然后依据随机梯度下降法更新参数[14],通过不断地重复这一过程来进行训练。正则化是指对算法的修改,本质上是在削减泛化的偏差,是在目标函数后面加上参数的L1或L2范数和。
3 实验结果及分析
3.1 实验环境
实验环境为Windows 10 64位系统,采用pycharm 2020.3.3 64 bit,搭 载Intel(R)Core(TM)i5-10200H CPU@2.40 GHz 2.40GHz处理器。操作环境为TensorFlow+python3.7。
3.2 数据集选择与详细参数
斯坦福大学犬类数据集是由Stanford创建,该数据集给出大量的犬类图片信息,包含了世界各地的120种犬的图像数据。此数据集是经由过程ImageNet中的图像和解释构建的,使用此数据集,有利于本文方法与其他方法在相同的条件下进行对比实验。该数据集包含了20 580张犬类图片,分为120种差别类别的犬的品类。本实验把全部图像按7∶3的比例分为训练集和测试集,包含训练集14 458张,测试集6 122张。原数据集每张图片大小不等,在预处理中把每张图片的像素都修改为227×227。样本被分为0~119号,分别对应一种类别的犬图像。图5给出了9种不同种类犬的图片。
图2 9种不同种类犬图片
AlexNet网络的默认输入是227×227,由于数据集图像的来源复杂且种类、大小不统一,首先需要统一图像的分辨率,本实验中将所有图像的分辨率修改为227×227。
3.3 网络训练
本实验的训练过程采取了哥伦比亚大学的犬类图像数据集,训练集和测试集的比例为7∶3,初始学习率设置为0.000 05,batch_size为80,epoch为200。Loss函数使用特征重建损失函数,标准形式为
式中:Cj、Hj、Wj分别为特征图的通道数、长和宽;j为网络的第j层;l为损失函数的损失值。
Dropout值对网络训练结果有一定的影响,设置失活一定比例神经元节点,失活的神经元节点便不再更新其对应的权值,AlexNet网络默认的Dropout值为0.5。在0.4~0.7进行Dropout值的改动,实验发现,Dropout值在0.5时,损失率为0.189,模型训练效果最好。因此,本实验的Dropout值也设置为0.5。
3.4 实验结果分析
实验验证了在不使用正则化、使用L1正则化和L2正则化,以及在改进后的网络结构加正则化的条件下,对随机相同的犬图像进行预测识别,识别准确率和运算时间的对比结果如表1所示。
表1 不同方法识别准确率及训练时间的比较
由表1可知,对于所验证的随机犬种类,本文方法的识别率和训练速度均得到相应提高。
4 结语
本文针对人工识别犬种类抽检率低、准确性不高、劳动强度大且受人为因素影响等弊端,利用深度学习和传统的分类算法,在AlexNet网络原有结构上进行了改进,减少卷积层并修改卷积核的大小和个数,增加注意力机制与正则化。本文改进的结果网络模型可以有效、快速地对犬种类进行识别与预测。由于数据集的局限性,本文算法的适用性还需进一步验证。