APP下载

基于YOLOv5s 和Android 的苹果树皮病害识别系统设计

2022-12-02周逸博马毓涛赵艳茹

广东农业科学 2022年10期
关键词:树皮准确率病害

周逸博,马毓涛,赵艳茹,

(1.西北农林科技大学机械与电子工程学院,陕西 杨凌 712100;2.农业农村部农业物联网重点实验室/陕西省农业信息感知与智能服务重点实验室,陕西 杨凌 712100)

【研究意义】苹果产业在我国国民经济中占重要地位,生产高品质苹果是发展苹果产业的关键。苹果树皮病害是造成我国苹果单产水平不良的制约因素之一[1]。及时、精准地进行苹果树皮病害诊断,有助于病害的早期对症治疗以及果园的精准管理。因此,开发随时可以进行树皮病害识别的手机APP 系统,有助于果农快速识别果树病害,进而采取有效防治措施,对苹果产业保质增产具有重要意义。

【前人研究进展】目前果树的病害检测主要依赖人工感官判定和生物测定[2]。人工感官判定多通过目测判断果树病害情况,费时费力,且需在病害症状明显时进行判断,易造成误判[3]。生物测定法如聚合酶链式反应(PCR)、酶联免疫吸附试验技术(ELISA)等,可以直接检测出病原物种类,准确度高,但操作复杂、成本高,还具有破坏性,难以大范围推广[4-8]。因此,寻找一种快速、准确、无损且推广性强的果树病害检测方法很有必要。机器视觉在农业病害识别领域应用非常广泛,主要依赖于图像处理方法得到相应结果[9]。但传统图像处理方法相对较为明显,例如,对动态目标识别能力差,智能化程度仍不够高,需要人工辅助等[10]。通过机器学习算法进行病害识别需按照单一病害特征进行人为数值设定后做相应识别,无法进行多种病害同时检测[11],且对移动端配置要求高,占用资源多。与机器学习相比,深度学习网络算法精确度更高,在数据集训练过程中准确率不断提升且趋于饱和,方便客户使用。Krizhevsky等[12]在2012年首次将深层卷积神经网络Alex Net[13]应用于大规模图像分类中。近年来深度学习网络模型在植物病害研究中逐渐深入,它能够对植物病害的浅层图像特征进行更深层的挖掘,提取出“高层”特征,并进行模型构建实现植物病害的检测分类[14]。王宏乐等[15]使用RestNeSt-50、VGG-16 和RestNet-50 3 种网络结构进行测试,通过调节训练集中实验室场景图片与田间场景图片的分布,使深度学习模型对柑橘黄龙病、苹果黑星病、芒果细菌性斑点病识别准确率均达到90%以上。Redmon等[16]于2016 年提出的YOLO 系列算法已经在目标检测领域得到了较为广泛的应用,YOLO 算法系列经历了从v1 到v5 的发展,其中YOLO v5 深度学习网络模型具有体积小、速度快、精度高等优点,可以在生态成熟的PyTorch 中实现,网络训练及部署较该系列之前的模型更为简单,方便用户对自己需要的网络模型自行训练。YOLO v5 借鉴了Cut Mix 方法[17],采用Mosaic数据增强方式有效解决了模型训练中最头疼的“小对象问题”。而YOLOv5s 是YOLO v5 模型中体积最小的网络模型,其权重仅27 MB,可以实现实时识别的功能,体积较小可以完成Android端的相应部署。

【本研究切入点】以往研究只能对某种特定苹果树皮病害进行单一识别,且由于深度学习网络模型较大而很难实现移动端的部署。本文使用的YOLOv5s 模型是轻量级深度学习网络模型,可以有效实现Android 端的部署,嵌入Android 端的同时不会影响苹果树皮病害识别模型的正常运行,且可以同时对3种苹果树皮病害进行识别。【拟解决的关键问题】本设计选择YOLOv5s 作为苹果树皮病害的识别网络模型,并在Android 端进行部署,实现对苹果树皮主要病害:轮纹病、干腐病和腐烂病的准确快速识别。

1 YOLOv5s 网络结构原理

YOLOv5s 网络结构由输入端、Backbone(主干网络)、Neck 网络和Prediction(输出端)四部分组成。各部分的主要功能和网络结构如下[18]:

