突破 A:从零构建数据集
绿萝病害无公开数据集可用——这是最大的起点障碍。整个数据工程过程:
- 实地/网络采集绿萝不同生长阶段图片(爆盆期 / 生长期 / 扦插期 / 幼苗期),覆盖不同光照和角度条件
- 用 LabelImg 手工标注 4 类病害边界框(叶斑病 / 叶枯病 / 根腐病 / 正常健康,每类约 100 张)
- PascalVOC 格式导出,处理类别不平衡(部分病害样本稀少)
- 完整走通了 CV 项目最耗时但最关键的数据工程环节
突破 B:资源约束下的模型调优
硬件约束:RTX 4060 Laptop 仅 8GB 显存。在有限算力下完成全训练流程:
- Mosaic + MixUp 数据增强缓解小样本过拟合
- FocalLoss 处理类别不平衡问题
- batch-size 从默认 16 降到 8、input-resolution 从 640 调到 512 以适配显存
- 迁移学习:COCO 预训练权重 warm-up 前 3 个 epoch
- 推理端:OpenCV DNN 模块加载 ONNX 格式模型(无需 PyTorch 运行时)
工程化部署形态
模型封装为本地 Python GUI 工具(tkinter 界面),支持两种使用模式:
- 图片批量检测模式:拖入文件夹自动逐张识别并保存结果 CSV
- 实时摄像头模式:USB 摄像头 15fps 实时框选病害区域(含 NMS 非极大值抑制后处理)
覆盖了计算机视觉项目的完整生命周期:数据采集 → 标注 → 模型训练 → 导出优化 → 应用部署。
技术栈
YOLOv5 (Ultralytics) PyTorch + CUDA 11.8 OpenCV DNN (ONNX) RTX 4060 Laptop LabelImg tkinter GUI