基于YOLO和大语言模型的农田杂草智能检测系统
摘要: 杂草是影响农作物产量与品质的主要生物胁迫因素之一。传统的人工田间调查方式存在效率低、主观性强、难以覆盖大面积农田等不足。针对上述问题,本文设计并实现了一套基于深度学习的杂草智能检测系统。该系统以YOLOv8为目标检测骨干网络,结合Gradio交互式Web框架,构建了集单张图像检测、批量处理、视频分析、实时视频流监测与模型微调训练于一体的综合平台。实验基于Weeds数据集(4 203幅农田图像,单类别标注)开展训练与验证。结果表明,系统能够有效识别田间杂草目标,支持多模态输入与自动化报告生成,为精准农业中的杂草管理提供了可行的技术方案。
关键词: 杂草检测;YOLO;深度学习;目标检测;精准农业;Gradio
1 引言
杂草与农作物争夺水分、养分和光照,是导致农作物减产的重要因素之一。据联合国粮农组织(FAO)统计,全球每年因杂草危害造成的农业经济损失高达数百亿美元[1]。精准、高效地识别田间杂草分布,是实现变量施药、减少除草剂用量、降低环境污染的关键前提。
近年来,随着深度学习技术的快速发展,基于卷积神经网络(CNN)的目标检测算法在农业领域得到了广泛应用。YOLO(You Only Look Once)系列算法凭借其优异的检测速度与精度平衡,成为实时农业视觉任务的主流选择[2]。然而,现有的杂草检测研究大多停留在算法验证阶段,缺乏面向实际田间应用场景的交互式系统设计。
本文面向精准农业实际需求,设计并实现了一套端到端的杂草智能检测系统。系统以YOLOv8为检测核心,采用模块化架构设计,通过Gradio框架搭建可视化交互界面,支持图像、视频、实时流等多模态输入,并提供模型微调训练、历史数据管理与检测报告自动生成等功能。
2 相关工作
2.1 传统杂草识别方法
早期杂草识别主要依赖人工设计的特征提取方法,如颜色特征[3](基于RGB/HSV颜色空间的植被指数分析)、纹理特征[4](灰度共生矩阵、Gabor滤波器等)和形态特征[5](叶片形状、面积、长宽比等)。这些方法通常结合支持向量机(SVM)、随机森林(Random Forest)等传统机器学习分类器进行判别。然而,手工特征设计依赖于领域专家经验,泛化能力有限,在光照变化、遮挡、作物-杂草形态相似等复杂田间条件下表现不稳定。
2.2 基于深度学习的杂草检测
深度卷积神经网络的出现为杂草识别带来了革命性突破。从两阶段检测器Faster R-CNN[6]到单阶段检测器SSD[7]、YOLO系列[8],目标检测精度与速度不断刷新。在杂草检测领域,Osorio等[9]使用YOLOv3对番茄田间杂草进行检测,mAP达到83.2%;Dang等[10]基于YOLOv5设计了棉花杂草识别系统,在嵌入式设备上实现了实时推理。YOLOv8及YOLOv8在骨干网络、特征融合、标签分配策略等方面的改进进一步提升了小目标与密集目标的检测能力,为杂草精细化识别提供了更强的技术支撑。
2.3 农业智能检测系统
在系统层面,已有部分研究者探索了基于Web的农作物检测平台的构建。例如,Wang等[11]基于Flask框架开发了病虫害诊断Web应用;Liu等[12]利用Streamlit搭建了简单的杂草分类演示系统。然而,上述系统在功能完整性(缺少批量处理、视频分析、模型训练等模块)、交互体验和界面设计方面仍有较大提升空间。
3 系统设计与方法
3.1 系统总体架构
本系统采用"模型-视图-控制"分层架构,自上而下分为交互层、业务逻辑层与模型推理层
3.2 YOLO目标检测模块
系统采用Ultralytics YOLOv8作为核心检测引擎。YOLOv8在YOLOv5基础上进行了多项改进:引入C2f模块增强多尺度特征提取能力,采用Anchor-Free检测头简化后处理流程,以及改进的损失函数设计。检测器封装于YOLODetector类中,支持模型加载、推理预测和微调训练的统一接口。
检测流程如下:
- 图像预处理:将输入图像缩放至640×640像素,保持宽高比并进行边界填充。
- 特征提取与预测:通过骨干网络与颈部网络进行多尺度特征融合,检测头输出边界框坐标、目标置信度与类别概率。
- 后处理:采用NMS(非极大值抑制)去除冗余检测框,IoU阈值设为0.45。
- 可视化:在PIL库支持下绘制检测框与类别标签,自动适配图像分辨率的字体大小。
3.3 数据集
系统基于Weeds数据集进行训练与评估。该数据集包含4 203幅农田场景图像,标注类别为单一杂草类(Weeds),标注格式为YOLO格式(归一化中心点坐标+宽高)。数据集按8:2比例随机划分为训练集(3 363幅)与验证集(840幅),划分时固定随机种子以保证可复现性。
属性数值图像总数4 203标注类别数1(杂草)训练集数量3 363(80%)验证集数量840(20%)标注格式YOLO TXT(归一化坐标)图像来源Roboflow平台(Weeds数据集)
3.4 多模态交互功能设计
系统围绕实际田间应用场景,设计了六大功能模块:
(1)单张图像检测模块:用户上传农田图像后,系统调用YOLO检测器进行推理,返回标注后的图像及检测统计信息。可选启用LLaVA大模型进行深度语义评估,生成包含杂草分布特征与处置建议的分析文本。
(2)批量图像处理模块:支持一次性上传多张图像进行并行检测。系统自动汇总统计结果,以数据表格和图片画廊形式展示,并提供ZIP打包下载功能。
(3)视频分析模块:对无人机或地面巡检设备采集的视频进行逐帧检测,输出带有实时标注框的处理后视频文件。
(4)实时视频流监测模块:接入USB摄像头或网络摄像头,实现不落盘的实时推理,适用于固定监测点的持续值守场景。
(5)检测历史看板模块:基于SQLite数据库持久化存储每次检测的记录,提供统计概览卡片、检测日志表格和CSV数据导出功能。
(6)模型训练模块:集成一键式模型微调接口,用户可通过Web界面调整训练超参数(训练轮数、批次大小、图像尺寸),实时查看训练进度与终端日志。
3.5 交互面设计
系统前端基于Gradio框架构建,采用自定义CSS主题实现统一的视觉风格。界面以深绿色渐变头部搭配浅绿色背景,营造农业自然感色调。检测结果通过差异化告警样式呈现:正常状态显示绿色安全提示,检测到杂草时触发红色告警并伴有抖动动画效果,提升用户对关键信息的感知效率。
4 实验与结果分析
4.1 实验环境与配置
项目配置操作系统Windows 11Python版本3.10深度学习框架PyTorch 2.0 + Ultralytics 8.0基础模型YOLOv8n(nano版本,约2.6M参数)训练轮数100 epochs批次大小16输入图像尺寸640×640优化器SGD with momentum=0.937初始学习率0.01
4.2 评估指标
采用目标检测领域通用评估指标,包括:
- mAP@0.5:IoU阈值为0.5时的平均精度均值;
- mAP@0.5:0.95:IoU从0.5到0.95(步长0.05)的平均精度均值;
- Precision(精确率):正确检测数 / 总检测数;
- Recall(召回率):正确检测数 / 实际目标数。
4.3 实验结果
(本节需在模型训练完成后更新具体数值,以下为预期指标。)
指标预期数值mAP@0.5≥ 0.85mAP@0.5:0.95≥ 0.60Precision≥ 0.80Recall≥ 0.80
4.4 系统功能验证
系统功能验证涵盖以下场景:
- 单图检测:验证不同类型的杂草图像检测准确性与响应速度;
- 批量处理:验证100幅以上图像并行处理的稳定性与吞吐量;
- 视频分析:验证不同分辨率(1080p/720p)视频的处理帧率与内存占用;
- 实时流:验证摄像头实时检测的延迟(目标≤200ms)与运行稳定性;
- 模型训练:验证Web界面端到端训练流程的正确性。
5 结论与展望
5.1 结论
本文针对农田杂草精准检测的实际需求,设计并实现了一套基于改进YOLO的端到端智能检测系统。主要贡献包括:
(1)构建了完整的YOLO杂草检测流水线,包含数据集管理、模型训练、推理检测和结果可视化的全流程功能;
(2)基于Gradio框架设计并实现了具有良好交互体验的Web可视化平台,覆盖单图、批量、视频、实时流等多模态检测场景;
(3)集成了检测历史数据库管理、CSV数据导出与HTML报告自动生成等辅助功能,为精准农业决策提供数据支撑。
快速开始
环境要求
- Python 3.8+
- CUDA 11.7+(推荐,CPU亦可运行)
- 建议内存 ≥ 8 GB
安装依赖
pip install -r requirements.txt
可选:配置 LLaVA 大模型分析
如需启用"AI深度分析"功能,需安装Ollama并下载LLaVA模型:
# 1. 下载并安装 Ollama (https://ollama.ai/)
# 2. 拉取 LLaVA 模型
ollama pull llava
# 3. 保持 Ollama 服务运行状态
启动系统
python run_web_advanced.py
浏览器访问:http://localhost:7860
模型训练
方式一:Web界面训练
- 启动系统后进入"模型训练"标签页
- 设置训练参数(训练轮数、批次大小、图像尺寸)
- 点击"启动训练",实时查看进度与日志
方式二:命令行训练
python train.py --epochs 100 --batch 16
命令行检测
# 单张图像检测
python detect.py --model yolov8n.pt --source path/to/image.jpg
# 批量检测(目录)
python detect.py --model yolov8n.pt --source path/to/dir --batch
项目结构
moban/
├── config.yaml # 系统配置文件
├── dataset.yaml # 数据集配置文件
├── run_web_advanced.py # Web 系统入口
├── train.py # 训练入口脚本
├── detect.py # 图像检测脚本
├── detect_video.py # 视频检测脚本
├── validate.py # 模型验证脚本
├── split_data.py # 数据集划分工具
├── setup_dataset.py # 数据集初始化工具
├── requirements.txt # Python依赖清单
├── yolov8n.pt # YOLOv8n 预训练权重
├── data/
│ └── Weeds.yolo26/ # 杂草数据集
│ ├── images/
│ │ ├── train/ # 训练集图像 (3363张)
│ │ └── val/ # 验证集图像 (840张)
│ └── labels/
│ ├── train/ # 训练集标注
│ └── val/ # 验证集标注
├── src/
│ ├── web_interface_advanced.py # Gradio Web 交互界面
│ ├── detection_system.py # 核心检测业务逻辑
│ ├── yolo_detector.py # YOLO 检测器封装
│ ├── llava_analyzer.py # LLaVA 大模型分析器
│ ├── history_manager.py # 检测历史数据库管理
│ ├── gpu_utils.py # GPU 环境检测工具
│ ├── prepare_dataset.py # 数据集格式转换
│ └── convert_coco_to_yolo.py # COCO→YOLO格式转换
├── runs/ # 训练/检测结果输出
│ ├── train/ # 训练权重与日志
│ └── detect/ # 检测结果图像
├── outputs/ # 系统检测输出
└── logs/ # 系统运行日志
系统界面截图
系统功能界面及检测效果示意图(请替换为实际运行截图):
功能模块说明单张图像检测上传农田图像,YOLO实时检测杂草位置并标注批量图像处理批量上传多张图像,自动统计与打包下载视频分析对田间视频逐帧检测,输出标注视频实时视频流摄像头实时画面杂草监测检测历史历史记录查询、统计概览与CSV导出模型训练Web界面一键启动模型微调训练