(1)输入端:Mosaic 数据增强模块、自适应锚框计算模块,自适应图片缩放。

(2)主干网络:Focus 结构和CSP 结构。

(3)Neck 网络:FPN+PAN 结构。

(4)输出端:GIOU_Loss。

整体网络结构如图1[19]所示:

图1 YOLOv5s 网络结构Fig.1 YOLOv5s network structure

1.1 输入端

1.1.1 Mosaic 数据增强 输入端使用Mosaic 数据增强方式对整体数据集合进行随机缩放、随机剪裁以及随机排布,得到输入端相应数据[20]。

1.1.2 自适应锚框计算 在YOLO 系列检测算法中,系统会在初始阶段设定好默认的锚框尺寸,并在输入不同图像进行训练时,输出与默认锚框尺寸相应的预测框,将人为标注得到的真实框和训练过程得到的预测框进行对比,计算两者的偏差,之后再进行反向更新,迭代网络结构中的参数。YOLOv3、YOLOv4 需要通过单独运行特定程序计算初始锚框值,而YOLOv5s 将该功能嵌入到相应的算法结构中,实现了对于不同训练集进行锚框计算的自适应性。

1.1.3 自适应图片缩放 YOLOv5s 算法对原始图像进行缩放操作时,可以根据输入图片的不同尺寸,自适应添加最少黑边,使计算量得到一定程度的减少,从而进一步提高该网络的目标检测速度[21]。

1.2 主干网络

1.2.1 Focus 结构 Focus 结构可进行切片操作[22],YOLOv5s 网络中的Focus 结构使用了较少的32 个卷积核,能够将尺寸为640×640×3像素的三通道图像经相应的切片操作变成320×320×12 像素的特征图,并通过32 个卷积核的卷积操作,最终变成320×320×32 像素的特征图。

1.2.2 CSP 结构 YOLOv5s 中的CSP 有两种结构,一种为主干网络中的CSP1_X 结构,另一种为位于Neck 中的CSP2_X 结构。CSP 模块中所含有的卷积核大小均为3×3,步进值为2,若输入的图像尺寸为640×640 像素,那么它的特征图尺寸变化规律是:640×640 -> 320×320 -> 160×160-> 80×80 -> 40×40 -> 20×20,最终得到一个20×20 像素大小的特征图。

1.3 Neck 网络

FPN 是自上而下通过上采样操作,将高层的特征信息和低层的特征信息进行融合,进而计算出预测的特征图[23-24]。YOLOv5s 网络结构中在FPN 层后面还添加1 个特征金字塔,该金字塔结构自下向上,其中有2 个PAN 结构,通过下采样操作,将低层的特征信息与高层特征进行融合,输出预测的特征图。

1.4 输出端

目标检测算法的损失函数一般由Classificition Loss(分类损失函数)和Bounding Box Regeression Loss(回归损失函数)两大部分组成。其中回归损失函数近几年的发展过程为:Smooth L1 Loss ->IOU_Loss(2016)-> GIOU_Loss(2019)->DIOU_Loss(2020)-> CIOU_Loss(2020)。GIOU_Loss损失函数为:

式中,Δ为最小外接矩形与预设框差值;C为最小外接矩形。

GIOU_Loss函数增加了相交尺度的衡量方式,有利于解决边界框有时不重合的问题。

输入端将输入图片进行缩放裁剪得到相应预测框,并自适应添加最少黑边。主干网络将输入端的图片进行切片处理完成卷积操作,得到特征图。Neck 网络通过上采样下采样操作,将低层和高层特征进行融合得到预测特征图。最后通过输出端的损失函数完成所训练的网络模型评估。

2 YOLOv5s 模型训练部署与测试

2.1 苹果树皮病害数据集的采集

苹果树皮原始数据集部分采集于西北农林科技大学南校区,部分为网络已有苹果树皮病害照片,共获得苹果树表皮图片470 张,其中包含干腐病151 张、腐烂病160 张、轮纹病159 张。3种待测病害如图2 所示。

图2 所需识别的3 种苹果树皮病害Fig.2 Three apple bark diseases to be recognized

2.2 数据集预处理

