苏宝峰 沈 磊 陈 山 米志文 宋育阳 陆 南
(1.西北农林科技大学机械与电子工程学院, 陕西杨凌 712100; 2.农业农村部农业物联网重点实验室, 陕西杨凌 712100;3.西北农林科技大学葡萄酒学院, 陕西杨凌 712100; 4.西北农林科技大学水利与建筑工程学院, 陕西杨凌 712100)
葡萄品种的有效分类可以帮助葡萄种植者更为方便管理与精准决策[1]。葡萄在发育成熟过程中,容易受到病害的侵染,了解特定品种对特定疾病的易感性,对其进行有效识别,将有助于更具体和更有针对性地防治葡萄病害[2]。
传统上,鉴定葡萄品种的方法通常需要对叶片破坏性取样或者手动提取图像特征,其具有一定破坏性且耗时耗力[3-6]。以卷积神经网络为代表的深度学习方法[7-10],在图像的分类中受到广泛应用。文献[11]基于54幅榕属植物叶片图像,利用人工神经网络和支持向量机方法,提出了一种自动识别3种具有相似叶形态的榕属植物的系统,该系统对榕属植物叶片图像识别准确率达到了83.3%,证明了深度学习对叶片图像的识别能力。
田间环境复杂多变,不同葡萄品种之间的图像具有高度相似性,且易受到自然背景干扰。因此,在田间自然环境背景下识别葡萄品种是一个难点。对于葡萄品种识别的早期工作中,文献[12]提出了一种在夜间环境下针对于彩色图像中的葡萄串检测和定位的系统来区分白葡萄和红葡萄。作物真实的生长环境条件具有高度异质性[13],并且很难重复。通过夜间受控环境来消除自然光照及背景条件的影响受限于特定的应用场景,难以在实际中推广与应用。
文献[2]提出了一种基于AlexNet体系结构和迁移学习[14-16]的方法,在田间环境下通过葡萄叶片图像对6个葡萄品种进行识别分类,测试准确率仅为77.30%。该研究利用葡萄叶片图像鉴别葡萄品种的方法,仅限于葡萄特定的生长时期。然而,不同生长阶段下葡萄叶片的尺寸、颜色、形态与纹理结构具有明显的差异[17],只针对某一时期的葡萄叶片识别在实际生产应用上存在一定的局限性。
葡萄品种的分类属于典型的图像多特征分类问题。然而以上研究多针对单一时期葡萄特征开展研究,模型难以泛化到更为异构的数据集,且在特征学习中因自然环境的影响而受限于特定场景[14,18]。因此,为了能够解决田间复杂背景条件下对不同生长时期的葡萄品种鉴别问题,本文在田间自然环境下采集12类不同品种不同时期葡萄特征图像,通过引入注意力机制降低自然环境影响,改进ResNet-50[19],提出一种在田间环境下对葡萄多特征图像鉴别的方法,并对深度学习可解释性差的问题,通过可视化对网络作用机制进行解释,以期对不同生长时期的葡萄品种进行可靠的识别分类。
本实验图像采集地点为陕西省杨凌区曹新庄实验农场酿酒葡萄生产示范基地,收集了12类酿酒葡萄品种在不同生长时期的嫩梢、幼叶以及成熟叶片特征图像,如图1所示。采集时间集中在2020年6—8月,都在晴天以及阴天的自然光线条件下进行。相机型号为SONY ILCE-5100L,分辨率为3 008像素×1 668像素,光圈值为f/3.2,曝光时间为1/60 s。每类品种每种特征各200幅,合计7 200幅图像。
将收集到的图像按7∶2∶1的比例随机划分为训练集、验证集以及测试集。为了保持每类样本特征图像数量均衡、消除随机性,每类品种中的3种特征图像的数量均相等。
实验在Linux系统环境下进行(Ubuntu 20.04),计算机显卡为NVIDIA Titan RTX,显存24 GB,CPU型号为Intel(R) Xeon(R) Silver 4214@2.20 GHz,深度学习框架为Pytorch(Python 3.6,Pytorch 1.2,torchvision 0.4)。
针对田间自然背景环境下对葡萄多特征识别分类存在的问题,本研究基于注意力机制,通过改进ResNet-50,提出一种新的网络模型ResNet50-SE,并利用迁移学习方法对模型进行训练,以实现不同生长时期下葡萄品种鉴别。
1.3.1SE模块
SENet[20](Squeeze-and-excitation networks)核心思想在于通过网络学习特征权重,放大有效的特征通道,抑制无效或效果小的特征通道,从而使训练模型达到更好的结果。SE模块为其核心结构,是一种注意力机制,如图2所示。SE模块主要由挤压(Squeeze,Fsq)和激发(Excitation,Fex)两步操作组成,Squeeze操作先将输入尺寸为H×W×C的特征图(其中H、W、C分别为输入特征图长、宽和特征通道数)采用全局平均池化(Global average pooling)计算,得到1×1×C的特征向量,使其具有全局感受野,然后进入两层全连接层,全连接层之间采用ReLU 激活函数,并且输入与输出的特征通道维度相同。Excitation操作通过最后的Sigmoid激活函数计算生成每个特征通道的权重。最后Scale操作(Fscale)将输出的特征通道权值向量与原输入特征图相乘,完成在通道维度上的原始特征标定,使提取的特征具有更强的指向性,从而提高分类性能[21]。
1.3.2ResNet模型
随着网络层数的加深,网络性能逐渐出现退化问题[19],ResNet模型通过堆叠残差结构,可有效解决这一问题[22]。残差结构如图3所示,X为网络输入,它使用了一种“Shortcut connection”连接方式,将网络原本要学习的特征X从捷径分支与从经过权重层学到的特征F(X)直接相加,并通过ReLU函数进行激活。ResNet-50作为其经典结构,是目前主流的图像分类方法之一。
1.3.3改进的ResNet-50模型
通过对ResNet-50模型多特征识别分类精度以及可视化结果分析,在田间复杂背景条件下,容易受到背景影响,使模型提取到一些无效信息,从而降低分类性能。基于注意力机制的方法,使得模型关注并加强有效的分类信息,而忽略掉一些无用的特征信息,从而提高模型的鲁棒性。鉴于SE模块对特征提取的校正性作用,本研究提出一种将SE模块嵌入ResNet-50模型结构,为区别于其它SE模块嵌入ResNet-50的网络模型,将其命名为ResNet50-SE,模型结构如图4所示。
ResNet50-SE模型通过在每个残差结构中嵌入SE模块以及在模型第1层(Conv1)和输出层中引入SE模块对网络提取到的特征进行校正。网络主要的组成结构为Bottleneck-SE结构(图4),主要有4种不同的类型,其数量分别为3、4、6、3。Bottleneck-SE结构所使用的卷积核尺寸相同,主要区别在于卷积核的数量(即卷积核维度)以及SE模块中2个全连接层的输出维度不同,这是由于上一层残差结构输出通过与下一层的输出直接相加时维度需匹配。详细的网络结构参数如表1所示。
表1 ResNet50-SE网络结构参数Tab.1 ResNet50-SE network structure parameters
1.3.4模型训练与参数设计
由于大部分数据或任务都存在相关性,故本研究通过加载在ImageNet数据集[23]上预训练网络ResNet-50的部分权重信息对ResNet50-SE模型进行迁移学习,以加快模型的收敛速度。在模型训练过程中,将图像缩放至224像素×224像素×3作为网络输入尺寸。为了提高模型的鲁棒性,进行数据集增强,随机对图像进行水平、垂直翻转,同时对图像进行归一化处理。
通过多次组合实验,综合考虑到模型准确率和收敛时间。在训练时批次量(Batch size)设置为 16个样本,初始学习率(Learning rate)设置为 0.001,迭代周期(Epoch)设置为40。为防止模型过拟合,设置权值衰减(Weight decay)(也称为L2正则化)为10-4。同时,在每个Epoch下进行训练和验证前,数据都进行了随机打乱。
本实验采用带动量的随机梯度下降算法[14,24](Stochastic gradient descent with momentum,SGDM)更新参数和优化训练过程,参数更新函数表达式为
θi+1=θi-αΔLR(θi)+m(θi-θi-1)
(1)
式中i——迭代次数
θ——网络参数(权重矩阵W和偏置向量b)
ΔLR(θi)——损失函数梯度
m——动量因子α——学习率
训练过程中m设置为0.9,学习率α调整采用等间隔调整策略,每训练20个Epoch,学习率调整为αγ,其中γ为学习率调整倍数,设置为0.1。
在评估一个模型的性能时通常选取准确率(Accuracy)、精确度(Precision)、召回率(Recall)及特异度(Specificity)作为评价指标[14]。其中特异度计算公式为
(2)
式中S——特异度
Fp——假阳性样本数量
Tn——真阴性样本数量
对于深度学习网络可解释性差的问题,本研究利用Grad-CAM[25]的方法对模型在多特征提取中做出可视化解释,并通过T-SNE[26]算法在二维空间中可视化高维特征,对训练集提取到的多特征进行聚类分析进而直观评估模型的分类性能。
1.5.1Grad-CAM可视化
通过Grad-CAM对模型每一层提取的特征进行了可视化解释,以热力图的形式呈现模型用作分类最为关注的特征。它主要通过采用梯度的全局平均来计算特征的权重,首先计算c类别的模型得分对于某个卷积层的梯度,同时对上述过程得到的梯度信息,在每个通道维度上对各像素值取平均(类似全局平均池化),得到神经元重要性权重,第c类的分类得分为Sc,特征图尺寸为c1×c2,则
(3)
式中Z——特征图的像素数
通过加权平均,再取ReLU激活函数得到Grad-CAM特征图,计算公式为
(4)
Ai——第i个特征图
1.5.2t-SNE聚类
t-SNE是一种表示特征空间分布的方法,它通过在二维或三维图中给出每个数据点的位置来可视化高维数据,可直观地评估模型分类性能。t-SNE算法主要依据具有对称性的联合概率分布Pij来表示高维空间中样本点之间的距离[27]。本研究针对训练集中的12类葡萄品种的5 040幅葡萄特征图像,利用t-SNE算法观察每幅图像的高维特征分布。实验从葡萄分类模型(ResNet50-SE)的全连接层提取每幅图像的2 048维特征,对每个品种的10幅图像的特征求取平均值,并在二维空间中可视化高维特征,对特征进行层次聚类分析。Perplexity参数设置为30,迭代次数为1 000次。
为了测试改进网络模型ResNet50-SE的性能,在未参与模型训练以及验证过程的测试集中进行评估,生成的混淆矩阵如图5所示,通过计算得到模型准确率为88.75%,结果如表2所示。每类预测精确度均在79.4%以上,其中小芒森和马瑟兰品种的预测精确度达到了100%,但小芒森的召回率仅有75%。根据混淆矩阵图可知模型将小芒森误分为贵人香、黑比诺、雷司令、马尔贝克、霞多丽以及小味儿多,可能由于小芒森品种在某些纹理或颜色形状特征的水平上与上述的品种特征出现了混淆造成,也可能是由于拍摄角度和光照的影响导致。媚丽的召回率为100%,没有出现误分类现象,相较于其他品种,媚丽的特征更为显著。从表2中还可以得出每类品种的特异度均高于97.7%,说明模型对于误分类率很小。通过以上分析,证明了本研究所提出的改进模型在田间复杂背景条件下对葡萄品种的多特征识别分类具有较强的鲁棒性。
表2 测试集各品种预测精确度、召回率及特异度结果Tab.2 Precision, recall and specificity results of each variety in test set %
为测试ResNet50-SE模型在单个时期内对葡萄品种的分类性能,在相同训练条件下对模型在单个时期下的嫩梢、幼叶以及成熟叶片数据集分别训练,得到ResNet50-SE-T1、ResNet50-SE-T2、ResNet50-SE-T3模型。分别对模型在只包含单个时期图像测试集A和包含3个时期图像测试集B下进行测试,其对比结果如表3所示。
表3 单一时期模型对不同测试集测试结果Tab.3 Test results of single period model for different test sets %
由3种不同模型在不同测试集下的测试结果可得出,单一时期特征图像训练的ResNet50-SE-T1、ResNet50-SE-T2、ResNet50-SE-T3模型虽然在其当前单个时期模型测试集准确率较高,但对于包含3种不同时期特征图像的识别性能较差,从而也说明单一时期特征图像训练的模型对葡萄品种分类的鲁棒性较差,难以泛化到其他生长时期内。
在相同训练条件下,对4种典型的卷积神经网络(AlexNet[28]、GoogLeNet[29]、ResNet-50、VGG-16[30])进行迁移学习和比较,训练集的准确率结果如图6所示。从图6中可看出在第20个时期(Epoch)后,除AlexNet模型外,其他模型的训练集准确率维持在99.9%左右,虽然ResNet-50的准确率上升较其他模型快,但从图7中可知ResNet-50验证集损失值曲线随着训练的Epoch增加最终保持在0.299。然而ResNet50-SE模型最终达到收敛时损失值为0.216,相比于其他模型损失值较低。AlexNet模型对于葡萄识别分类效果最差,其原因在于AlexNet相比于其他模型网络深度不够,网络提取到的特征信息量较少。模型训练在20个Epoch前,VGG-16、AlexNet和ResNet-50验证集损失值波动较大,模型稳定性较差。GoogLeNet模型收敛过程虽较为平稳,但准确率与ResNet50-SE相比较低,从而说明ResNet50-SE模型对于葡萄品种的多特征图像识别分类方面具有显著优势。
同时本研究对所提出的模型在验证集准确率以及测试集的准确率和召回率进行对比分析,结果如表4所示。结果表明ResNet50-SE在验证集上准确率为94.10%,在测试集上准确率为88.75%,平均召回率为89.17%。ResNet50-SE相比于AlexNet 、GoogLeNet、ResNet-50、VGG-16,验证集准确率分别提高了11.46、5.42、1.04、4.10个百分点,测试集准确率分别提高了13.61、7.64、0.70、6.53个百分点,平均召回率分别提高了14.04、8.04、1.12、6.94个百分点。
表4 各网络模型分类性能对比Tab.4 Comparison of classification performance of each network model %
2.4.1Grad-CAM可视化结果
随机挑选测试集的葡萄不同时期下的3幅特征图像,并且根据Grad-CAM方法生成模型每一层的可视化热力图,如图8所示。由图8可知,随着网络层数的加深,模型学习到的特征逐渐增加,并且由于SE模块注意力机制作用,降低了背景对于模型特征提取的影响。对于葡萄嫩梢,模型更多是提取到梢尖以及副梢部分的特征信息。对于幼叶和成熟叶片,模型更为关注叶片边缘的一些形状信息以及叶片的纹理特征信息。
同时,提取4种卷积神经网络的最后卷积层所提取特征的可视化热力图与Resnet50-SE进行比较,结果如图9所示。由图9可看出,AlexNet模型对于特征提取的效果最差,对于嫩梢和幼叶特征的提取易受到自然背景因素的影响,难以提取有效特征,对于幼叶特征关注范围较小,这也是在对2.3节所提到AlexNet对于其模型精度相较于其他模型较低的合理解释。ResNet50-SE对于嫩梢和幼叶特征提取效果均优于ResNet-50,而对于成熟叶片特征提取效果较差,这也是导致ResNet50-SE测试结果相较于ResNet-50优势不明显的重要原因,但是相较于其他3种模型(AlexNet、GoogLeNet、VGG-16)却有显著优势,同时也印证了2.3节模型性能对比结果。
为了证明SE模块在模型特征提取时的校正性,同时还探究了在ResNet-50模型Conv1层后引入SE模块所提取到的葡萄嫩梢、幼叶以及成熟叶片的特征,并且与Conv1层所提取的特征(图8)进行了比较,结果如图10所示。在网络Conv1层之后加入SE模块,将会强化有效特征,弱化一些无效或者低效的特征,使得模型在复杂田间背景条件下能捕获到用于分类的有效特征。
2.4.2t-SNE聚类结果
利用t-SNE算法在训练集上由ResNet50-SE模型所获取的2048维特征在二维空间(Dim1、Dim2)可视化特征聚类结果如图11所示,每种颜色代表不同葡萄品种的类别,共12种类别。同一品种的特征聚类的分布位置有所偏差,这是由于不同时期下同一品种葡萄的特征(如嫩梢、幼叶和成熟叶片)具有一定的差异,并且同一生长时期下不同葡萄品种之间的特征具有高度的相似性,但是从整体来看不同的品种在不同生长时期下所反映的特征呈现出较好的聚类效果,这是区分不同葡萄品种的关键。由2.1节模型测试结果可知,本文所提出的模型在田间复杂背景条件下对于葡萄高度相似的特征的识别具有较强的鲁棒性,也说明模型在训练集提取到了有利于葡萄识别分类的特征,进而证明了ResNet50-SE模型对不同葡萄品种在不同生长阶段下的多特征识别分类的有效性。
(1)提出的模型ResNet50-SE在田间复杂背景下对于葡萄多特征图像的识别具有较强的分类性能和鲁棒性,测试集准确率(Accuracy)达到了88.75%,平均召回率(Recall)为89.17%,相比于AlexNet、GoogLeNet、ResNet-50、VGG-16,ResNet50-SE验证集准确率分别提高了11.46、5.42、1.04、4.10个百分点,测试集准确率提高了13.61、7.64、0.70、6.53个百分点,平均召回率提高了14.04、8.04、1.12、6.94个百分点,分类效果均优于其他模型。
(2)利用Grad-CAM可视化方法,对于ResNet50-SE模型每一层所提取到的不同生长阶段下的葡萄特征通过激活热力图进行了可视化解释,并且对比了其他4种典型卷积神经网络提取特征可视化图。同时,对于引入SE模块前后3种不同时期下葡萄特征热力图进行对比,证明本研究所提出的ResNet50-SE模型对复杂背景条件下特征的提取具有较强的校正性。
(3)通过t-SNE算法对不同葡萄品种提取到的不同时期下的特征进行聚类分析,验证了ResNet50-SE模型在复杂田间背景环境下对葡萄多特征图像提取特征的有效性以及对葡萄品种鉴别的可靠性。