YOLOv8系列】(六)毕设实战:YOLOv8+Pyqt5实现鲜花智能分类系统

前言

花卉智能识别系统采用先进的YOLOv8算法,能够高效、精准地识别多种种花卉品种。该系统通过大量花卉图片进行训练,提升了模型的精度,实现了对图片、视频以及实时摄像头的识别。 

主要应用领域:

  • 园艺管理:园艺师和园林工作者可以利用该系统快速辨别花卉种类,优化园艺资源管理,确保植物健康生长。

  • 植物学研究:研究人员可通过该系统加速花卉品种识别,减少人工误差,推动植物学研究进程。

  • 生态环境监测:环境保护人员可以使用该系统监测自然环境中的花卉,评估生态系统的多样性和健康状况。

  • 教育与科普:该系统可作为教学工具,帮助学生和公众了解不同的花卉品种,增强对植物的认知。

  • 植物园和展览:为游客提供即时的花卉信息查询,提升参观体验的互动性和趣味性。

  • 个人使用:花卉爱好者可以利用该系统深入了解周围的花卉,培养对植物的兴趣和知识。

系统特点:

  • 高精度识别:基于YOLOv8深度学习模型,系统能够准确识别花卉种类,满足专业和个人的使用需求。

  • 实时识别:支持对图片、视频和实时摄像头的识别,提供即时的识别结果。

  • 用户友好:配备简单直观的用户界面,方便用户操作和获取信息。

一、数据集获取与介绍 

Oxford 102 Flowers Dataset

  • 简介: 由牛津大学计算机视觉研究组发布,该数据集包含102种花卉的图像,种类涵盖常见的花卉类型,如玫瑰、向日葵和郁金香。
  • 图像数量: 数据集中共有8189张图像,每种花卉类别的图片数量不一,最低有40张,最高达258张。
  • 标签信息: 每张图像都带有相应的类别标签,用于模型的训练与评估。
  • 应用场景: 该数据集广泛用于花卉识别、图像分类、图像分割等任务,是计算机视觉领域的重要基准数据集之一。 

二、模型训练

 1.按以下数据集目录划分

dataset
├── flowers
│   ├── train
│   │    ├──......
│   ├── val
         ├──......

2.模型训练

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

#coding:utf-8
from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolov8n-cls.pt")
if __name__ == '__main__':
    model.train(data='datasets/flowers', epochs=300, batch=4)
    # results = model.val()

 3.训练结果

可以在runs/目录下找到训练过程及结果文件,如下所示:

 本文训练结果如下:
通过accuracy_top1图片准确率曲线图我们可以发现,该模型的最高准确率约为0.88,应该够我们使用了。

三、pyqt实现 

1.ui界面设计

使用Qt designer进行ui界面设计,具体pycharm配置过程可以参考我这篇文章

PyCharm专业版配置PyQt5/QtDesigner/PyUic完整教程_pyuic5支持什么版本python-CSDN博客

大致界面如下所示:

包含 :

QLabel,显示图像、识别结果、用时、置信度等

QTableWidget,显示序号、文件路径、置信度等信息

QPushButton,选择图片、文件夹、视频或者摄像头检测,保存识别csv

 

2.功能实现

①图片检测
    def detectImage(self, imagePath):
        frame = cv2.imread(imagePath)
        results = self.model(frame)
        self.displayResults(frame, results)

 

②文件夹检测
    def detect_folder(self):
        image_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff')
        image_paths = [os.path.join(self.source, f) for f in os.listdir(self.source) if
                       f.lower().endswith(image_extensions)]
        for image_path in image_paths:
            image = cv2.imread(image_path)
            results = self.model(frame)
            self.displayResults(frame, results)

 

③视频检测
    def detectVideo(self):
        ret, frame = self.cap.read()
        if ret:
            results = self.model(frame)
            self.displayResults(frame, results)
        else:
            self.timer.stop()
            self.cap.release()

四.总结


        在本博客中,我们详细介绍了一个基于YOLOv8模型的花朵分类系统。系统以模块化的方式设计,充分采用了合理的架构设计,带来良好的可维护性和可扩展性。其用户界面友好,能够提供实时的花朵分类识别结果展示,便于保存和管理检测结果和设置。

        该系统支持摄像头、视频、图像和批量文件等多种输入源,能够满足用户在不同场景下的需求。在后面可以添加更多预训练模型,增加检测和识别的种类;优化用户界面,增强个性化设置;并积极聆听用户反馈,以期不断改进系统,以更好地满足用户的需求。

由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

如果以上内容对您有帮助,可以三连打赏订阅本专栏哦, 谢谢~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

到点就困告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值