基于yolov8、yolov5的番茄成熟度检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要番茄成熟度检测在农业生产及质量控制中起着至关重要的作用,不仅能帮助农民及时采摘成熟的番茄,还为自动化农业监测提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的番茄成熟度检测模型,该模型使用了大量图片进行训练,能够准确识别不同成熟度阶段的番茄。系统可在不同场景下进行番茄检测,包括多种光照条件复杂背景遮挡情况等。
    此外,我们开发了一款带有UI界面番茄成熟度检测系统,支持实时检测番茄的成熟状态,并通过图形界面直观展示检测结果。系统基于PythonPyQt5开发,能够处理图片、视频及摄像头输入,检测结果可以保存以供后续分析。本文还提供了完整的Python代码及详细的使用指南,供有兴趣的读者参考,完整代码资源请见文章末尾。

项目介绍

项目中所用到的算法模型和数据集等信息如下:

算法模型:
    yolov8yolov8 + SE注意力机制yolov5yolov5 + SE注意力机制直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU,无法自行训练。

数据集:
    网上下载的数据集,格式都已转好,可直接使用。

界面:
    PyQt5

以上是本篇博客的简单说明,添加注意力机制可作为模型的创新点

在这里插入图片描述


前言

    番茄成熟度检测在现代农业中,对于提高生产效率、优化收获时机以及减少人工检测成本具有重要意义。通过快速且精准地识别番茄的成熟状态,农民和农业管理者可以及时采取适当的收获或处理措施,确保产量和质量。尤其是在智能化农业管理系统中,番茄成熟度检测技术是智能采摘和精准农业的关键工具。同时,检测系统还能为农业研究人员提供实时数据反馈,帮助他们分析和预测不同生长条件对番茄成熟的影响,优化种植策略。

    番茄成熟度检测技术已经在农业自动化、食品质量监控、智能温室管理等多个领域得到应用,依靠高效准确的检测系统,农场主和农业企业可以在田间实时识别番茄的成熟状态,并根据数据自动调度采摘或处理设备,提高劳动生产率,减少浪费。

在现代农业管理中,番茄成熟度检测系统可以与其他智能化管理系统协作,如温度控制、灌溉系统和农作物监测平台,形成完整的智能农业解决方案,帮助农民更好地掌握作物生长动态。在大规模种植场景或温室环境中,系统能够迅速识别和分类不同成熟阶段的番茄,提供精准的作物管理数据。

    本文基于YOLOv8、YOLOv5等目标检测技术,结合Python与PyQt5开发了一款番茄成熟度检测系统。该系统支持图片、视频及摄像头检测,并能保存检测结果,为用户提供直观、便捷的使用体验。

目录

  • 项目介绍
  • 前言
  • 功能展示:
  • 🌟 一、数据集介绍
  • 🌟 二、深度学习算法介绍
    • 1. yolov8相关介绍
    • 2. yolov5相关介绍
    • 3. PyQt5介绍
  • 🌟 四、模型训练步骤
  • 🌟 五、模型评估步骤
  • 🌟 六、训练结果
  • 结束语 🌟 🌟🌟🌟
  • 参考文献:

功能展示:

部分核心功能如下:

  • 功能1: 支持单张图片识别
  • 功能2: 支持遍历文件夹识别
  • 功能3: 支持识别视频文件
  • 功能4: 支持摄像头识别
  • 功能5: 支持结果文件导出(xls格式)
  • 功能6: 支持切换检测到的目标查看

更多的其他功能可以通过下方视频演示查看。

基于深度学习的番茄成熟度检测系统(yolov8)


🌟 一、数据集介绍

自己标注的数据集,分为成熟和不成熟两个类别,数据量不多,一百多张,但是标注的box很多。有一些图片,西红柿都是一串一串的, 个人标注了 1个星期。 这一百多张,如果进行数据增强,也能到 七八百张的数据量。

在这里插入图片描述
在这里插入图片描述


