拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

基于 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 种农作物与杂草类别,兼顾常见经济作物与田间杂草,具体类别如下:

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

其中农作物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 技术栈

组件技术版本
编程语言Python3.8+
深度学习框架PyTorch1.9.0
目标检测框架Ultralytics YOLO8.0.199
图像处理OpenCV4.8.1.78
GUI 框架PyQt55.15.2
科学计算NumPy / SciPy1.26.1 / 1.11.3
可视化Matplotlib / Seaborn3.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/

返回列表