曹跃腾,朱学岩,赵燕东,陈锋军
(1.北京林业大学工学院,北京市,100083;2.城乡生态环境北京实验室,北京市,100083;3.林业装备与自动化国家林业局重点实验室,北京市,100083)
植物病虫害的种类繁多,传统依靠农林专家观察识别植物病虫害种类的方式速度慢、主观性强且不易获取,无法准确快速的识别病虫害种类并给出具体应对措施,严重限制了农林业的发展[1]。快速、准确且高效的识别植物病虫害种类并针对性的给出应对措施一直是农林业迫切需要实现的目标,设计移动端植物病虫害识别算法更是重中之重[2-3]。植物叶片作为病虫害的高发区域具有图像获取方便的特点,现已成为植物病虫害识别的关键器官之一[4-5]。
为解决植物病虫害种类自动识别的问题,国内外研究者尝试采用传统机器视觉和深度学习技术对植物病虫害种类进行识别。基于传统机器视觉[6]的植物病虫害识别方法一般在提取颜色、形状和纹理等浅层特征后,训练支持向量机、BP神经网络等实现病虫害识别。张善文等[7]使用稀疏表示对紫薇等植物病害叶片进行识别,达到了92.41%的准确率;马超等[8]使用灰度直方图特征结合SVM对水稻病害叶片进行识别,取得了98.4%的准确率。然而,受环境和植物叶片病虫害区域特征不稳定等因素影响,导致基于传统机器视觉的植物病虫害识别方法实际应用中效果不甚理想[9]。
基于深度学习的植物病虫害识别方法一般是通过卷积神经网络[10]提取植物叶片的深层特征进行病虫害的识别,目前此类方法已经被充分应用于茶叶[11]、番茄[12]和棉花[13]等植物的病虫害识别。Srdjan等[14]尝试使用VGG16模型对桃白粉病、苹果锈病和樱桃白粉病等16种植物病虫害叶片进行识别,准确率达到96.3%;Ferentinos等[15]通过对比AlexNet、GooLeNet、OverFeat和VGG模型对苹果雪松锈病、玉米锈病、黄瓜霜霉病等58种植物病虫害的识别结果,确定VGG模型最优,准确率达到99.53%。与传统机器视觉方法相比,基于深度学习的植物病虫害识别方法能够抵抗环境因素的影响,鲁棒性更强且具有更高的识别准确率。
基于深度学习的图像分类模型ResNet具有分类稳定的特点,目前已被应用于葡萄、番茄、黄瓜和水稻的病虫害识别。何欣等[16]使用ResNet对葡萄叶部病害图像进行识别,准确率为90.83%;方晨晨等[17]使用ResNet对番茄叶部病害图像进行识别,平均准确率为98.58%。先前的研究已经表明,在植物病虫害识别研究中,ResNet模型准确率高且性能稳定[18],是本文植物病虫害识别的理想算法。然而,ResNet[19]虽在植物病虫害识别领域取得了可信赖的效果,但该模型参数量多且模型大,不适合部署到移动端。
为解决移动端植物病虫害识别最重要的算法设计问题,本文以ResNet18模型为基础,通过卷积核尺寸调整、残差块优化和模型剪枝[20-23]优化ResNet18模型,设计轻量化植物病虫害识别模型Simplify-ResNet。
2020年4—7月使用荣耀7手机于河南鄢陵和山东枣庄的果蔬采摘园采集番茄、辣椒、马铃薯、苹果的病虫害图像2 133幅,大小为5 344像素×4 016像素。采用随机裁剪、翻转、亮度调整、对比度调整和加入噪声等方式扩充人工采集的2 133幅原始图像数据至24 831幅,以提高模型对光照、遮挡和拍摄角度等的鲁棒性[24-25]。为丰富植物叶片病虫害图像数据集,将人工采集图像与PlantVillage数据集融合,融合后的数据集共包含图像57 864幅,涉及10种植物,22类病虫害和3种病虫害程度。
按8∶1∶1的比例划分植物叶片病虫害程度识别数据集为训练集、验证集和测试集,分别包含图像46 292 幅、5 786幅和5 786幅。植物叶片病虫害图像数据集的部分图像如图1所示。
图1 植物叶片病虫害图像数据集Fig.1 Data set of plant leaf pests and disease images
ResNet18模型的输入图像大小为224像素×224像素,主通道共包含17个卷积层和1个全连接层,其基本结构如图2所示。17个卷积层的卷积核大小为7×7和3×3,起到提取植物病虫害图像特征的作用。当植物病虫害图像输入ResNet18模型后,大小为7×7卷积层会首先提取输入图像的底层特征;之后四组残差块会进行高层特征的提取,并采用捷径通道来消除卷积层堆叠引起的梯度消失、爆炸和网络退化的问题;最后通过Softmax层根据提取特征来对叶片图像进行病虫害程度识别。
图2 ResNet网络模型Fig.2 ResNet network model
准确识别植物病虫害图像类别,ResNet18模型优势非常显著,但在移动端部署中发现,ResNet18同时存在着不可避免的问题:(1)底层卷积层参数提取量庞大;(2)模型训练缓慢;(3)训练后的模型体积臃肿。为此,调整ResNet18模型底层卷积尺寸,改进模型残差块结构,对训练完成后模型进行迭代剪枝,设计轻量化植物病虫害程度识别模型Simplify-ResNet。
2.2.1 卷积核尺寸调整
在深度卷积神经网络中,大尺寸卷积核虽能提取图像中更复杂的特征,但存在参数量大的问题,不适合应用于移动端植物病虫害识别研究。而小尺寸卷积核虽参数量较小,但存在所提取特征无法全面表达图像信息的问题。为在尽量少的损失模型精度的前提下降低参数量,选用5×5卷积层来替换原有的7×7卷积,平衡模型参数和特征表达。
2.2.2 残差块结构优化
为减少ResNet18网络模型参数量,对残差块的结构进行优化,采用1×1卷积、3×3卷积和1×1卷积串联的瓶颈结构代替原有两个3×3卷积串联的结构。改进前的残差块结构和改进后的残差块结构如图3所示。
(a)修改前结构
以输入256维的数据为例,如果使用改进前的残差块结构进行特征提取,所需的参数量为1 179 648;而如果使用改进后的残差结构进行特征提取,所需参数量仅为69 632。由数据对比结果可知,本文改进的残差块结构特征提取过程所需的参数量相比原有残差结构降低了94%。改进后的残差块结构计算量显著降低,有利于模型训练速度的提高、模型大小的压缩和泛化性能的提高。
2.2.3 模型剪枝
本文采用模型剪枝技术删减掉模型中冗余的滤波器实现模型运行效率的提高、参数量的降低以及过拟合风险的降低。模型剪枝主要包含模型载入、滤波器重要性评分、剪枝阈值计算、模型裁剪及后处理五个步骤。当载入训练好的模型后,首先计算模型中所有的滤波器的重要性评分,如式(1)所示。
(1)
式中:mi——第i个滤波器的重要性评分;
αi——第i个滤波器对应的BN层的缩放系数;
Ei——滤波器i的所有卷积核的L1范数之和;
|Wj|——滤波器i中第j个卷积核的L1范数大小;
k——滤波器i中卷积核的数量。
其次,计算模型剪枝的阈值,如式(2)所示。
θ=sortp(mi)
(2)
式中:θ——模型剪枝的阈值;
mi——第i个滤波器的重要性评分;
sort——对mi进行升序排序;
p——剪枝率,p=0.7。
然后,根据计算得到的模型剪枝阈值θ,删除所有评分低于剪枝阈值θ的滤波器。模型剪枝的前后对比具体如图4所示。
图4 模型剪枝前后对比图Fig.4 Comparison of model before and after pruning
最后,测试剪枝后模型的准确率和速度等性能指标。如果剪枝后模型准确率降低,可通过对剪枝之后的模型进行再训练等操作进行准确率的提升。
经由以上卷积核尺寸调整、残差块优化和模型剪枝操作步骤优化后,所设计改进后的植物病虫害识别模型Simplify-ResNet模型如图5所示。
图5 Simpilfy-ResNet模型结构示意图Fig.5 Schematic diagram of Simplify-ResNet model structure
所设计Simplify-ResNet模型训练硬件平台为AMD(R)2600X @3.60 GHz CPU,16GB内存,NVIDIA GeForce 1070Ti显卡,软件平台为Windows 10,TensorFlow 1.10.1和Keras 2.2.4。模型训练过程设置学习率为0.001,批处理量为16,采用AdamOptimizer优化器更新模型参数。
本研究Simplify-ResNet模型识别植物病虫害需同时考虑识别精度和训练后的模型大小,故选用精确率P、召回率R、F1分数和训练模型大小M定量评价本文算法,如式(3)~式(6)所示。
(3)
(4)
(5)
(6)
式中:TP——被正确识别为正例图像个数,即正确识别数;
FP——错误的识别为正例图像的个数,即错误识别数;
FN——错误的识别为负例图像的个数,即正例丢失数;
C0——输出通道数;
Ci——输入通道数;
kw——卷积核宽;
kh——卷积核高。
为确定本文模型改进中所采用的卷积核尺寸调整、残差块优化和模型剪枝操作对ResNet模型植物病虫害识别能力的具体提升效果,设计测试试验如表1所示,其中方案5为本文Simplify-ResNet模型。
表1 测试设计方案Tab.1 Experimental design
由表2测试试验结果可知,方案5本文Simplify-ResNet模型的病虫害识别结果最佳,准确率达到94.34%,且模型占用内存大小仅为36.14 Mb,有效的实现了在保证模型准确率的前提下进行轻量化设计的目标。
表2 各试验方案表现效果Tab.2 Performance effect of each experimental scheme
如方案1和方案2,在采用瓶颈结构替代捷径结构后,模型的准确率P、召回率R、F1分数分别提升6.31%、2.86%和4.49,内存大小M增加5.3 Mb。如方案1和方案3,在使用5×5卷积核替代原有底层 7×7卷积核后,模型的准确率P、召回率R、F1分数分别下降1.61%、1.91%和1.76,内存大小M减小26 Mb。如方案3和方案4,采用5×5卷积核替代原有底层7×7卷积核,采用瓶颈结构替代捷径结构使模型能够兼顾准确率和模型大小。
如方案5,经过剪枝后,模型准确率P、召回率R、F1分数和模型大小分别为94.79%、94.75%、94.54和36.14 Mb。与方案4相比,剪枝后模型大小减少21.66 Mb,压缩率为62.53%,表明模型剪枝可以有效降低模型的内存占用。与方案4相比,剪枝后模型准确率P、召回率R和F1分数分别提升了4.36%、5.52%和4.71,表明模型剪枝可在一定程度上提升模型的性能。
以测试集5 786幅植物病虫害图像为实验数据,将本文Simplify-ResNet模型与LeNet、AlexNet和MobileNet模型进行对比分析。不同方法对测试集植物病虫害图像的识别结果如表3所示。
表3 Simplify-ResNet与其他方法对比Tab.3 Simplify-ResNet compared with other methods
由表3不同方法的实验结果可知,本文Simplify-ResNet模型的植物病虫害识别性能更加均衡,平均识别时间为48 ms,平均内存大小为36.14 Mb,平均识别准确率为92.45%。与LeNet模型相比,Simplify-ResNet模型所占内存大小虽远高于LeNet模型,但36.14 Mb的内存大小已可满足移动端部署的实际需求;Simplify-ResNet模型的准确率比LeNet模型高18.3%。与Multi-Scale AlexNet模型相比,Simplify-ResNet模型的识别时间减少27 ms,准确率高出7.45%,模型内存大小大6.24 Mb。与MobileNet模型相比,Simplify-ResNet模型的识别时间减少14 ms,准确率高出1.2%,模型内存大小减小1.76 Mb。对比实验结果表明,本文设计的Simplify-ResNet模型在移动端植物病虫害识别中具有更加均衡的性能,特别是在识别准确率这一指标上,具有明显优势。
本文以设计移动端植物病虫害识别算法为研究目标,根据ResNet网络准确率高且性能稳定的特点,选取ResNet18为基础网络模型。针对ResNet18模型存在的参数量大和训练后的模型体积较大问题,调整ResNet18模型底层卷积尺寸,改进模型残差块结构,对训练后的模型进行剪枝操作,设计轻量化移动端病虫害识别模型Simplify-ResNet。
设计试验测试调整底层卷积尺寸、改进残差块结构和模型剪枝操作对模型性能的实际提高能力,证明了调整底层卷积尺寸和模型剪枝可以有效减小模型参数量,改进残差块结构可有效提升模型性能。本文算法对测试集植物病虫害图像的识别准确率为92.45%,识别时间为48 ms,模型大小为36.14 Mb。与LeNet、AlexNet和MobileNet模型进行对比,本文Simplify-ResNet模型的整体性能更优。本文为移动端植物病虫害识别解决了最重要的算法设计问题,接下来将进行移动端植物病虫害识别仪的开发。