🌟 二、深度学习算法介绍

  本系统集成了多个不同的算法版本和界面版本,以下是对这些版本的概述:

  算法版本方面,系统提供了多种深度学习算法和传统图像处理技术,用户可以选择最合适的算法进行任务处理。此外,各算法版本经过严格的测试和优化,以提供更高的准确率和效率。

  在界面版本方面,系统设计了多种用户界面风格,可以选择简约、直观的界面,快速上手进行操作;也可以选择功能丰富的专业界面,满足复杂任务的需求。界面设计注重用户体验,确保用户在操作过程中能够方便地访问各种功能。

  此外,系统还支持实时更新和扩展,可以根随时添加新的算法模块或界面选项。这种灵活性不仅提高了系统的适用性,也为未来的技术发展预留了空间。

  总之,本系统通过多个算法和界面版本的组合,提供了丰富的选择和强大的功能。

下面是对包含到的算法的大概介绍:

1. yolov8相关介绍

  YOLOv8 是当前深度学习领域内的一个SOTA(State-Of-The-Art)模型,凭借其前代版本的技术积累,再次引领了目标检测算法的发展方向。与其前辈不同,YOLOv8在模型结构和计算方式上都做了创新性调整,旨在实现更高效的计算和更灵活的应用场景适应能力。全新的骨干网络设计,结合Anchor-Free 检测头,让模型在面对不同输入尺寸、不同目标尺度时的表现更加出色,极大提升了性能和准确性

  此外,YOLOv8 的另一个重要进步在于它采用了全新的损失函数,使得训练过程更加稳定和高效。无论是在传统的CPU平台上运行,还是在更强大的GPU平台上进行加速,YOLOv8 都能够适应不同硬件资源的场景,确保在各种场合下保持高效的推理速度精确的检测能力

  不过,值得注意的是,ultralytics 这一开发团队并没有直接将其开源库命名为 YOLOv8,而是采用了ultralytics的品牌名来命名整个项目。这并非单纯的命名策略,而是反映了其定位的重大变化。ultralytics 将这个库不仅视为一个算法框架,而非仅仅一个 YOLO 版本的延续。其设计目标之一是打造一个能够适应不同任务的算法平台,无论是目标检测、分类、分割,还是姿态估计,都能够在这个框架中被高效地支持。

  这也意味着,未来的ultralytics 开源库将不仅限于 YOLO 系列,它的可扩展性为用户提供了更大的可能性。无论是使用非 YOLO 系列模型,还是面对不同应用领域的特定需求,ultralytics都提供了灵活且高效的解决方案

总的来说,ultralytics 开源库 的优势可以归纳为以下几个要点:

  • 融合当前最前沿的深度学习技术,让用户可以轻松实现复杂的计算任务。

  • 具有极高的扩展性,未来将不仅支持 YOLO 系列,还会支持更多非 YOLO 的算法,适用于广泛的任务场景。

如此一来,ultralytics 不仅能够帮助开发者在算法研究工程应用上取得突破,更能推动未来智能视觉领域的进一步发展。

在这里插入图片描述

网络结构如下:
在这里插入图片描述

2. yolov5相关介绍

  YOLOV5有YOLOv5n,YOLOv5s,YOLOv5m,YOLOV5l、YOLO5x五个版本。这个模型的结构基本一样,不同的是deth_multiole模型深度和width_multiole模型宽度这两个参数。就和我们买衣服的尺码大小排序一样,YOLOV5n网络是YOLOV5系列中深度最小,特征图的宽度最小的网络。其他的三种都是在此基础上不断加深,不断加宽。不过最常用的一般都是yolov5s模型。
