基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

简介: 基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

前言

水稻害虫检测与识别系统的重要性在于能够迅速准确地识别出对水稻植株构成威胁的不同害虫种类。这一点对于保障农作物的健康成长、提高产量和质量至关重要。害虫的侵害可以导致水稻受到病理性损害,影响植株的生长发育,甚至造成大面积减产或绝收。及时识别出害虫种类后,农民和农业技术人员可以采取针对性的防控措施,比如施用特定的农药或者采用生物防治等环保方式,从而减少化学药品的使用,保护生态环境,同时降低农业生产成本。

在实际应用场景中,水稻害虫检测与识别系统可以被广泛运用于农田实时监控、农业病虫害预警系统、精准农业管理平台、农业咨询服务、农业研究与教育等多个方面。

例如,在农田监控系统中,通过安装摄像头和依托YOLOv8实现的害虫检测系统,可以持续监测田间害虫发生情况,并提供实时数据反馈,帮助农业生产者做出快速反应。在农业教育和推广中,这一系统也可以作为一个有力工具,教育农民识别不同害虫,提高他们的防控意识和能力。

此外,研究人员可以利用这一系统收集害虫数据,分析害虫发生规律和影响因素,从而为农业害虫管理和控制策略的制定提供科学依据。

博主通过搜集并整理不同水稻害虫的相关数据图片,根据YOLOv8的目标检测技术,基于python与Pyqt5开发了一款界面简洁的水稻害虫检测与识别系统,可支持图片、视频以及摄像头检测,同时可以将图片或者视频检测结果进行保存

软件初始界面如下图所示:

检测结果界面如下:

一、软件核心功能介绍及效果演示

软件主要功能

1. 可进行14种水稻害虫的目标检测,分别是 ['水稻叶卷螟', '水稻叶蝉', '稻茎蝇', '亚洲稻螟', '黄稻螟', '稻瘿蚊', '水稻螟', '褐飞虱', '白背飞虱', '小褐飞虱', '稻水象甲', '稻叶蝉', '粮食白粉蝇', '稻壳虫']
2. 支持图片、视频及摄像头进行检测,同时支持图片的批量检测
3. 界面可实时显示目标位置目标总数置信度用时等信息;
4. 支持图片或者视频检测结果保存

(1)图片检测演示

点击图片图标,选择需要检测的图片,或者点击文件夹图标,选择需要批量检测图片所在的文件夹,操作演示如下:

点击目标下拉框后,可以选定指定目标的结果信息进行显示。 点击保存按钮,会对视频检测结果进行保存,存储路径为:save_data目录下。

注:1.右侧目标位置默认显示置信度最大一个目标位置。所有检测结果均在左下方表格中显示。

单个图片检测操作如下:

批量图片检测操作如下:

(2)视频检测演示

点击视频图标,打开选择需要检测的视频,就会自动显示检测结果。点击保存按钮,会对视频检测结果进行保存,存储路径为:save_data目录下。

(3)摄像头检测演示

点击摄像头图标,可以打开摄像头,可以实时进行检测,再次点击摄像头图标,可关闭摄像头。

(4)保存图片与视频检测结果

点击保存按钮后,会将当前选择的图片【含批量图片】或者视频的检测结果进行保存。检测的图片与视频结果会存储在save_data目录下。

二、模型的训练、评估与推理

1.YOLOv8的基本原理

YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行

其主要网络结构如下:

2. 数据集准备与训练

通过网络上搜集关于水稻害虫的各类图片,并使用LabelMe标注工具对每张图片中的目标边框(Bounding Box)及类别进行标注。一共包含1248张图片,其中训练集包含1060张图片验证集包含188张图片,部分图像及标注如下图所示。

图片数据的存放格式如下,在项目目录中新建datasets目录,同时将跌倒检测的图片分为训练集与验证集放入RiceInsectData目录下。

同时我们需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:

train: E:\MyCVProgram\RiceInsectDetection\datasets\RiceInsectData\train
val: E:\MyCVProgram\RiceInsectDetection\datasets\RiceInsectData\val
nc: 14
names: ['rice leaf roller', 'rice leaf caterpillar', 'paddy stem maggot', 'asiatic rice borer', 'yellow rice borer', 'rice gall midge', 'Rice Stemfly', 'brown plant hopper', 'white backed plant hopper', 'small brown plant hopper', 'rice water weevil', 'rice leafhopper', 'grain spreader thrips', 'rice shell pest']

注:train与val后面表示需要训练图片的路径,建议直接写自己文件的绝对路径。

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小【根据内存大小调整,最小为1】,代码如下:

# 加载模型
model = YOLO("yolov8n.pt")  # 加载预训练模型
# Use the model
if __name__ == '__main__':
    # Use the model
    results = model.train(data='datasets/RiceInsectData/data.yaml', epochs=250, batch=4)  # 训练模型
    # 将模型转为onnx格式
    # success = model.export(format='onnx')

