
1. 项目背景与核心价值番茄作为全球广泛种植的经济作物其叶片健康状况直接影响产量和品质。传统人工检测方式存在效率低、主观性强等问题而基于深度学习的自动化识别技术正逐步改变农业生产监测方式。这个毕业设计项目采用YOLO目标检测算法构建的番茄叶片病变识别系统实现了常见病害的快速定位与分类为精准农业提供了可行的技术方案。我在实际测试中发现系统对早疫病、晚疫病、叶霉病等典型病害的识别准确率可达85%以上单张图像处理时间控制在200ms内完全满足田间实时检测需求。相比传统CNN分类网络YOLO算法能同时完成病变定位和分类更符合实际应用场景。2. 技术方案设计解析2.1 算法选型依据选择YOLOv5而非其他版本的原因主要有三点模型大小与精度平衡v5s版本仅14MB在jetson nano等边缘设备上也能流畅运行训练效率优势使用PyTorch框架比Darknet更易部署且支持混合精度训练数据增强策略内置Mosaic数据增强有效提升小目标检测能力关键提示农业场景中病变区域通常只占叶片小部分选用YOLOv5的SPP结构能更好捕捉多尺度特征2.2 数据准备要点项目使用的数据集包含三类典型病害早疫病Alternaria solani不规则褐色病斑晚疫病Phytophthora infestans水浸状边缘模糊病斑叶霉病Leaf mold黄色褪绿斑块数据增强策略特别设计# 自定义增强组合 train_transform A.Compose([ A.RandomRotate90(), A.HueSaturationValue(10,15,10), A.RandomShadow(p0.3), # 模拟田间阴影 A.RandomBrightnessContrast(p0.5), ], bbox_paramsA.BboxParams(formatyolo))3. 模型训练关键步骤3.1 参数配置实例hyp.scratch.yaml中关键参数调整lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率系数 warmup_epochs: 3.0 mixup: 0.1 # 适度使用mixup增强训练命令示例python train.py --img 640 --batch 16 --epochs 100 --data tomato.yaml --weights yolov5s.pt3.2 损失函数优化针对叶片病变特点改进CIoU损失增加小目标权重系数对病斑边缘模糊特性调整alpha参数采用Focal Loss解决类别不平衡问题4. 系统实现细节4.1 部署架构设计采用C/S架构实现客户端(Android/iOS) ↓ HTTP协议 Flask服务端 ↓ ONNX Runtime YOLOv5模型 ↓ SQLite 病害记录数据库4.2 核心接口代码病害检测API示例app.route(/detect, methods[POST]) def detect(): img request.files[image].read() img Image.open(io.BytesIO(img)) # 推理处理 results model(img, size640) # 结果解析 pred results.pandas().xyxy[0] return jsonify({ diseases: pred[name].tolist(), locations: pred[[xmin,ymin,xmax,ymax]].values.tolist() })5. 实际应用效果5.1 性能测试数据测试环境推理速度(FPS)mAP0.5RTX 3060620.87Jetson Xavier280.85Raspberry Pi 43.50.825.2 田间测试案例在山东寿光大棚实测中发现晨间露水会影响识别建议增加去雾预处理重叠叶片需配合NMS阈值调整最佳拍摄距离为30-50cm6. 常见问题解决方案6.1 误检问题处理现象健康叶脉被误判为病斑 解决方法在数据标注时明确区分叶脉与病斑调整confidence阈值至0.4增加健康叶片负样本6.2 模型轻量化技巧移动端部署优化方案使用TensorRT加速采用--dynamic参数导出ONNX量化到INT8精度7. 项目扩展方向多作物适配修改数据集即可扩展至辣椒、黄瓜等作物病害严重度分级通过病斑面积比例划分等级防治建议联动结合病害类型推送用药方案这个项目最让我意外的是YOLO算法对模糊病斑的识别能力。在实际测试中即使病斑边缘模糊不清模型仍能保持较高识别率。建议后续研究者可以尝试将注意力机制融入检测头进一步提升对早期轻微病症的检测灵敏度