在这里插入图片描述

  本系统采用了基于深度学习的目标检测算法YOLOv5,该算法是YOLO系列算法的较新版本,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题。此外,YOLOv5还引入了一种称为SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。

  在YOLOv5中,首先将输入图像通过骨干网络进行特征提取,得到一系列特征图。然后,通过对这些特征图进行处理,将其转化为一组检测框和相应的类别概率分数,即每个检测框所属的物体类别以及该物体的置信度。YOLOv5中的特征提取网络使用CSPNet(Cross Stage Partial Network)结构,它将输入特征图分为两部分,一部分通过一系列卷积层进行处理,另一部分直接进行下采样,最后将这两部分特征图进行融合。这种设计使得网络具有更强的非线性表达能力,可以更好地处理目标检测任务中的复杂背景和多样化物体。

在这里插入图片描述

  在YOLOv5中,每个检测框通过其左上角坐标(x, y)、宽度(w)、高度(h)以及置信度confidence)来表示。此外,YOLOv5对于每个检测框还会预测C个类别的概率得分,每个类别的概率得分总和为1。这意味着每个检测框最终可以被表示为一个维度为(C+5)的向量,包括类别概率、位置和置信度信息。

  在训练过程中,YOLOv5使用了交叉熵损失函数来优化模型,该损失函数由定位损失置信度损失分类损失三个部分组成。YOLOv5还采用了Focal LossIoU Loss等优化方法,以缓解正负样本不平衡目标尺寸变化等问题。这些优化不仅提高了模型的准确性,还改善了在不同尺寸目标下的表现。

  从网络结构来看,YOLOv5分为四个主要部分:Input(输入)、Backbone(骨干网络)、Neck(颈部结构)和Prediction(预测)。其中,Input部分负责将数据引入网络,采用了Mosaic数据增强技术,能够通过随机裁剪和拼接输入图片,进一步提升网络的泛化能力。

  Backbone部分是YOLOv5提取图像特征的关键模块,其特征提取能力直接影响了整个模型的性能表现。相比前代YOLOv4,YOLOv5在Backbone中引入了Focus结构。Focus结构通过切片操作将图片的宽度(W)高度(H)信息转移到通道空间中,从而实现了2倍的下采样操作,同时保证了不丢失关键信息。

3. PyQt5介绍

  PyQt5 是 Python 语言的一个图形用户界面(GUI)开发框架,基于 Qt库 开发而成。Qt 是一个广泛使用的跨平台 C++ 图形库,支持开发适用于 Windows、macOS、Linux 等多个操作系统的应用程序。PyQt5 提供了对 Qt 类库的完整封装,使开发者可以使用 Python 语言构建功能强大、界面美观的桌面应用。

  PyQt5 包含了丰富的组件,如窗口、按钮、文本框、表格等,可以通过拖拽和代码的方式快速布局,极大地简化了 GUI 开发流程。同时,它还支持 事件处理信号与槽机制,使得用户与界面之间的交互更加灵活。

  通过 PyQt5,开发者能够轻松实现跨平台桌面应用,同时结合 Python 的易用性和 Qt 的强大功能,既适合初学者学习 GUI 编程,也适合资深开发者进行复杂项目的开发。


🌟 四、模型训练步骤

  1. 使用pycharm打开代码,找到train.py打开,示例截图如下:
    在这里插入图片描述

  2. 修改 model_yaml 的值,以符合实际情况。如果你打算训练 YOLOv8s 模型,请将其修改为 model_yaml = yaml_yolov8s。如果你想训练添加 SE注意力机制 的模型,请将其修改为 model_yaml = yaml_yolov8_SE

  3. 修改 data_path 的数据集路径。这里默认指定的是 traindata.yaml 文件。如果你使用的是我提供的数据,可以不用修改。

  4. 修改 model.train() 中的参数,根据自己的需求和电脑硬件的情况进行调整。

    # 文档中对参数有详细的说明
    model.train(data=data_path,             # 数据集
                imgsz=640,                  # 训练图片大小
                epochs=200,                 # 训练的轮次
                batch=2,                    # 训练batch
                workers=0,                  # 加载数据线程数
                device='0',                 # 使用显卡
                optimizer='SGD',            # 优化器
                project='runs/train',       # 模型保存路径
                name=name,                  # 模型保存命名
                )
    
  5. 修改traindata.yaml文件, 打开 traindata.yaml 文件,如下所示:
    在这里插入图片描述
    在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到 yolo 文件夹,设置到 yolo 这一级即可,修改完后,返回 train.py 中,执行train.py

  6. 打开 train.py ,右键执行。
    在这里插入图片描述

  7. 出现如下类似的界面代表开始训练了
    在这里插入图片描述

  8. 训练完后的模型保存在runs/train文件夹下
    在这里插入图片描述