3. 训练结果评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLOv8在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

各损失函数作用说明:

定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;

分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;

动态特征损失(dfl_loss):DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。这个过程是YOLOv8训练流程中的一部分,通过计算DFLLoss可以更准确地调整预测框的位置,提高目标检测的准确性。

本文训练结果如下:

我们通常用PR曲线来体现精确率和召回率的关系,本文训练结果的PR曲线如下。mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值。mAP@.5:表示阈值大于0.5的平均mAP,可以看到本文模型14类目标检测的mAP@0.5平均值为0.8,结果还是很不错的,由于有些品类的样本偏少一点,影响了检测精度,可以进一步优化

4. 检测结果识别

模型训练完成后,我们可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们可以使用该文件进行后续的推理检测。

图片检测代码如下:

# 所需加载的模型目录
path = 'models/best.pt'
# 需要检测的图片地址
img_path = "TestFiles/IP000000114.jpg"
# 加载预训练模型
# conf  0.25  object confidence threshold for detection
# iou 0.7 intersection over union (IoU) threshold for NMS
model = YOLO(path, task='detect')
# model = YOLO(path, task='detect',conf=0.5)
# 检测图片
results = model(img_path)
res = results[0].plot()
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

以上便是关于此款水稻害虫检测与识别系统的原理与代码介绍。基于此模型,博主用pythonPyqt5开发了一个带界面的软件系统,即文中第二部分的演示内容,能够很好的支持图片、视频及摄像头进行检测,同时支持检测结果的保存

相关文章
|
12天前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。
33 5
|
4天前
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
41 28
|
2天前
|
机器学习/深度学习 计算机视觉
深度学习之农作物病害检测
基于深度学习的农作物病害检测利用卷积神经网络(CNN)、生成对抗网络(GAN)、Transformer等深度学习技术,自动识别和分类农作物的病害,帮助农业工作者提高作物管理效率、减少损失。
19 3
|
8天前
|
机器学习/深度学习 传感器 监控
红外小目标检测:基于深度学习
本文介绍了红外小目标检测技术的优势、基本原理及常用方法,包括背景抑制、滤波、模型和深度学习等,并探讨了多传感器融合的应用。通过一个基于深度学习的实战案例,展示了从数据准备到模型训练的全过程。最后,文章展望了该技术在军事、安防、交通等领域的广泛应用及未来发展趋势。
|
7天前
|
机器学习/深度学习 人工智能 监控
深度学习在图像识别中的应用与挑战
随着人工智能的迅猛发展,深度学习技术在多个领域展现出强大的潜力和价值。特别是在图像识别方面,深度学习不仅推动了技术的边界,也带来了新的商业机会和社会效益。本文将探讨深度学习在图像识别领域的应用,分析其面临的主要挑战,并提出未来可能的发展方向。通过实例和数据支持,我们将深入了解这项技术如何改变我们的工作和生活方式。
|
2天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
随着人工智能技术的飞速发展,深度学习在图像识别领域的应用日益广泛。本文将探讨深度学习技术在图像识别中的基本原理、主要算法以及面临的挑战和未来发展趋势。通过对现有技术的深入分析,本文旨在为研究人员和工程师提供有价值的见解和建议。
|
2天前
|
机器学习/深度学习 边缘计算 算法
深度学习在图像处理中的应用与挑战
本文探讨了深度学习在图像处理领域的应用,特别是在图像识别、分类和分割等方面取得的突破。同时,文章也讨论了当前深度学习模型在这些任务中面临的主要挑战,如数据隐私问题、计算资源消耗以及模型的可解释性等。通过分析具体的案例研究,本文旨在为读者提供对深度学习技术实际应用及其局限性的全面了解。
|
3天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习在图像识别中的应用与实践
【9月更文挑战第13天】本文将探讨深度学习技术在图像识别领域的应用,并通过实际案例展示其在解决复杂图像处理问题中的强大能力。我们将从基础概念出发,逐步深入到深度学习模型的构建、训练以及调优过程,旨在为读者提供一套完整的图像识别解决方案。通过本文,您将了解到如何利用深度学习技术提升图像识别的准确率和效率,以及如何将这些技术应用于实际项目中。
|
5天前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在图像识别中的应用与挑战
【9月更文挑战第11天】本文将深入探讨深度学习技术在图像识别领域的广泛应用及其面临的主要挑战。通过分析深度学习模型的工作原理和实际案例,揭示其在提高图像处理效率和准确度方面的巨大潜力。同时,讨论数据隐私、模型泛化能力和计算资源限制等关键问题,为读者提供全面而深入的视角。
|
2天前
|
机器学习/深度学习 传感器 算法
深度学习在图像识别中的应用
本文将探讨深度学习在图像识别中的应用,通过分析深度学习的基本概念、常用模型以及其在图像识别中的具体应用案例,帮助读者了解这一前沿技术。同时,我们还将讨论深度学习在图像识别中的优势与挑战,并展望其未来发展方向。