基于 YOLOv8 深度学习的农作物检测系统

基于 YOLOv8 深度学习的农作物检测系统

一、项目概述

本项目是一个基于 YOLOv8 深度学习框架的农作物与杂草目标检测系统,采用 PyQt5 构建图形化交互界面,能够对图片、视频流以及摄像头实时画面中的农作物和杂草进行快速、精准的识别与定位。系统支持单张检测、批量检测、视频检测、摄像头实时检测以及检测结果保存等多种功能,适用于智慧农业场景下的作物识别与杂草监测需求。


二、数据集介绍

2.1 数据来源与规模

本项目使用的数据集为 CWC(Common Weed and Crop)数据集,共包含 2750 张 高质量农作物与杂草图像,图像分辨率约为 800×600 像素。数据集按照 8:2:0.5 的比例划分为训练集、验证集和测试集:

数据集 数量 路径
训练集(Train) 2200 张 CWC dataset/YOLO_txt/train/images
验证集(Val) 440 张 CWC dataset/YOLO_txt/val/images
测试集(Test) 110 张 CWC dataset/YOLO_txt/test/images

数据集同时提供了 VOC XML 和 YOLO TXT 两种标注格式,方便适配不同的检测框架。

2.2 识别类别

数据集涵盖 11 种 农作物与杂草类别,兼顾常见经济作物与田间杂草,具体类别如下:

编号 英文名称 中文名称 类别类型
0 bluegrass 蓝草 杂草
1 chenopodium_album 藜麦(藜) 杂草
2 cirsium_setosum 菊苣(刺儿菜) 杂草
3 corn 玉米 农作物
4 sedge 莎草 杂草
5 cotton 棉花 农作物
6 nightshade 茄(龙葵) 杂草
7 tomato 番茄 农作物
8 velvet 天鹅绒(苘麻) 杂草
9 lettuce 生菜 农作物
10 radish 萝卜 农作物

其中农作物 5 类(玉米、棉花、番茄、生菜、萝卜),杂草 6 类(蓝草、藜、菊苣、莎草、茄、天鹅绒),覆盖了农业生产中常见的作物与杂草种类。


三、模型训练配置

系统基于 YOLOv8n(Nano 版本)预训练模型进行迁移学习,训练参数配置如下:

参数 配置值
模型架构 YOLOv8n
训练轮数(Epochs) 200
批次大小(Batch Size) 8
输入图像尺寸 640×640
优化器 SGD
初始学习率 0.01
最终学习率因子 0.01
动量(Momentum) 0.937
权重衰减 0.0005
IOU 阈值 0.7
数据增强 Mosaic、FlipLR、Random Scale、HSV 变换等
早停策略 Patience = 100

训练过程中采用了丰富的数据增强策略,包括 Mosaic 数据增强(概率 1.0)、水平翻转(概率 0.5)、随机缩放(0.5)、HSV 颜色空间变换等,有效提升了模型的泛化能力。


四、系统技术架构

4.1 技术栈

组件 技术 版本
编程语言 Python 3.8+
深度学习框架 PyTorch 1.9.0
目标检测框架 Ultralytics YOLO 8.0.199
图像处理 OpenCV 4.8.1.78
GUI 框架 PyQt5 5.15.2
科学计算 NumPy / SciPy 1.26.1 / 1.11.3
可视化 Matplotlib / Seaborn 3.8.0 / 0.13.0

4.2 核心模块

  • MainProgram.py:主程序入口,基于 PyQt5 构建 GUI 界面,集成模型加载、推理、结果展示等核心逻辑。
  • Config.py:全局配置文件,定义模型路径、类别名称(中英文)、保存路径等参数。
  • detect_tools.py:检测工具模块,封装图像读取、坐标转换、绘制标注框、颜色管理等通用功能。
  • UIProgram/:界面设计模块,包含 Qt Designer 设计的 UI 文件、QSS 样式表、进度条组件等。

五、系统功能与界面展示

5.1 系统主界面

系统启动后呈现绿色主题风格的主界面,布局清晰、功能分区明确:

  • 顶部标题栏:显示"基于 YOLOv8 深度学习的农作物检测系统"。
  • 左侧显示区域:用于展示检测图像及标注结果,下方为检测结果与位置信息表格。
  • 右侧控制面板:包含文件导入、检测结果、目标位置、操作等四个功能区。
    在这里插入图片描述