本设计使用LabelImg 软件对所采集的苹果树皮患病部位进行人为标注,其中使用的三类标签名分别为canker(腐烂病)、ring rot(轮纹病)、dry rot(干腐病),如图3 所示。标注完图片后得到相应的xml 文件,构成所需数据集。

图3 使用LabelImg 标注树皮患病部位Fig.3 Using LabelImg to mark the diseased part of bark

为满足深度学习要求,尽可能丰富数据集,将采集的病害图片进行左右翻转以及饱和度、对比度、明暗度调整,完成数据集的扩增。总体扩增8倍后的数据集共有图片3 697 张,该组图片即为本设计的使用数据集。为保证训练的数据尽可能的多以及测试集的普遍性,将训练集与测试集按照8 ∶2 比例进行划分。

2.3 实验平台与评估指标

使用的网络训练环境配置为:Geforce GTX 1650 GPU;Intel(R) Core(TM) i7-9750H CPU;内存8G;CUDA 11.6。Android 端调试机型为:OPPO R15 机型,运行内存6G,CPU 型号为联发科Helio P60。

采用的模型评估指标主要包括:准确率、召回率、调和均值以及平均精度均值。准确率和召回率越高,树皮病害识别效果越好,准确率与召回率为负相关关系。调和均值和平均精度均值是需要同时考虑准确率和召回率的量化指标,调和均值和平均精度均值越大,则代表树皮病害识别效果好。

2.4 模型训练与推理结果

使用PyTorch 将制作好的数据集放入YOLOv5s 模型中,划分测试集和训练集,开始相应模型训练,随机选择测试图片带入训练好的模型中进行测试,结果如图4、图5、图6 所示。左侧图片为未进行识别的测试图片,右侧图片为测试结果。

图4 干腐病模型识别测试Fig.4 Recognitiion test of dry rot disease model

图5 轮纹病模型识别测试Fig.5 Recognitiion test of ring rot disease model

图6 腐烂病模型识别测试Fig.6 Recognitiion test of canker disease model

2.5 YOLO 模型Android 端部署

将深度学习网络模型部署到Android 端需要借助第三方框架。腾讯公司推出的ncnn 是针对移动平台优化的高性能神经网络推理计算框架。ncnn 没有第三方依赖项,是跨平台的,在手机CPU 上运行速度比所有已知的开源框架都快,开发者可以通过高效的ncnn 实现,轻松将深度学习算法模型部署到移动平台,打造智能APP。使用ncnn 框架在Android 端部署模型需要将.pth 文件格式的模型转换为ncnn 框架所特有的ncnn 格式模型(.bin 和.param)。首先将.pth 格式模型去掉后处理导出为.onnx 格式模型,修改工程目录下的train.py 文件中的evalimage 函数。修改.py 文件的布尔型变量use_jit 为False,禁用JIT,保证能导出onnx。用onnx-simplifier 对模型进行简化。在YOLO 环境下安装onnx、onnxruntime 和onnxsim 库,在控制台使用命令对onnx 模型进行简化。

使用daquexian 开发的一键转换工具,在浏览器本地上传简化后的onnx 模型,使用onnx optimizer 和ncnnoptimize 优化模型,输出目标格式的ncnn 模型(.bin 和.param)。

将简化完成的.param 文件进行参数修改,将框架中默认的YOLOv5s 网络模型替换为可识别苹果树皮病害的网络模型,完成Android 端部署。

2.6 APP 效果展示

点击设置完成的APP 图标打开APP。进入APP 主页面,点击“选择图片”进入本地图片选择(图7),待测图片可以选择进行CPU 识别或GPU 识别,选择图片并完成识别(图8、图9)。

图7 待测图片选择页面Fig.7 Image selection page to be tested

图8 选择待测图片Fig.8 Select the picture to be detected

图9 待测图片患病情况识别结果Fig.9 Disease recognition results of picture to be tested

3 结果与分析

用于苹果树皮病害识别的YOLOv5s 网络训练400 个epoch 后,按照2.3 所述指标对训练好的模型进行相应评估,结果见图10。由图10 可知,训练后得到的深度学习网络模型测试结果良好,经过400 轮训练后模型达到收敛状态。在训练过程中准确率和召回率的提升过程较为稳定,准确率稳定在88.7%,召回率稳定在85.8%,平均精度值也处于较高水平状态,稳定在87.2%附近。其中识别效果最好的腐烂病准确率为93.5%,识别效果最差的轮纹病准确率为84.3%。