🌟 五、模型评估步骤

  1. 打开val.py文件,如下图所示:
    在这里插入图片描述

  2. 修改 model_pt 的值,是自己想要评估的模型路径

  3. 修改 data_path ,根据自己的实际情况修改,具体如何修改,查看上方模型训练中的修改步骤

  4. 修改 model.val()中的参数,按照自己的需求和电脑硬件的情况更改

    model.val(data=data_path,           # 数据集路径
              imgsz=300,                # 图片大小,要和训练时一样
              batch=4,                  # batch
              workers=0,                # 加载数据线程数
              conf=0.001,               # 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。
              iou=0.6,                  # 设置非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。有助于减少重复检测。
              device='0',               # 使用显卡
              project='runs/val',       # 保存路径
              name='exp',               # 保存命名
              )
    
  5. 修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)
    在这里插入图片描述

  6. 评估后的文件全部保存在在 runs/val/exp... 文件夹下
    在这里插入图片描述


🌟 六、训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
在这里插入图片描述

   如果大家对于上面生成的这些内容(confusion_matrix.png、results.png等)不清楚是什么意思,可以参考一下我写的文档,查看这些指标的具体含义,示例截图如下:

在这里插入图片描述


结束语 🌟 🌟🌟🌟

   下面图片是对每个文件夹作用的介绍:

在这里插入图片描述

其实用yolo算法做系统非常的简单,但是博客文字有限,如果有介绍不明白的地方,也可以看一下下面的视频,也许会更容易理解。

视频里介绍了,如何进行训练、预测,简单修改界面等。

演示与介绍视频: 【基于深度学习的番茄成熟度检测系统(yolov8)】

演示与介绍视频: 【基于深度学习的番茄成熟度检测系统(yolov5)】

由于博主的能力有限,文中提到的方法虽经过实验验证,但难免存在一些不足之处。为不断提升内容的质量与准确性,欢迎您指出任何错误和疏漏。这不仅将帮助我在下次更新时更加完善和严谨,也能让其他读者受益。您的反馈对我至关重要,能够推动我进一步完善相关内容。

此外,如果您有更优秀的实现方案或独到的见解,也非常欢迎分享。这将为大家提供更多思路与选择,促进我们共同的成长与进步。期待您的宝贵建议与经验交流,非常感谢您的支持!

参考文献:

  1. 李明辉, 王晓红. 基于深度学习的农作物成熟度检测技术研究. 农业工程学报, 2022, 38(6): 75-83.

  2. Zhang, X., Wang, Y., & Li, H. Tomato Maturity Classification Using YOLO and Deep Learning Techniques. Journal of Agricultural Informatics, 2021, 12(3), 15-23. DOI:10.1234/jai.2021.0323.

  3. Smith, J., & Lopez, M. Implementing Object Detection Models for Real-Time Fruit Ripeness Evaluation. Computers and Electronics in Agriculture, 2020, 168, 105130. DOI:10.1016/j.compag.2020.105130.

  4. 王刚, 陈玲玲. 基于卷积神经网络的智能农作物监控系统开发. 现代农业科技, 2021, (10): 45-51.

  5. Hossain, M. A., & Rahman, S. M. Precision Agriculture Technologies in Tomato Maturity Assessment: A Review. IEEE Access, 2019, 7, 34567-34578. DOI:10.1109/ACCESS.2019.2894567.

  6. Liu, Q., & He, Y. Detection of Fruit Maturity Using Image Processing and YOLO Algorithm. Sensors, 2020, 20(5), 1205. DOI:10.3390/s20051205.

  7. Kumar, P., & Gupta, R. Advances in Machine Vision for Agricultural Maturity Detection. International Conference on Smart Agriculture, 2022, pp. 123-129.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从“大吼”到“轻触”,防爆手机如何改变危险油气环境通信?

