1. 引言
迄今为止,世界上发现的花卉类别已经有36万种,由于花卉所在的背景复杂和本身类别之间的相似性,靠人眼难以识别。随着电子技术的迅速发展,人们使用手机、相机等获取花卉图像越来越方便,怎样自动识别花卉图像受到了广泛关注 [1] 。因此,研究如何快速、准确地识别花卉成为当前研究的热点。
传统的人工提取特征进行图像识别的方法,计算复杂且工作繁琐。随着模式识别领域不断的发展,深度学习算法逐渐兴起。深度学习算法与传统图像识别方法不同,可以自动学习特征,在图像检测和分类等领域有很好的表现。其中卷积神经网络(Convolutional Neural Network, CNN),是深度学习算法中一种主流的网络模型。CNN通过输入的大量图像数据,逐层抽取特征,根据这些特征进行图像识别 [2] 。研究者将深度学习算法引入识别花卉图像的问题中,并取得了很好的结果 [3] 。王思霖对LeNet-5进行改进,提出了一种基于CNN的花卉图像识别网络,利用TensorFlow框架进行搭建,实现了对10种不同类别花卉的识别,最终测试集准确率为76% [4] 。廖明霜等人基于RseNet进行改进,通过更换卷积核以及池化层的方法,保留更多花卉特征,通过不同数据集测试,都有不错的效果,满足实时性和准确性的特点 [5] 。付清华针对花卉识别准确率低的问题,提出了一种基于迁移学习的CNN网络,采用VGG-16和RseNet50作为教师模型,对其进行迁移、微调,最终在Oxford 17 Flowers数据集上准确率为88.54% [6] 。
综上所述,CNN在解决花卉识别问题上有一定的优势,但由于花卉图像拍摄时的视角、光照等问题,使得花卉识别的难度提高。且主流的卷积神经网络VGG模型比如VGG-16,虽然具有很好的识别效果,但其模型较复杂,参数量大,且计算复杂度较高,耗费时间长,不满足花卉图像检测对于实时性的要求。针对这种情况,本文构建了基于CNN的轻量化网络模型,通过两个卷积层提取图像特征,最大池化层降维,而后加入数据扁平化,从卷积层过渡到全连接层。然后接两个全连接层统一卷积层学到的局部特征,最后通过Softmax层建立分类器。为防止过拟合现象的发生,还在网络种增加了Dropout层。同时使用Adam算法进行优化,加快网络收敛。经实验,本文网络模型在参数量上大大少于AlexNet以及VGG-16,在测试集上准确率为92.76%,达到了不错的效果,为移动端部署提供了一定的思路。
2. 模型搭建
2.1. LeNet-5模型
LeNet5是1994年由Yann LeCun提出的第一个卷积神经网络 [7] 。图1为其网络结构图。虽然是只有5层的小网络,但CNN网络模型的提出,做出了当之无愧的开创性的工作,使得卷积层在神经网络中得到了引用。而且卷积的出现使得神经网络实现了共享权值,也为计算机减少了大量的参数计算,并且可以在图像不同的位置提取出局部的特征学习。使用池化层(下采样)是因为图像特征的精准位置与其相对位置相比,相对位置更重要一些,采用池化不仅可以降维,还可以使更多的信息被神经网络所采用。