图1:系统初始界面,左侧显示 AI 芯片图标,右侧为文件导入与参数调节面板,下方为检测结果表格。

5.2 功能模块

(1)文件导入

  • 图片检测:支持 .jpg、.jpeg、.png 格式图片的单张检测。
  • 视频检测:支持 .avi、.mp4 格式视频的逐帧检测与结果保存。
  • 摄像头实时检测:支持调用本地摄像头进行实时目标检测。
  • 批量检测:支持选择文件夹对其中所有图片进行批量检测。

(2)参数调节

  • 置信度阈值(Confidence):滑动条调节,默认 0.25,范围 0~1。
  • IOU 阈值:滑动条调节,默认 0.45,范围 0~1。

(3)检测结果展示

  • 实时显示检测用时和目标数目。
  • 支持通过下拉框选择单个目标查看其详细信息。
  • 显示每个目标的置信度和边界框坐标(xmin、ymin、xmax、ymax)。
  • 检测结果表格包含:序号、文件路径、类别(中文)、置信度、坐标位置。

(4)结果保存

  • 图片检测结果可保存为带标注的图片文件。
  • 视频检测结果可保存为 .avi 格式视频,带进度条显示处理进度。
  • 批量检测结果自动保存到 save_data 目录。

5.3 检测效果展示

以棉花(cotton)图片检测为例,系统成功识别出图像中的棉花植株,检测结果如下:

  • 识别类别:棉花(cotton)
  • 置信度:94.30%
  • 检测用时:0.043 秒
  • 目标数目:1
  • 边界框坐标:[0, 162, 599, 505]

在这里插入图片描述

图2:棉花检测效果,系统以粉色标注框精准定位棉花植株,置信度高达 94.30%,检测用时仅 0.043 秒,体现了 YOLOv8 模型的高效推理能力。


六、项目结构

CWCDetection/
├── CWC dataset/                  # 数据集目录
│   ── CWC dataset/
│       ├── VOC_xml/              # VOC 格式标注(XML)
│       │   ├── Annotations/      # 标注文件(2750个)
│       │   ├── ImageSets/Main/   # 数据集划分
│       │   └── JPEGImages/       # 原始图像(2750张)
│       ── YOLO_txt/             # YOLO 格式标注(TXT)
│           ├── train/            # 训练集
│           ├── val/              # 验证集
│           ├── test/             # 测试集
│           └── data.yaml         # 数据配置文件
├── models/                       # 训练好的模型权重
│   └── Common-Weed-and-Crop.pt
├── 农作物模型/                    # 训练过程输出(曲线、混淆矩阵等)
├── UIProgram/                    # GUI 界面模块
│   ├── UiMain.py / UiMain.ui     # 主界面
│   ├── QssLoader.py              # QSS 样式加载器
│   ├── precess_bar.py            # 进度条组件
│   ── style.css                 # 界面样式表
── Font/                         # 中文字体文件
├── MainProgram.py                # 主程序入口
├── Config.py                     # 全局配置
├── detect_tools.py               # 检测工具函数
├── train.py                      # 训练脚本
├── requirements.txt              # 依赖清单
└── setup.py                      # 安装配置

七、总结与展望

本项目基于 YOLOv8 深度学习框架,构建了一套功能完善的农作物与杂草检测系统。系统具备以下特点:

  1. 高精度检测:基于 2750 张图像、11 个类别的数据集训练,模型对各类农作物和杂草均具有良好的识别能力。
  2. 实时推理:YOLOv8n 轻量级模型在单张图片上的推理时间仅为 0.043 秒,满足实时检测需求。
  3. 友好交互:PyQt5 图形界面设计简洁直观,支持图片、视频、摄像头、批量等多种检测模式。
  4. 灵活配置:置信度和 IOU 阈值可通过滑动条实时调节,方便用户根据场景需求优化检测效果。

未来可进一步扩展的方向包括:

  • 引入更多农作物与杂草类别,扩大数据集规模。
  • 部署到边缘设备(如 Jetson Nano),实现田间实时检测。
  • 结合 GIS 系统,实现作物分布的可视化地图展示。
  • 增加模型对比实验(YOLOv5/v7/v8),分析不同架构的检测性能差异。

八、代码下载路径

有训练代码和训练好的模型以及训练过程,提供数据,提供GUI界面代码
项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷
https://www.bilibili.com/video/BV16JaS6sEGj/
在这里插入图片描述

导航