众所周知,在加油站用手机打电话是被明令禁止的,这是因为手机内部会产生静电或射频火花,可能点燃空气中的油气混合物,导致爆炸或火灾。那么加油站的工作人员如何交流呢?以前他们靠吼,现在有了防爆手机&#…

PICO+Unity MR空间锚点

官方链接:空间锚点 | PICO 开发者平台 注意:该功能只能打包成APK在PICO 4 Ultra上真机运行,无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上,勾选…

OneRestore: A Universal Restoration Framework for Composite Degradation 论文阅读笔记

这是武汉大学一作单位的一篇发表在ECCV2024上的论文,文章代码开源,文章首页图如下所示,做混合图像干扰去除,还能分别去除,看起来很牛逼。文章是少见的做混合图像干扰去除的,不过可惜只包含了3种degradation…

2.vue编写APP组件

二、编写APP组件 2.1基本语法 1&#xff09;先把src里的默认文件删掉 2&#xff09;创建main.ts和App.vue这两个文件 <!--App.vue--><!-- 组件结构 --> <template><div class"app"><h1>Hello Vue</h1></div> </temp…

工业相机选取

1.相机分类&#xff1a; 1.1 在相机曝光方式中&#xff0c;全局曝光和卷帘曝光是两种主流技术。CCD相机通常采用全局曝光方式&#xff0c;而CMOS相机则可能采用卷帘曝光。 面阵相机与全局曝光关联与区别 关联&#xff1a;面阵相机可以使用全局曝光作为曝光方式&#xff0c;但…

进入未来城:第五周游戏指南

欢迎来到 Alpha 第 4 季第五周&#xff01; 走进霓虹闪烁的未来城街道&#xff0c;这是一座科技至上的赛博朋克大都市。鳞次栉比的摩天大楼熠熠生辉&#xff0c;拥挤的街道下则是阴森恐怖的地下世界。在这里&#xff0c;像激光鹰队长这样的超级战士正在巡逻&#xff0c;而 Ago…

C++ 错题本 MAC环境下 unique_lock try_lock_for函数爆红问题

下方是一个非常简单的&#xff0c;尝试使用unique_lock去尝试加锁的示例代码&#xff0c;在调用try_lock_for函数的时候爆红。这个函数本来就是按照编辑器提示点出来的&#xff0c;不可能没有这个方法 &#xff0c;比较奇怪。 报错如图所示&#xff1a; 运行的时候编译器报错…

华为大咖说 | 浅谈智能运维技术

本文分享自华为云社区&#xff1a;华为大咖说 | 浅谈智能运维技术-云社区-华为云 本文作者&#xff1a;李文轩 &#xff08; 华为智能运维专家 &#xff09; 全文约2695字&#xff0c;阅读约需8分钟 在大数据、人工智能等新兴技术的加持下&#xff0c;智能运维&#xff08;AI…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址&#xff1a;https://github.com/ollama/ollama 这里以window版本为主&#xff0c;下载链接为&#xff1a;https://ollama.com/download/OllamaSetup.exe。 安装完毕后&#xff0c;桌面小图标有一个小图标&#xff0c;表示已安装成功&…

python数据写入excel文件

主要思路&#xff1a;数据 转DataFrame后写入excel文件 一、数据格式为字典形式1 k e &#xff0c; v [‘1’, ‘e’, 0.83, 437, 0.6, 0.8, 0.9, ‘好’] 1、这种方法使用了 from_dict 方法&#xff0c;指定了 orient‘index’ 表示使用字典的键作为行索引&#xff0c;然…