Figure 1. LeNet-5 network structure
图1. LeNet-5网络结构
2.2. 模型搭建
本文网络结构以LeNet-5模型为参考进行构建,模型具体结构如图2所示。本文模型设定输入为72 × 72 × 3,采用2层卷积层提取图像特征,每个卷积层设定为6个3 × 3卷积核,采用Relu激活函数。而后通过池化层进行降维,采用最大池化,设定步长为2,池化核大小为2 × 2,激活函数同样使用Relu。之后加入数据扁平化,从卷积层过渡到全连接层。然后通过2个全连接层加随机失活层,将学习到的局部特征进行组合统一,提高模型的鲁棒性。激活函数采用Relu,第1个全连接层设定为1024个神经元,第2个设定为128。同时加入Dropout防止过拟合,设定失活率为50%。最后通过Softmax层进行多分类。
2.3. 损失函数
本文采用Softmax激活函数对损失函数进行激活。采用交叉熵损失函数作为本文损失函数。其是一个典型的凸函数,在梯度下降时不易陷入局部最优。由于其损失仅和正确的类别概率成正比,与使用激活函数的导数无关,所以收敛较快。且求导计算简单,反向传播计算速度快,式(1)为本文损失函数公式。
(1)
其中,i为样本;c为真实类别标签;N为样本个数;M为分类类别数目;
为符号函数,若样本i的真实类别为c则取1,否则为0;
为预测样本i属于类别c的概率。
2.4. Dropout
在训练过程中经常会遇到过拟合现象。常见的过拟合原因主要是学习过度和样本特征不均衡,细分之下有训练模型中数据参数太多、样本噪声大或者是模型的不合理设置等等。本文为了防止过拟合的出现,使用了Dropout。Dropout的主要作用是要把提取出来的不重要的特征抛弃,如背景或者一些不相关的因素,用来增强模型鲁棒性。采用随机失活的策略,可以大大降低特征检测器之间的耦合度,使得权重的分配不再受到局部特征的限制,进而提升了模型的泛化能力。添加Dropout虽然可以防止过拟合,但这样模型有时候需要多个特征一起才可以判断其分类,导致了神经元提取的特征耦合度太高,神经网络的鲁棒性仍不够 [8] 。基于此,本文添加了2层Dropout,并将其失活率设为0.5,随机失活50%的神经元,增强神经网络的鲁棒性,提高其准确率。
2.5. Adam优化器
梯度下降是将所有数据集载入之后去计算梯度,然后执行沿着梯度相反的方向更新权重。优点是在凸函数能收敛到最小值。但此方法计算量较大,收敛较慢。同时梯度下降也逃不出鞍点,容易收敛到局部最小值 [9] 。之后有学者提出了改进的梯度下降算法Adam算法,它结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点,对内存需求较小。可以为不同的参数计算不同的自适应学习率,适用于大多非凸优化、大数据集和高维空间。同时选择自适应学习率的算法,可以有效加快网络的收敛速度 [10] 。
由于本文所使用的数据较稀疏,所以一般情况下使用自适应学习率的优化方法效果较好。在自适应学习率算法中Adam,RMSprop,Adadelta三者表现结果都是类似的,而其中Adam表现效果略优于RMSprop和Adadelta这2种算法,所以本文采用Adam算法进行梯度更新。
3. 实验结果与分析
3.1. 数据集
本文数据集为自建数据集,图像由网上爬取而来,共有1360幅的花卉图像,其中有17种花卉,每种花卉有80幅图像。
由于本文使用到的数据集较小,网络模型训练效果较差,故采用数据扩充的方式对数据进行增强,保存扩充后数据,使数据数目得到提升,神经网络具有更好的泛化效果。本文采用离线增强的方法,将原本数据图像分别经过90˚,180˚和270˚的随机旋转,并在旋转的基础上调节图像饱和度,亮度,对比度,锐度等操作进行扩充。图片从1360幅增加到了26500幅图像,再将其按照训练集,测试集,验证集比例为6:2:2对数据集进行划分,划分后的训练集有15900幅,验证集与测试集各5300幅图像。最后将图像的宽度与高度更改为72 × 72的大小,为网络输入做准备。图3为扩充后的部分图像。

Figure 3. Selected images after data enhancement
图3. 数据增强后的部分图像
3.2. 测试结果与分析
图4为未进行增强数据以及添加Dropout时,训练过程中训练集和验证集准确率曲线图。从图中可以看出随着迭代次数的增加网络逐渐收敛但是有较大的振幅跟回升现象。训练集准确率较高但验证集准确率基本最高只能达到80%左右,相差较多,出现了过拟合现象。

Figure 4. Accuracy plots of the training and validation sets before modification
图4. 未修改前训练集和验证集准确率曲线图
图5和图6是添加Dropout以及数据增强后的训练结果曲线图。图5为训练集和验证集准确率曲线图,图6为损失曲线图。从图中可看出在增强数据以及增加Dropout层后,acc跟loss都得到了很大的提升。最终验证集准确率提升到了92.757%,验证集的loss也下降至0.2363。

Figure 5. Accuracy graphs of the modified training and validation sets
图5. 修改后训练集和验证集准确率曲线图

Figure 6. Loss value plots for the modified training and validation sets
图6. 修改后训练集和验证集损失值曲线图
将训练好的模型进行导出,采用如图7所示图像输入网络中,得到预测结果如图8所示,从图8中可看出本文模型对输入的17种花卉图像识别结果均正确。

Figure 7. Images of various types of flowers (entered in order)
图7. 各类花卉图像(依顺序输入)
3.3. 实验结果对比
本文网络模型与经典的LeNet-5、AlexNet以及VGG-16在参数量和在本文数据集上的准确率对比如表1所示。从表1中可看出本文网络模型的参数量虽然较LeNet-5较多,但大大少于AlexNet和VGG-16。在准确率方面优于其他网络模型。其中,由于LeNet-5只有5层网络,参数量少,虽然运行速度快,但是在准确率方面远远低于其他网络模型。从表中可以看出本文算法在综合考虑准确率和实时性的方面表现更好,比准确率较高的经典算法的更加轻量。

Table 1. Comparison of network parameters
表1. 网络参数对比
4. 总结
针对主流CNN网络模型较复杂,参数量大,耗费时间长等问题,本文在经典的卷积神经网络(LeNet5)的基础上进行研究和改进,搭建了本文CNN网络模型。在网络种增加了数据扁平化进行过渡连接。同时添加了Dropout层防止过拟合,为了加快训练速度采用Adam算法进行优化。最终对自建数据集进行数据增广后作为本文最终数据集,在数据集上测试测试集的准确率达到了92.76%,loss下降为0.2363。而后利用每种花卉各一张图片进行测试其准确性。经测试,本文网络收敛速度快,鲁棒性强,达到了不错的效果。
基金项目
在此特别感谢广州软件学院校级科研项目对本文的支持,项目编号:ky202201,ky202207,KY202305。