图10 YOLOv5s 网络训练结果Fig.10 YOLOv5s network training results

对手机APP 进行功能测试,输入50 张不同类型的苹果树皮病害图片进行检测,每张病害图片处理时间均小于1 s,检测置信度为87.954%。检测时间较快,可以在移动端正常使用,测试效果如图11 所示。

图11 手机APP 病害识别测试效果Fig.11 Effect of mobile APP disease recognition test

4 讨论

为快速且同时检测腐烂病、轮纹病、干腐病3 种苹果树皮病害的问题,本研究使用YOLOv5s深度学习网络模型,设计了基于Android 的苹果树皮病害识别系统。在深度学习网络发展成为图像检测主流前,病害图像主要采用机器学习进行识别。机器学习视觉信息的处理技术主要依赖于图像处理方法,对图像进行复原、分割、增强、特征提取等一系列操作,从而进行图像处理识别,得到相应结果。机器学习通过人工分析图片特征,经过图像算法提取特征,并通过特征的数值进行图像分类,在分析图片过程中不需要大量图片,只需要较为典型的图片和两种类别临界点的图片进行人工分析。与本文所使用的深度学习网络检测方式相比较,机器学习进行病害识别需按照单一病害特征进行人为数值设定后做相应识别,从而无法进行3 种病害同时检测,而本文使用深度学习网络则可以完成3 种病害数据集的同时训练,其最终对3 种病害的识别准确率稳定在88.7%,召回率稳定在85.8%,平均精度值稳定在87.2%,且可以在训练中独立学习相关属性,得到更好的效果。

深度学习网络模型由于参 数多、体量大,较难在小型移动设备上部署,本文使用的YOLO v5深度学习网络模型,由Ultralytics 公司在2020 年推出,包括YOLOv5s、YOLO v5m、YOLO v5l、YOLO v5x 4 个模型,其中YOLOv5s 是4 种模型中体积最小的网络模型,其权重仅仅27MB,能够降低对移动端配置的需求,本文将其在Android端部署后。经测试每张病害图片处理时间均小于1 s,检测致信度为87.954%,检测时间较快,可以在移动端正常使用。

测试结果反映出训练完成的网络模型准确率、召回率、平均精度仍有待提高。果园环境的复杂性在一定程度上影响手机 APP 的图像识别。移动终端使用测试方面,通过 Android 端的测试,该 APP 使用轻量级的深度学习网络YOLOv5s 可以适应当前市场中的大部分机,降低了硬件需求,可以满足果农需要。针对上述问题,可以考虑以下改进措施:(1)图像拍摄时尽可能直接拍摄待检测枝干部位,减少非必要影响因素的出现;(2)继续收集不同环境和不同病发阶段的 3 种类型病害图片,增强数据集后继续训练,不断提升网络模型的识别效果;(3)针对病害的早期阶段图像进行训练,以期实现苹果树皮病害的早期快速诊断。

5 结论

针对果农需要对苹果树皮病害进行实时拍照检测的问题,本研究设计了一种基于Android 系统以及YOLOv5s 深度学习网络模型的手机APP苹果树皮病害识别系统。本设计以轮纹病、腐烂病、干腐病3 种苹果树皮病害为研究对象,使用YOLOv5s 深度学习网络模型对目标图片进行图像识别,得出相应结果。实验结果表明:该手机APP 对手机配置要求较低,可满足绝大多数果农的手机配置;使用轻量级深度学习网络YOLOv5s,网络模型小,所占资源少,可以良好地在Android 端进行部署。本设计可以在一定程度上帮助果农完成苹果树皮病害的识别,进而进行果园的精准管理,对苹果产业的发展具有推动作用。

猜你喜欢

树皮准确率病害
早春养羊需防六大病害
窗下的树皮小屋
小麦常见三种病害咋防治
葡萄病害周年防治历
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
果树休眠期咋防病害
高速公路车牌识别标识站准确率验证法
咦,动物们都说爱树皮