-
植物病害是导致现代农林业减产的主要原因,及时准确的植物病害识别技术是实施有效防治的关键。在实际生产中,植物病害识别主要依靠人工肉眼观察及经验判断,需要人们在实地进行持续监测[1-2]。这种人工评估方法耗时费力且具有一定的主观性,阻碍了现代农林业的快速发展,因此,快速准确的植物病害自动识别成为了精准农业、高通量植物表型和智能温室等领域的研究热点[3-4]。基于图像处理的植物病害识别方法得到了广泛的研究和应用。早期的识别过程需要从图片中分割病斑,人工提取病斑特征,再利用机器学习算法对特征进行分类。HIARY等[5]提取病斑的纹理特征,采用k-means聚类算法和人工神经网络(artificial neural network,ANN)对5种植物病害进行识别,准确率达94%。TIAN等[6]提出用基于支持向量机(support vector machine,SVM)的多分类器识别小麦Triticum aestivum叶部病害。秦丰等[7]对4种苜蓿Medicago叶部病害进行识别研究,分析比较了多种分割方法、特征选择和分类方法。虽然以上方法在特定场景取得了较好效果,但仍无法实现病害的现场实时诊断。这些方法极大程度上基于阈值的病斑分割算法,对亮度、物体形态和遮挡程度都非常敏感[8−9],都只适合背景单一且对比度高的扫描式图像。此外,特征提取和选择复杂耗时,仅局限于有限几种病害,难以处理复杂背景的大数据。近年来,深度学习在计算机视觉领域取得重大突破。深度卷积网络神经网络(convolutional neural network,CNN)可在大数据中自动端到端提取特征,避免了人工图像分割和特征工程[10]。MOHANTY等[11]针对PlantVillage数据集[11] 54 306张植物病害图像,使用AlexNet[12]和GoogLeNet[13]识别38种植物病害。孙俊等[14]在同样的数据集上,将AlexNet进行改进,提出一种批归一化与全局池化相结合的识别模型。龙满生等[15]采用参数精调的迁移学习方式训练AlexNet,用于油茶Camellia oleifera病害图像识别。张建华等[16]基于改进的VGG16模型,通过迁移学习实现自然条件下棉花Anemone vitifolia病害图像分类。DECHANT等[17]提出了集成多个CNN的方法,实现玉米Zea mays大斑病图像的高精度识别。PICON等[18]利用深度残差网络ResNet对3种早期小麦病害进行识别,改善了复杂背景下的病害识别率。通常深度学习模型部署在云平台,需要将拍摄图像上传至云平台进行识别。但这种方法严重依赖高速的4G/5G无线网络和强大的云平台,不仅无法覆盖广大偏远农田林地,长时间大范围的上传与识别还导致能耗、流量及云服务成本大幅上涨,限制了物联网的建设规模。然而,目前的监控设备借助低成本低功耗加速芯片,即可支持边缘计算,仅在发现病害时通过低功耗广覆盖的NB-IoT网络[19]上报,可显著降低网络及云服务成本,促进大规模的农林业物联网普及。但现有的CNN模型计算量和参数量过大,不适用于边缘部署。轻量级模型MobileNet[20]在速度和精度两者间达到了一个较好的均衡,但其目标平台是手机等高端嵌入式平台,参数量及运算量仍超过PaddlePi等廉价边缘设备的承受能力。近年来,学术界也提出了多种模型压缩方法。模型通道剪枝[21]剪裁掉模型一部分冗余或低权重的卷积核,减少模型的参数量。量化[22]将模型由32 bit浮点数转化为定点整数,减少模型参数占用的空间。然而上述压缩方法仅应用于ResNet等重量级模型,尚未对MobileNet等轻量级模型压缩进行优化,而且这些压缩方法彼此相互独立,未能联合使用实现模型的深度压缩。为解决上述问题,本研究提出了面向边缘计算的植物病害识别模型构建方法,主要贡献为:①首次针对轻量级模型MobileNet实现深度压缩。②通过联合通道剪枝、量化等多种模型压缩方法,得到了深度压缩的轻量级边缘端模型,可在廉价边缘节点运行。③将模拟学习方法[23]与量化相结合,实现模型压缩的同时,提升识别效果,最后得到的边缘端模型可达到与原模型相近的识别准确率。
HTML
-
模型实现和训练采用的软件环境为Ubuntu1 6.04操作系统和PaddlePaddle深度学习框架,硬件环境为GPU工作站,使用NVIDIA Titan X显卡(12 GB显存)和AMD Ryzen 7 1700X处理器(32 GB内存)。采用模型的平均识别准确率(accuracy)作为衡量模型精度的标准。同时为了更好地评价模型的鲁棒性,将每类病害样本分别进行测试,计算每个类别的查准率(precision)、查全率(recall)以及查全率与查准率的加权平均分数,并在所有类别上求平均。
-
训练CNN模型需要对输入图片进行预处理。首先,利用数据增广技术对原图像进行变换,将训练图像变换为256×256大小,然后再随机剪枝成224×224,再进行随机水平翻转和随机垂直翻转。该过程极大扩充了训练数据集的多样性,可提升CNN模型的准确率,降低网络过拟合的风险。之后,计算训练集的红(R)、绿(G)、蓝(B)3个颜色通道的均值和方差,所有图像都减去该均值,除以方差,得到归一化后的数据作为CNN的输入,可加速训练过程收敛。对于测试集中的每一张图片,需要变换至224×224大小,减去训练集各通道均值,除以其方差进行归一化后就可以输入CNN模型进行识别。
利用迁移学习训练MobileNet,使用ImageNet数据集预训练的参数初始化模型,采用批量训练的方法将训练集分为多个批次(batch),使用随机梯度下降算法来实现模型优化,批次大小为32,遍历1次训练集中的所有图片作为1个周期(epoch),共迭代50个周期,初始学习率为0.005,动量值为0.9,之后每迭代20个周期就将学习率减小为原来的0.1倍。训练好的模型参数量为3.3 M,识别准确率为96.23%,查准率、查全率和加权平均分数分别为96.62%、95.46%和95.75%。
-
研究不同压缩率下本研究方法的有效性,使用不同的剪枝率,分别对模型减掉不同比例的FLOPs。结果表明:当剪枝率低于60%时,即使使用无模拟训练方法重新训练模型,得到的识别准确率与原MobileNet模型差别很小,说明原模型在该数据集上具有较高的冗余性,只有当剪枝率高于70%时,才能体现不同压缩方法表现的差距。因此,设置剪枝率为70%、80%和90%,对应的模型参数量大小为0.91、0.58和0.23 M,模型的参数量压缩了3.6、5.7、14.3倍,量化又将精度由32 bit降低至8 bit,压缩率为4倍,得到的边缘端模型的整体压缩率分别为14.4、22.8和57.2倍。为快速恢复剪枝后模型精度,首先利用模拟学习损失函数进行30个周期的32 bit浮点模型训练,使用随机梯度下降算法优化模型,批次大小为32,初始学习率为0.005。之后,每迭代15个周期就将学习率减小为原来的0.1倍。公式(2)的α值设置为1。之后再进行20个周期的量化模拟学习,学习率为0.005,公式(2)的α值为0.1,其余超参数值不变。训练结果如表1所示。
剪枝率/% 参数量/M 剪枝压缩率/倍 量化压缩率/倍 整体压缩率/倍 准确率/% 查准率/% 查全率/% 加权平均分数/% 70 0.91 3.6 4 14.4 95.99 96.18 94.41 94.92 80 0.58 5.7 4 22.8 95.55 95.51 93.52 93.99 90 0.23 14.3 4 57.2 94.58 94.87 92.41 93.15 Table 1. Plant disease recognition results of models on the edge
表1表明:整体压缩率分别为14.4、22.8和57.2倍的边缘端模型,识别准确率分别为95.99%、95.55%和94.58%,与迁移学习训练的MobileNet模型相比仅下降了0.24%、0.68%和1.65%。同时查准率、查全率和加权平均分数值也表明边缘端模型具有较高的鲁棒性。
不同压缩率的边缘端模型在测试集的混淆矩阵如图3所示。图3列出了58个类中的每类被正确分类的比例(对角线上的值)和被误识别为其他类的比例(非对角线上的值)。每类的编号与图1一致。可以看出:边缘端模型对不同植物的不同病害均具有较强的识别能力,但不同病害识别结果之间存在着较大的差异。58类病害中,这3个边缘端模型的识别准确率均超过90%的有43类,均超过80%的有51类,均超过70%的有55类。其中有11号哈密瓜健康叶、24号葫芦霜霉病、25号葡萄健康叶、39号树莓健康叶、46号草莓健康叶这5类的识别准确率在3个模型均达到了100%。识别效果最差,在3个模型上识别准确率几乎均低于70%的病害是12号木薯褐斑病(3个模型识别率分别为48.15%、58.33%、48.15%),35号马铃薯健康叶(3个模型识别率分别为48.33%、33.33%、48.33%),21号黄瓜健康叶(3个模型识别率分别为67.92%、66.04%、77.36%)。这些病害大多都被误识别为外形相似的其他病害,例如12号木薯褐斑病被误识别为13号木薯绿螨病,35号马铃薯健康叶被误识别为病斑较小的36号马铃薯晚疫病,21号黄瓜健康叶被误识别为11号哈密瓜健康叶。
-
为进一步测试边缘端模型性能,分别在剪枝率70%、80%和90%的条件下,利用无模拟学习方法,即标准的多分类损失函数分别训练通道剪枝后模型和通道剪枝并量化模型,训练的超参数与本研究的训练超参数一致,与本研究模型进行对比实验。从表2可见:在不同的剪枝率的情况下,本研究模型与其他模型压缩方法相比均具有更高的模型压缩率和识别准确率,而且压缩率越高,识别准确率相比其他方法提升越明显,能更好识别植物病害类别并部署于边缘设备。
剪枝率/% 参数量/M 边缘端模型 精度/bit 压缩率/倍 准确率/% 70 0.91 剪枝+无模拟学习 32 3.6 95.48 剪枝+量化+无模拟学习 8 14.4 95.45 本研究模型 8 14.4 95.99 80 0.58 剪枝+无模拟学习 32 5.7 94.95 剪枝+量化+无模拟学习 8 22.8 94.92 本研究模型 8 22.8 95.55 90 0.23 剪枝+无模拟学习 32 14.3 93.40 剪枝+量化+无模拟学习 8 57.2 93.53 本研究模型 8 57.2 94.58 Table 2. Plant disease recognition results of models on the edge compressed by different methods