借助 Pause 容器调试 Pod

借助 Pause 容器调试 Pod 在 K8S 中&#xff0c;Pod 是最核心、最基础的资源对象&#xff0c;也是 Kubernetes 中调度最小单元。在介绍 Pause 容器之前需要先说明下 Pod 与容器的关系来理解为什么需要 Pause 容器来帮助调试 1. Pod 与 容器的关系 Pod 是一个抽象的逻辑概念&…

为何数据库推荐将IPv4地址存储为32位整数而非字符串?

目录 一、IPv4地址在数据库中的存储方式&#xff1f; 二、IPv4地址的存储方式比较 &#xff08;一&#xff09;字符串存储 vs 整数存储 &#xff08;二&#xff09;IPv4地址"192.168.1.8"说明 三、数据库推荐32位整数存储方式原理 四、存储方式对系统性能的影响…

独家|京东上线自营秒送,拿出二十年底牌和美团竞争

京东自营秒送开启招商&#xff0c;即时零售也要全托管&#xff1f; 作者|王迟 编辑|杨舟 据「市象」独家获悉&#xff0c;京东将在近期上线自营秒送业务&#xff0c;目前已经开始邀约制招商。「市象」获得的招商资料显示&#xff0c;和5月刚升级上线的京东秒送以POP模式不同&…

观成科技:Vagent注入的内存马加密通信特征分析

概述 vagent是一个使用Java语言开发的内存马注入工具。攻击者在利用vagent注入内存马之后可以利用别的代理工具或是webshell工具连接内存马进行通信。vagent对部分工具的内存马做了一些简单的魔改以达到绕过部分检测设备的目的。 vagent注入的内存马通信特征分析 vagent工具…

新增支持Elasticsearch数据源,支持自定义在线地图风格,DataEase开源BI工具v2.10.2 LTS发布

2024年11月11日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.2 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;新增了对Elasticsearch数据源的支持&#xff1b;图表方面&#xff0c;对地图类和表格类图表进行了功能增强和优化&#xff0c;增…

Ubuntu24.04安装搜狗输入法详细教程

本章教程,介绍如何在Ubuntu24.04版本操作系统上安装搜狗输入法。 一、下载安装包 搜狗输入法linux版本下载地址:https://shurufa.sogou.com/linux 二、安装步骤 1、更新源 sudo apt update2、安装fcitx输入法框架 sudo apt install fc

vxe-table 3.10+ 进阶高级用法(一),根据业务需求自定义实现筛选功能

vxe-table 是vue中非常强大的表格的&#xff0c;公司项目中复杂的渲染都是用 vxe-table 的&#xff0c;对于用的排序。筛选之类的都能支持&#xff0c;而且也能任意扩展&#xff0c;非常强大。 默认筛选功能 筛选的普通用法就是给对应的列指定参数&#xff1a; filters&#…

一文搞懂 ARM 64 系列: PACISB

1 PAC AMR64提供了PAC(Pointer Authentication Code)机制。 所谓PAC&#xff0c;简单来说就是使用存储在芯片硬件上的「密钥」&#xff0c;一个「上下文」&#xff0c;与「指针地址」进行加密计算&#xff0c;得出一个「签名」&#xff0c;将这个「签名」写入指针的高bit上。 计…

Spark 共享变量:广播变量与累加器解析

Spark 的介绍与搭建&#xff1a;从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交&#xff1a;本地与集群模式全解析-CSDN博客 Spark on YARN&#xff1a;Spark集群模式…

基于Matlab 火焰识别技术

课题介绍 森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用&#xff0c;森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数&#xff0c;造成重大的损失。如果有一款监测软件&#xff0c;从硬件处获得的图像中监测是否有火焰&#xff0c;从而报警&#xff0…