1. 项目概述
这个农业害虫检测系统是我去年为某大型农场开发的实战项目,核心目标是通过计算机视觉技术实现田间害虫的自动化识别。系统采用YOLO系列算法作为检测引擎,配合PyQt5开发的图形界面,最终实现了85%以上的mAP(平均精度均值)。在实际部署中,单张图像处理时间控制在200ms以内,完全满足田间实时检测需求。
2. 技术选型与架构设计
2.1 YOLO系列模型对比
我们测试了从v5到v12的多个版本,最终选择v8作为基础模型。具体性能对比如下:
| 模型版本 | 参数量(M) | mAP@0.5 | 推理速度(ms) |
|---|---|---|---|
| YOLOv5s | 7.2 | 0.72 | 45 |
| YOLOv8n | 3.2 | 0.78 | 28 |
| YOLOv12 | 8.7 | 0.81 | 52 |
选择v8的核心考量是其优秀的精度-速度平衡。对于农业场景,模型需要在移动设备上运行,因此3.2M的参数量非常合适。
2.2 系统架构
整个系统采用典型的CV项目架构:
code复制输入层 → 预处理 → 模型推理 → 后处理 → 可视化输出
↑ ↑
配置管理 模型权重加载
预处理阶段包含以下关键操作:
- 图像归一化(0-1范围)
- 自适应直方图均衡化(针对田间光照不均)
- 随机裁剪增强(训练阶段)
3. 数据集构建与处理
3.1 数据采集
我们收集了包含12类常见害虫的8500张标注图像,主要来源:
- 农场实地拍摄(占比60%)
- 公开数据集补充(IP102等)
- 数据增强生成
3.2 标注规范
采用YOLO格式的txt标注文件,每行格式:
code复制<class_id> <x_center> <y_center> <width> <height>
所有坐标值归一化到0-1范围。
3.3 数据增强策略
针对农业场景的特殊性,我们设计了以下增强组合:
python复制transform = A.Compose([
A.RandomBrightnessContrast(p=0.5),
A.RandomShadow(p=0.3), # 模拟田间阴影
A.GaussNoise(var_limit=(10,50),p=0.2),
A.Rotate(limit=15,p=0.5)
])
4. 模型训练细节
4.1 超参数配置
关键训练参数:
yaml复制lr0: 0.01
lrf: 0.1
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3
4.2 训练技巧
- 使用指数移动平均(EMA):
python复制model = Model(ema_decay=0.9999) - 采用余弦退火学习率策略
- 添加Focal Loss处理类别不平衡
4.3 评估指标
除常规mAP外,我们特别关注:
- 小目标检测召回率(<32x32像素)
- 同类害虫区分准确率
- 光照变化鲁棒性
5. PyQt5界面开发
5.1 核心功能模块
python复制class MainWindow(QMainWindow):
def __init__(self):
# 初始化摄像头/图像加载
self.cap = cv2.VideoCapture(0)
# 模型加载
self.model = YOLO('best.pt')
# 界面元素
self.label = QLabel()
self.btn_start = QPushButton('开始检测')
5.2 性能优化技巧
- 使用QThread处理视频流:
python复制class VideoThread(QThread): change_pixmap = pyqtSignal(QImage) - 图像缩放采用GPU加速
- 推理结果缓存机制
6. 部署实践
6.1 环境配置
推荐使用conda创建独立环境:
bash复制conda create -n pest_det python=3.8
conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
pip install pyqt5 opencv-python ultralytics
6.2 模型量化
为边缘设备部署进行的优化:
python复制model.export(format='onnx',
dynamic=True,
simplify=True,
opset=12)
7. 常见问题解决
7.1 检测漏报问题
典型场景及解决方案:
- 小目标漏检:
- 调整anchor大小
- 添加SPPF层
- 重叠目标漏检:
- 修改NMS参数
- 使用Soft-NMS
7.2 界面卡顿
优化方向:
- 降低显示帧率(15fps足够)
- 使用QPixmap代替QImage
- 分离UI线程与计算线程
8. 项目扩展方向
- 多模态融合:结合红外图像数据
- 害虫计数统计功能
- 移动端部署(Android/iOS)
- 云端模型自动更新机制
实际部署中发现,田间灰尘对摄像头影响很大。我们最终加装了防水防尘外壳,并开发了自动清洁提醒功能。这个经验说明,农业AI项目必须考虑现场环境因素。
