YOLOv8 农业害虫识别系统
这是一个基于 YOLOv8 的农业害虫目标检测系统,能够识别和定位 102 种不同类型的害虫。项目利用深度学习模型对数据集进行训练,实现高效的害虫检测和识别,并提供 Web 可视化界面,支持单张图片预测、批量图片预测等功能。


项目结构
Project/
├── YOLOv8/ # YOLO 格式数据集
│ ├── train/ # 训练集
│ │ ├── images/
│ │ └── labels/
│ ├── val/ # 验证集
│ │ ├── images/
│ │ └── labels/
│ ├── runs/ # 训练输出
│ │ └── detection/
│ │ └── weights/
│ │ └── best.pt
│ ├── classes.txt # 害虫类别列表
│ └── data.yaml # 数据集配置文件
├── main.py # 主程序 - Web 界面
├── voc2yolo.py # 数据格式转换脚本
├── train.py # 模型训练脚本
├── predict_image.py # 单张图片预测脚本
└── README.md # 项目说明文档
快速开始
环境准备
确保你的开发环境满足以下要求:
- Python 3.8+
- CUDA 11.0+ (GPU 训练推荐)
- 至少 8GB RAM
安装依赖
使用 pip 安装必要的库:
pip install ultralytics gradio opencv-python pillow gdown
数据集准备
- 下载数据集
运行以下脚本自动获取 IP102 数据集:
python download.py
- 转换数据格式
将 Pascal VOC 格式转换为 YOLO 格式:
python voc2yolo.py
数据集介绍
本项目包含 102 种常见农业害虫,涵盖水稻、玉米、小麦及果树等多种作物的主要病虫害。以下是部分专业中文译名对照(结合植保领域常用表述):
- rice leaf roller —— 稻纵卷叶螟
- rice leaf caterpillar —— 稻叶夜蛾
- paddy stem maggot —— 稻秆潜蝇
- asiatic rice borer —— 二化螟
- yellow rice borer —— 三化螟
- rice gall midge —— 稻瘿蚊
- Rice Stemfly —— 稻秆蝇
- brown plant hopper —— 褐飞虱
- white backed plant hopper —— 白背飞虱
- small brown plant hopper —— 灰飞虱 ... (共 102 类,详见项目目录)

模型训练与部署
启动训练
配置好 data.yaml 后,直接运行训练脚本:
python train.py
默认配置如下:
- 模型:YOLOv8n (可替换为 yolov8s.pt/yolov8m.pt)
- 轮数:30 epochs
- 批次大小:16
- 图片尺寸:640x640
启动 Web 界面
训练完成后,运行主程序开启可视化界面:
python main.py
访问 http://localhost:7860 即可使用害虫检测系统。
功能特性
- 单张图片预测:上传单张田间照片,实时显示检测框和置信度,提供详细统计。
- 批量图片预测:支持多张图片批量处理,自动生成结果图库并汇总进度。
- 系统信息:展示模型详细信息、害虫类别列表及使用说明。
核心脚本说明
download.py:自动下载 IP102 数据集,解压并验证完整性。voc2yolo.py:将 Pascal VOC 格式转换为 YOLO 格式,生成划分文件。train.py:YOLOv8 模型训练脚本,支持多种变体,自动保存最佳权重。main.py:基于 Gradio 的 Web 界面,提供用户友好的交互设计。
使用示例
单张图片检测
在 Python 环境中调用模型:
from ultralytics import YOLO
model = YOLO("./IP102_YOLOv8/runs/IP102_detection/weights/best.pt")
results = model.predict("image.jpg", conf=0.25)
批量检测
results = model.predict(["img1.jpg", "img2.jpg"], save=True)
自定义配置
调整置信度阈值
在 Web 界面中滑动调节,或在代码中设置:
results = model.predict(source=image, conf=0.5) # 提高阈值以减少误检
切换模型版本
在 train.py 中修改加载路径:
model = YOLO("yolov8s.pt") # 使用更大型号提升精度
注意事项
- 首次运行需先下载数据集并完成格式转换。
- 推荐使用 GPU 加速训练和推理过程。
- 批量处理时注意监控系统内存占用。
- 确保数据集路径配置正确,避免文件读取错误。


