基于卷积胶囊网络的百合病害识别研究
2020-02-02丁永军张晶晶李民赞
丁永军 张晶晶 李民赞
(1.兰州城市学院电子与信息工程学院, 兰州 730070; 2.西北师范大学计算机科学与工程学院, 兰州 730070;3.中国农业大学现代精细农业系统集成研究教育部重点实验室, 北京 100083)
0 引言
近年来,受连作障碍、病害等因素影响,兰州百合产量和品质明显下降。百合产量由之前的约2.25×104kg/hm2下降到1.50×104kg/hm2,独头率下降30%以上[1]。其中,灰霉病、鳞茎腐烂病是百合生产中的主要病害,发病率高达100%[2]。
随着深度学习理论的不断完善,在病虫害检测方面也取得了很多成果。主要有基于AlexNet[3]、VGGNet[4]、GoogleNet[5]、ResNet[6]、SqueezeNet[7]、Inception[8]、MobileNets[9]等经典CNN网络架构的病虫害识别研究,以及通过引入R-CNN、R-FCN、SSD[10]、参数共享反馈[11]、ShuffleNet Unit[12]、UnitedModel[13]、三通道卷积[14]等模块,来优化网络结构、提高病虫害检测精度及泛化能力的研究。文献[15]引入迁移学习,实现了少量样本条件下的病虫害识别。文献[16]对深度模型可视化进行病虫害检测机理研究。在实际生产环境中,图像容易受噪声、形变等影响,而且百合叶片呈狭长披针形,灰霉病斑容易粘连,堆放贮藏也给鳞茎腐烂病的检测带来不利影响。因此,上述研究很难直接应用于百合病害诊断。
图1 图像预处理示例Fig.1 Examples of image preprocessing
胶囊网络于2017年由Geoffrey Hinton提出,出现了动态路由、期望最大化路由、堆叠胶囊自编码器等一系列理论,在自动驾驶[17]、语义编码[18]、医学图像分析[19]等领域都得到了成功应用。JIMENEZ-SANCHEZ等[20]研究表明,胶囊网络对于处理样本不均衡问题效果更优。NGUYEN等[21]研究发现,对VGG-16和胶囊网络进行整合能有效降低过拟合、提高检测精度。贾少鹏等[22]选用300幅番茄灰霉病图像,构建卷积胶囊网络,并进行病害识别,但并未研究模型抗干扰及胶囊尺寸对模型的影响。胶囊网络的优势在于“同变性”,即观测对象在位置、旋转、倾斜度、尺寸等方面发生的改变都可以由一组向量进行表达,可以有效抑制图像噪声、形变以及检测物重叠等不利因素的影响。
本文以兰州百合为研究对象,在VGG-16卷积网络的基础上,构建百合灰霉病及鳞茎腐烂病卷积胶囊识别网络,从抗干扰能力、胶囊尺寸、时间线监控等多方面进行分析。
1 材料与方法
1.1 图像采集
2018年11月及2019年7月,分别于兰州七里河区黄峪乡百合冷藏库和兰州榆中县园子岔乡,在自然光照条件下采集腐烂磷茎、健康磷茎、灰霉叶片、健康叶片图像,又通过网络收集相关图像用于扩充图像库。最终共采集图像2 427幅,其中腐烂磷茎482幅、健康磷茎685幅、灰霉叶片397幅、健康叶片863幅。
1.2 图像预处理
为解决所采集样本中种类不均衡问题,采用图像旋转、水平平移、垂直平移、亮度调整、图像缩放等数据增强技术进一步扩充图像集,达到数据均衡、避免过拟合的目的。数据增强的实现借助Keras中的ImageDataGenerator模块,最终每类图像均包含2 250幅。图1为4类图像预处理示例。
1.3 网络结构
将动态路由胶囊结构嵌入VGG-16深度卷积模型,替代3个全连接层,构造卷积胶囊网络,用以实现百合病害识别。卷积胶囊网络结构如图2所示,整个网络分为VGG和胶囊两部分。
图2 卷积胶囊结构Fig.2 Structure of convolutional capsule network
1.3.1VGG部分
VGG深度卷积模型由牛津大学视觉几何组提出,具有局部连接、权值共享、参数精简等特点。整个VGG结构中共使用4个池化窗口尺寸为2×2、滑动步长为2的Max pooling层,将特征图减小为原尺寸的1/2,同时把13个卷积层分成5个模块,每个模块又由连续堆叠的2个或3个卷积层组成,每个卷积层使用3×3 的卷积核,提取多种尺度下的图像特征。卷积过程中采用same padding模式,反复卷积和池化之后,5个模块形成的特征图尺寸分别为224×224×64、112×112×128、56×56×256、28×28×512、14×14×512。另外,对每个卷积层均使用ReLU激励函数,引入非线性变换,以增强VGG模型的表达能力。
1.3.2胶囊部分
典型的胶囊网络包含卷积层、主胶囊层和数字胶囊层。主胶囊层通过卷积将特征图转换成一组特定长度的向量。本文卷积胶囊网络采用13层VGG卷积,得到规格为14×14×512的特征图,在卷积胶囊网络中使用Reshape层替代主胶囊层,形成12 544个长度为8的向量,通过squash函数对各个向量进行压缩,生成一组方向不变的单位向量(u1,u2,…,ui)作为Reshape主胶囊层的输出,即
(1)
Reshape主胶囊层与数字胶囊层间使用全连接方式,数字胶囊层中各向量均由Reshape主胶囊层的输出向量动态路由得到,动态路由算法原理如图3所示。
图3 胶囊间的动态路由 Fig.3 Dynamic routing between capsules
ui对数字胶囊层中输出胶囊vj的预测胶囊j|i为
j|i=Wijui
(2)
式中ui——Reshape主胶囊层第i个输出向量
Wij——转换矩阵
Reshape主胶囊层的汇总向量sj为
(3)
其中
(4)
式中cij——各预测胶囊的权重,其值反映了预测胶囊与输出胶囊间的相似性
bij——预测胶囊i连接到输出胶囊j的先验概率,初始值为0,其值根据路由算法迭代更新,并更新权重cij
再将sj经过squash函数标准化后得到输出向量vj。更新连接先验概率bij及权重系数cij。
bij+j|ivj→bij→cij
进行下一轮迭代,计算出更新后的输出向量vj,3次迭代后最终确定输出向量,最后根据向量范数计算分类预测的概率。
利用间隔损失函数
Lk=Tkmax(0,m+-‖vk‖)2+
λ(1-Tk)max(0,‖vk‖-m-)2
(5)
式中Tk——分类指示,当k类存在时其值为1,否则为0
m+——惩罚假阳性上界
m-——惩罚假阴性下界
λ——比例系数
更新转换矩阵Wij及卷积参数。试验中取m+=0.9,m-=0.1,λ=0.5。
2 结果与分析
2.1 数据分析平台
试验平台搭载IntelCXeon(R) CPU E5-2697 v3@2.60 GHz处理器,GPU为英伟达GTX 1080 Ti双卡配置,64 GB系统内存,960 GB SSD固态硬盘。软件测试环境为Ubuntu 16.04 LTS 64位操作系统,安装Python 3.6、Tensorflow-GPU 1.8.0、Keras 2.2.4等深度学习框架。
2.2 模型训练及评估
将Geoffrey Hinton提出的胶囊网络直接应用于百合病害诊断,模型精度为87.04%,原因在于模型仅使用256个9×9卷积核,未能多尺度对病害特征进行有效提取,但使用不同等级的噪声图像及模糊图像进行模型评估时发现检测精度始终保持在62.72%以上,说明胶囊结构的“同变特性”可以有效抑制图像噪声、形变及检测物重叠等不利因素,用于模型抗噪测试的图像示例如图4所示。
图4 模型抗干扰测试图像Fig.4 Images for model anti-interference test
使用经典VGG-16模型进行百合病害诊断,模型精度为98.80%,使用不同等级的噪声图像进行模型评估时,其精度不断衰减。
综合上述两种模型的优点,对本文提出的卷积胶囊网络进行训练和评估。为了加速网络训练,卷积胶囊网络的卷积层参数采用VGG-16预训练模型参数,即通过微调迁移学习方式仅更新转换矩阵参数。从9 000幅图像中随机选取1 000幅作为测试集,其余部分用于训练,又将整个训练集按4∶1的比例随机分为2部分,其中80%用于模型训练,20%用于模型验证,并确保每个训练轮次中的各训练批次均为随机图像子集。在训练过程中使用Adam优化器,初始学习率设定为0.005,当连续5个训练轮次模型性能不能得以提升,则学习率减至原学习率的0.5倍,一阶矩指数衰减因子设为0.9,二阶矩指数衰减因子设为0.999。同时为了验证提出模型的有效性,还构建了类VGG-16网络进行对比,将经典VGG-16的全连接层进行调整,调整后3个全连接层神经元数目分别为64、14、4,并确保2种网络的训练参数数目基本相当。模型训练及评估结果如表1所示,2种网络评估精度不小于98.8%,卷积胶囊网络略高出0.4个百分点。收敛迭代次数,卷积胶囊网络约为VGG-16模型的73.33%,但卷积胶囊网络训练时间大约是VGG-16模型的2.76倍。
对1 000幅图像组成的测试集,利用混淆矩阵和准确率、召回率、F1值等评价指标,进一步验证卷积胶囊网络的可靠性。如图5所示,仅有1%的腐烂磷茎被错分为健康鳞茎,2%的健康磷茎被错分为腐烂磷茎,1%的灰霉叶片被错分为健康叶片,正确识别了全部健康叶片。同时,模型平均精确率、召回率、F1值均达到0.99,说明所构建模型可靠性很高。
表1 训练及评估结果Tab.1 Results of training and evaluation
图5 卷积胶囊网络的混淆矩阵Fig.5 Normalized confusion matrix of convolutional capsule network
2.3 模型抗干扰分析
为了验证卷积胶囊网络的抗干扰能力,分别对测试集添加高斯噪声、椒盐噪声、斑点噪声和仿射变换,设置干扰等级为0.01~0.20,等级间隔为0.01,各个干扰等级下的模型识别准确率如图6所示。随着干扰等级的加大,VGG-16模型及卷积胶囊网络的识别准确率都呈下降趋势,噪声及仿射变换都会增加网络模型对病斑特征有效提取的难度,从而影响检测精度。仿射变换等级为0.04~0.08时,VGG-16模型精度略高于卷积胶囊网络。其他情况下,卷积胶囊网络的抗干扰能力明显优于VGG-16模型。当高斯噪声等级为0.01时,卷积胶囊网络精度为77.88%, VGG-16模型精度为70.17%;当椒盐噪声等级为0.02时,卷积胶囊网络精度为93.69%, VGG-16模型精度为86.99%;当斑点噪声等级为0.02时,卷积胶囊网络精度为89.99%, VGG-16模型精度为81.28%;当仿射变换等级为0.03时,卷积胶囊网络精度为90.79%, VGG-16模型精度为88.59%。
图6 模型抗干扰能力Fig.6 Anti-interference ability of models
2.4 胶囊尺寸对模型的影响
为了分析胶囊尺寸、动态路由迭代次数对网络训练用时的影响,分别构造尺寸为4、8、16、32、64的主胶囊,并将动态路由迭代次数设置为1~25,得到网络对1批次20幅图像的训练时间。由图7可知,胶囊尺寸越大训练时间越少。尺寸8时3次迭代时间为519 ms,尺寸32时3次迭代时间为291 ms。路由迭代次数与训练时间成正比。在共享已训练VGG模型参数的基础上,对多种规格的卷积胶囊网络进行训练,结果如表2所示,可知胶囊尺寸和路由迭代次数对模型精度不产生显著影响。
图7 不同胶囊尺寸及动态路由迭代次数对训练用时的影响Fig.7 Effects of different capsule sizes and dynamic route iteration times on training time
2.5 时间线分析
表3为两种网络在训练中最耗时的4种操作,其中Conv2D为卷积操作,Conv2DBackpropInput为反向传播过程中使用MatrixMap.transpose进行矩阵变换,Conv2DBackpropFilter为反向传播过程中使用TensorMap.contract操作进行张量收缩,BatchMatMul为反向传播过程中主胶囊层进行的矩阵乘法,ReluGrad为反向传播过程中对ReLU函数的梯度求导。可以看出卷积及卷积层的反向传播均占用了很大的计算资源,对卷积胶囊网络两者占比累积达到96%,VGG-16中占比达78%。同时发现,BatchMatMul耗时约为24.95 ms,且不会随网络结构的改变而增加,但占比会随网络深度的增大而快速降低,由1个卷积层为基础构造的卷积胶囊网络,其BatchMatMul占比约为25%,而13个卷积层时占比降至1%。TODA等[16]研究表明去除经典网络中75%的参数量,并不影响模型精度,可以尝试构造去除冗余神经元的卷积胶囊网络或者进行分布式训练,从而解决训练时间较长的瓶颈。
表2 不同胶囊尺寸及动态路由迭代次数对模型精度的影响Tab.2 Effects of different capsule sizes and dynamic route iteration times on accuracy
表3 训练时间对比Tab.3 Training time comparison
3 结束语
胶囊结构的“同变特性”可以有效抑制图像噪声,而VGG-16则可以通过深度特征提取有效提升检测精度。本文结合胶囊网络和VGG-16模型的优势,构建用于百合病害识别的卷积胶囊网络,其检测精度达到99.20%。测试表明,卷积胶囊网络的抗干扰能力明显优于经典卷积网络,说明所构建模型具有在实际大田环境中进行病害诊断的潜力。