齐振岭,刘羿漩,梁允泉,董苗苗,葛广英
(1.聊城大学山东省光通信科学与技术重点实验室,山东 聊城 252059;2.聊城大学物理科学与信息工程学院;3.聊城大学计算机学院)
牡丹花卉色泽艳丽,富丽堂皇,素有“花中之王”的美誉。同时,由于牡丹花卉大而香,故又有“国色天香”之称[1]。我国现有牡丹品种数千个,牡丹花卉具有文化价值和生态价值,还能够产生巨大的经济价值。牡丹花卉种类繁多,即使同品种的牡丹花卉也存在着形态、结构、习性等显著性差异,人们对牡丹花卉的认知有许多的局限性。因此,可用深度学习模型来实现牡丹花卉的分类识别,使人们可以快速地了解到所见牡丹的品种及其特性,以作进一步观赏或研究。
在深度学习领域,卷积神经网络被广泛应用于图像分类、目标检测以及自然语言处理等领域[2]。基于深度学习的分类任务在植物识别方面取得了巨大优势,得益于越来越多的深度学习模型不断涌现。自从2012年,AlexKrizhevsk等提出了AlexNet算法,在随后的一段时间,VGG 网络、GoogleNet 网络、ResNet 网络和Densenet 网络等各种卷积神经网络结构不断问世;自从2017 年谷歌提出的Transformer 在自然语言处理取得突破性的进展之后,Image Transformer[3]、Vision Transformer[4]和Swin Transformer[5]等各种Transformer网络结构不断提出并被运用在计算机视觉领域。
目前,许多学者将深度学习应用到植物图像分类领域当中。刘晶晶等[6]根据牡丹层数和花瓣数较多的特点,提取牡丹纹理和形状特征,使用改进的BP 神经网络算法进行分类的方法,可以很好地识别出牡丹及牡丹大类。左羽等[7]将VGGNet16 与全卷积网络相结合,把其中的全连接层改为卷积层,构造一个新的VGG16模型在植物的图像分类能达到较理想的效果。周婷等[8]针对图像数据集类别不平衡的情况,通过修改网络结构与损失函数提出一种改进ResNet 的藏药植物图像分类算法,较好地平衡了模型的参数量与识别准确率。
为进一步提升卷积神经网络的图像分类性能,构建适合牡丹花卉分类识别的网络模型,将ConvNeXt-Tiny[9]算法应用于牡丹花卉分类识别,以增强对牡丹花卉不同品种特征的提取,从而实现对牡丹花卉更加精准快速的分类识别。
ConvNeXt-Tiny 网络结构如图1 所示,一共有四个阶段(stage),当输入图片依次经过时,特征图的尺寸不断减少,通道数增加,特征图中的特征感受野不断扩大。
将图像输入到网络中,经过图像预处理(stem)模块,其中采用大小为4 步长为4 的卷积核,主要目的是将图片的尺寸缩放四倍,然后经过四个stage之后进行分类和回归。每个阶段由下采样(Downsample)层和ConvNeXt Block 模块组成。采样层主要作用是降低图片的分辨率,其中第一个stage 除外,图片的特征图经下采样输入到ConvNeXt Block中。
ConvNeXt-Tiny 模型将ResNet50 中卷积模块堆叠次数由(3,4,6,3)修改为(3,3,9,3),主要目的是通过卷积核的规则重新组合之前提取到的特征,获得更为复杂的特征。在卷积神经网络中,图像中的复杂特征可以使用简单的特征通过某种方式重新组合起来,卷积操作可以把图像单一的特征变成更复杂的图像特征,越复杂的图像特征越利于图像的分类。
ConvNeXt Block 模块借鉴ResNeXt[10]中的分组卷积(GroupConvolution)形式,ResNeXt 相对普通的ResNet 而言,在模型复杂度和精度之间做到了更好的平衡。具体网络结构如图1(b)所示。
图1 ConvNeXt-Tiny网络架构
ConvNeXt Block 模型的核心是通过建立前面层与后面层之间的‘短路连接’,这有助于训练过程中梯度的反向传播,从而能训练出更深层的网络模型。此模块采用MobileNet v2[11]中的Inverted bottoleneck 架构,即两头细、中间粗;采用深度可分离卷积和增大了输入宽度;把深度可分离卷积层上移,卷积核的大小由3×3变成7×7。
1.2.1 层标准化
ConvNeXt-Tiny 采用更少的归一化层,并且只在ConvNeXt Block中的深度可分离卷积层后加入,其归一化层选择层标准化(Layer Normalization,LN)。LN的基本思想是:用同层的隐层神经元响应值作为集合范围,来求均值和方差,即独立于批尺度(BatchSize)的算法样本数的多少不会影响到LN 的计算,主要作用是减轻模型对参数初始化的依赖,并且可以加快模型的训练提高模型的精确度。
1.2.2 激活函数
ConvNext-Tiny 采用更少的激活函数,并且只在ConvNeXtBlock 模块中的1×1 卷积层后加入,其激化函数选择高斯误差线性单元(GELU)激活函数。高斯误差线性单位,可以被认为是ReLU 的一个更平滑的变体,其公式如⑴所示。
1.2.3 下采样层
ConvNeXt-Tiny 采用单独的下采样层,由LN 层和卷积核为2 步长为2 的卷积层组成。除第一个ConvNeXt Block模块外,其余的每个模块开始之前都加入单独的下采样层,主要是用来改变特征图的尺寸,方便后续的操作提取更加复杂的特征。具体网络结构如图1(c)所示。
在牡丹花卉图像分类识别数据集构建过程中,采集图像时可能会受光照或拍摄仪器的影响,采集到的图像存在偏亮或偏暗的问题。这些问题可能会对后面训练模型识别牡丹花卉的准确率产生影响,所以需要对图像进行增强处理来提高图像的对比度,使模型能够观察到更多内容,从而具有更好的泛化能力。
为使数据集具有更好的效果,采用在牡丹园拍摄的图片与中国植物图像库部分图像作为数据集,共计九大色系中的22 种类1165 张。部分牡丹花卉如图2所示。为满足数据在多样性方面的要求,对现有数据集进行数据预处理,扩充数据集的广度和深度,从而增强模型的鲁棒性,防止过拟合,最后将图片输入到网络中训练。
图2 部分牡丹花卉图片
本文选取三种措施对图像进行预处理,对原图像的纹理结构和几何学特征进行随机的变换:①进行水平镜像翻转,增加网络在方向上的不变性;②添加随机椒盐噪声或高斯噪声,提高网络对图像失真的不变性;③随机改变图像的亮度或对比度,增强网络对图像色彩的不变性。
经过不同措施处理后牡丹花卉图像数据集共3692 张符合网络训练要求。其中按照训练集与测试集的比例为9:1 进行划分,即训练集3330 张,测试集362 张。每类牡丹花卉图像数量如图3 所示,由图3可以看出,数据分布极不平衡,因此,该数据集对网络处理类别不平衡的能力要求非常高。
本实验采用编程环境为python3.8,PyTorch1.11深度学习框架,硬件环境处理器型号为Inter(R)Core(TM)i5-11400 @2.6GHz,显卡型号为NVIDIA GeForce RTX 3060,内存为16GB。
训练过程中迭代次数(epochs)共为100,其中前10 个epochs 为热身训练,批尺度大小为16,使用AdamW[12]算法加快模型收敛,采用余弦退火衰减(Cosine annealing decay)算法降低学习率。具体参数如表1所示。
表1 网络训练具体参数
训练过程中采用Mixup[13]和Cutmix[14]数据增强技巧,来提升模型鲁棒性;采用随机擦除(Randomerasing)数据增强方法,来提高模型泛化能力;引入标签平滑(LabelSmoothing)正则化策略,抑制训练过程中过拟合。
3.3.1 评价指标
利用以下指标对模型进行性能评估:精度、召回率和准确率。具体公式如下:
其中,TP和FP分别为模型预测为正和负的正样本,FN和TN和分别为模型预测为正和负的负样本。
3.3.2 不同模型实验结果分析
为验证模型对牡丹花卉分类识别的有效性和优越性,选取Resnet50、MobileNet v2、DenseNet121、Vision Transformer(ViT)与Swin Transformer(Swin-T)模型在相同条件下进行对比训练并分析性能。各模型在牡丹花卉图像分类识别数据集上的准确率和损失值随训练变化过程如图4、图5所示。
图4 不同模型在牡丹花卉图像分类识别数据集上准确率曲线
图5 不同模型在牡丹花卉图像分类识别数据集上损失值曲线
为验证本文模型的分类优劣程度,选取模型在数据测试集上的准确率、在各类别上取得的平均精度和平均召回率以及模型的参数量以及计算量作为评价模型的指标。其中,Params 表示模型参数量,FLOPs表示模型的浮点运算数量。模型的参数量表示训练时所需要占用的计算机内存的大小,参数量越大,对计算机硬件的要求就越高。不同模型在测试集上的结果与对比如表2所示。
表2 不同模型在牡丹花卉图像分类识别数据集上的识别结果
由表2 可知,基于ConvNeXt-Tiny 模型在牡丹花卉图像分类识别数据集上获得的准确率高于其余模型1.3%至4.9%不等,极大的提高数据的利用率;在牡丹花卉各类别上的平均精度和平均召回率都高于其余模型0.1%至4.9%不等,极大的提高了模型对数据样本分布不均匀的能力;ConvNeXt-Tiny 模型的参数量和计算量与Swin Transformer 模型相近,模型复杂度较小,可以加快处理图像的速度。本文提出的ConvNeXt-Tiny 模型应用于牡丹的花卉分类识别任务,该模型较好地平衡了模型的复杂度和分类精度,模型可行且有效。
3.3.3 显示界面设计
设计的界面主要由四个功能模块组成:主界面模块、加载图像模块,加载模型识别模块,显示图像模块组成。牡丹花卉分类识别系统的实现步骤:①打开牡丹花卉图像分类识别显示界面;②点击输入图像按钮,用户选择一张图片加载进来并显示在界面左侧部分;③点击识别按钮,界面会加载ConvNeXt-Tiny 模型,然后对输入的图片进行识别,最终把识别结果显示在界面标签处;⑤关闭牡丹花卉图像分类识别显示界面。
如图6所示,该界面准确识别出牡丹品种,各功能正常运行。
图6 牡丹花卉图像分类识别界面
本文构建了牡丹花卉图像数据集,提出了将ConvNeXt-Tiny模型应用于牡丹花卉图像的识别与分类,并设计了牡丹花卉分类识别显示界面。实验表明,ConvNeXt-Tiny 模型在牡丹花卉图像数据集上达到了98.3%的分类准确率,相比于其他模型极大提高了数据的利用率。
未来的研究工作中,还需增加牡丹花卉种类,进一步扩充数据集,在更多类别的牡丹花卉图像上进行验证模型;尝试将牡丹花卉分类识别模型部署到移动设备上进行实际应用。