基于深度残差网络的茶园杂草分类及模型压缩方法研究
2021-10-14高琪娟李春波李叶云吴慧平
高琪娟,李春波,金 秀,李叶云,吴慧平
(1. 安徽农业大学信息与计算机学院,合肥230036;2. 安徽农业大学茶树生物学与资源利用国家重点实验室,合肥230036;3. 安徽农业大学植物保护学院,合肥230036)
在茶园生态环境下,茶园杂草与茶树争夺水肥和光照,是影响茶园产量的重要因素之一[1]。当前主要采用喷施除草剂除草,不合理的施肥会带来环境污染及食品安全等问题[2-3]。近年来,智能化除草技术发展迅速,如何对杂草分类是实现智能化除草技术的关键问题[4]。随着现代化农业的发展,利用计算机的图像和视觉处理技术,将杂草分类结果反馈给除草机器或者将数据传达给除草的人是未来研究的课题。
目前,利用基于机器学习的方法在杂草分类技术领域取得了很多进展,李慧等提出利用主成分分析(principal components analysis,PCA)和支持向量机(support vector machine,SVM)的方法对棉花杂草分类,并通过实验取得了很好的分类效果[5]。刘冥羽利用k-means算法结合层级聚类方法对农作物中的杂草图片分类,提高了分类的准确性[6]。随着深度学习的兴起,卷积神经网络(convolutional neural network,CNN)在图像分类任务中的应用越来越广泛,能够自动提取到图像的特征,降低图像的分类错误率。2012年AlexNet模型有效提高了大规模数据集的图像分类准确率后[7],卷积神经网络的发展方向是层数的加深,产生了效果更加的VGGNet模型[8],例如,周云成等[9]提出了一种基于VGGNet的8层CNN优化结构TD-Net,实现了对番茄主要器官的分类识别。随着模型深度加深,训练会增大训练误差,于是Szegedy等在2015年提出了深度残差网络ResNet50[10]。ResNet50深度神经网络模型具有更多的网络层,有巨大参数,对硬件资源要求很高。需要用到性能较好的GPU来提高运算速度。目前网络剪枝(network pruning)是一种流行的模型压缩方法[11],通过对不重要的神经元、滤波器或者通道进行剪枝,能有效压缩模型的参数量和计算量。
本研究基于ResNet50、VGGNet和AlexNet等网络架构分别构建茶园杂草分类模型,通过对比实验,结果表明ResNet50网络模型优于VGGNet,AlexNet。在此基础上,本研究进一步结合神经网络参数稀疏度和权重裁剪阈值设定方法,删除预训练好的ResNet5050模型中冗余参数,减少计算复杂度,进而实现模型轻量化,且提高了准确率。
1 材料与方法
1.1 图片收集与预处理
本实验选择了茶园常见的10种杂草,包括蓬蘽、酸模叶蓼、菝葜、络石、刺儿菜、黄鹌菜、苦苣菜、野艾蒿、一年蓬和中华小苦荬。其中每张图片的分辨率为6 144×4 084,如图1所示,共计1 737张图片。为了避免样本数量不足造成模型训练过拟合问题,利用原始图像进行旋转、平移、放大和翻转等操作扩充图像数据至15 003张。
图1 10种不同种类的杂草图片Figure 1 Photos of ten different kinds of weeds
将上述10类杂草图片添加文本标签,以0—9编号,数据集按照训练集70%与测试集30%随机划分,其中训练集12 006张,测试集共2 997张。结果如下表1所示。
表1 茶园常见的杂草种类Table 1 Common weeds in tea garden
1.2 研究方法
1.2.1 茶园杂草识别模型的设计方法 本研究基于深度神经网络构建的茶园杂草识别模型,主要用到3种网络结构,AlexNet、VGG16和ResNet50,其中ResNet50提出了残差bottleneck结构,卷积层和全连接层加起来深度共50层[12]。该方法应用深度残差网络结构ResNet50训练模型,再用训练好的模型测试识别的准确率。本研究采用10种杂草类别,对ResNet50预训练模型进行了适当的改造。如图2所示,首先删除顶层的全连接层及其参数,保留其他层的模型参数,并获取预训练模型学到的内容;然后针对杂草的10个分类重新建立全连接,随机初始化参数。本研究为了对比残差网络和其他卷积模型学习的效果,用同样的杂草图片数据放入在VGGNet(VGG16)和AlexNet模型,分别从零训练得到杂草分类模型。
图2 基于深度学习杂草识别模块结构Figure 2 The architecture of weed identification model
1.2.2 实验环境 本实验基于TensorFlow框架进行训练和测试杂草图片。使用AlexNet、VGG16和ResNet50网络结构进行训练。软件环境为CUDEV10,Python 3.8,Tensorflow-GPU。
1.2.3 深度模型的剪枝压缩方法研究 参数剪枝是模型压缩及加速的常用方法之一。对神经网络来说,模型训练中的参数是网络中的权重。剪枝就是利用某一个准则对某一组或某一个权值置0从而达到将网络神经元置0以达到稀疏化网络连接从而加快整个推理过程及缩小模型大小的迭代过程。模型训练时的剪枝,针对需要剪枝的层,增加二进制掩膜变量矩阵,阈值是指每层设置一个阈值,其中每个权值都有与之对应的掩膜mask代表其剪枝状态,每层的权值矩阵wl设置一个同等大小的掩膜矩阵,掩膜取值只能取0或者1,其中0代表相应的权值被剪枝而1代表相应的权值被保留[13]。
ResNet50模型在多个迁移学习任务中的表现要优于许多网络结构。基于Bottleneck,每个layer都由若干Block搭建而成,再由layer组成整个网络。每种ResNet50都是4个layer,改变最后一层的输出,将多维的输入一维化,对全连接层进行修剪。由于存在残差网络块,在裁剪的时候减少了很多限制。
2 结果与分析
2.1 对比不同模型的分类结果
为了加快模型的训练速度,提高模型精度,将模型训练的茶园图像数据原始图像尺寸调整为224×224像素。本实验在模型训练过程中取训练样本的数量(batch_size)为64,训练批次(epoch)为100,采用ReLu激活函数,加入Batch Normalization对每一批数据进行归一化处理,最好采用Dropout按照一定概率丢掉神经网络单元,防治过拟合。
模型优化器选择随机梯度下降优化器(stochastic gradient descent,SGD),学习率为0.001,3种模型使用上面相同样本量和相同的训练批次,相同激活函数,研究结果如图3所示,ResNet50、VGG16和AlexNet的网络结构在训练集准确率结果为0.98、0.86和0.96;测试集准确率结果为0.74、0.63和0.63。
图3 ResNet50(a)、VGG16(b)和AlexNet(c)的训练集和测试集的训练对比Figure 3 The figure of compared training and testing results based on ResNet50,VGG16 and AlexNet network
表3 VGG16模型混淆矩阵Table 3 Confusion matrix of VGG16 model %
此外,进一步分别利用混淆矩阵对3个模型测试分类结果进行统计[14],如表2,3和4所示。研究结果表明,斜对角线显示的10个类别杂草分类的准确率,其中最优模型是ResNet50,VGG16混淆了蓬蘽和酸模叶蓼,络石的准确率只有4%,AlexNet对每一类杂草的分类准确率也只有50%。
表2 ResNet50模型混淆矩阵Table 2 Confusion matrix of ResNet50 model %
综上所述,通过训练集和测试集的结果表明基于ResNet50训练出的杂草分类准确率高于非迁移的VGG16和AlexNet网络结构,表明ResNet50模型对该杂草种类分类效果更好。鉴于此,本研究最终选择了ResNet505构建杂草分类模型。
表4 AlexNet模型混淆矩阵Table 4 Confusion matrix of AlexNet model %
2.2 ResNet50模型的参数调整
ResNet50深度模型有很多参数,本研究首先设置Batch_Size为{32,48,64,80}。通过对比不同Batch_Size的损失函数,结果如图4(a)所示,发现Batch_Size越小,模型收敛速度越好。进一步在验证集上,对比了不同的Batch_Size的训练效果,如图4(b)所示,研究表明Batch_Size=32时,模型分类的效果最好,从而使得模型有更好的泛化能力。
图4 ResNet50模型Batch_Size和lr参数调整对比Figure 4 The comparison of ResNet50 network under different parameters of Batch_Size and lr
此外,还研究了学习率(learning rate, lr)对模型训练效果的影响,将lr分别设置为{0.1, 0.05, 0.01,0.005, 0.001, 0.000 5, 0.000 1, 0.000 05, 0.000 01}。通过对ResNet50模型中lr的对比实验,图4(c)结果显示,当lr为0.005时模型收敛速度越好,但并不是lr越大或越小越好,当lr设置太大时,模型反而不能很好收敛。鉴于此,由4(d)所示,得出lr取适中间值时,模型在验证集上准确率较好。
综上所述,深度模型通过设置参数调优有效提升了模型的杂草分类效果。
2.3 对比ResNet50模型的压缩前后效果
本研究基于训练后的杂草分类模型(ResNet50)进行剪枝训练,根据设置动态阈值方法,每层设置不同的阈值,如果低于某一阈值就直接删除,减少模型连接。研究结果如图5所示,压缩后的模型在训练集和测试集结果分别为0.98和0.68。
图5 ResNet50剪枝后的训练集和测试集的训练对比Figure 5 The result of compared training and testing after pruning ResNet50 network
进一步对比了ResNet50模型剪枝前后的分类效果,结果如表5所示,研究表明,在训练集和测试集上,分类的准确率基本没有变化。简言之,压缩模型没有对模型的分类效果产生影响。
表5 ResNet50压缩前后在训练集和测试集上准确率对比Table 5 Compared training and testing result of accuracy between before and after pruning ResNet50 network
量化的过程是一边量化一边训练,量化训练取batch_size=64,epoch=100,采用ReLu激活函数,加入Batch Normalization对每一批数据归一化处理,将模型随机梯度优化器SGD, ResNet50压缩结果由剪枝前484.5 M减少到94.3 M。
3 讨论与结论
本研究基于深度卷积神经网络模型实现茶园杂草分类模型的可行性,设计和选用了3种不同的模型ResNet50、VGG16和AlexNet进行杂草分类,再基于最优分类模型ResNet50进行剪枝压缩,实验结果表明:在训练集和测试集中,模型未压缩前ResNet50的分类准确度分别是97%和87%,优于其他两个模型的准确率;另外3个模型的混淆矩阵列表说明ResNet50对10类杂草的每一类都能较准的识别,且错误率较低。为了进一步优化模型。对模型ResNet50设置不同的参数Batch_size和学习率lr,研究显示Batch_size越小,模型越能防止过拟合,能提升模型的训练效果;随着lr增大时,模型反而不能很好收敛。毫无疑问,深度模型ResNet50层数多,模型的参数也加大,容易造成模型的训练误差。鉴于此,本研究在ResNet50模型基础上删除冗余参数,进行剪枝压缩。结果表明模型得到了大幅度的压缩;而且通过分析该模型压缩前后分类结果,发现残差学习网络对模型的分类结果没有大的影响。总之,ResNet50模型能准确识别出茶园杂草并能有效压缩,为后期部署到移动端提出了更好的设计方案。