恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

智慧农业实战:番茄叶片检测数据集构建与YOLO训练指南

  • 首页
  • 资讯中心
  • /
  • 智慧农业实战:番茄叶片检测数据集构建与YOLO训练指南

相关资讯

SQL Server事务日志深度解析:用Log Explorer实现误删数据秒级恢复实战 2026/10/14 14:23:56
徕芬吹风机核心卖点详解 产品亮点及活动价格参考指南 2026/10/14 14:23:56
物联网事件协议怎么平滑升级:从 schema_version 到兼容回放 2026/10/14 14:23:56

最新资讯

用AI把Epic拆到最小:product-manager-prompts 用户故事系列完全教程
Farm CLI 命令行参考:create、start、build、preview、watch 全流程实操与源码解析
kubernetes-ingress 中基于 ConfigMap 的 NGINX Plus Zone Sync 状态同步配置详解
微信软件我发现存在一个bug,微信收藏的东西,更换手机后就找不到原来手机微信收藏的东西了,大家有遇到这个问题吗?如何解决?建议微信升级下bug?
齿轮参数计算小工具:从变位齿轮到跨棒距的Python实现
多串口并发测试工具CommTest:VC6多线程串口通信工程实践

今日推荐

IBM Verify Identity Access 修复 22 个漏洞:两个 9.8 严重 RCE 无需认证
小区物业管理系统
小型超市仓库管理系统

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

智慧农业实战:番茄叶片检测数据集构建与YOLO训练指南

发布时间:2026/10/14 14:28:56
智慧农业实战:番茄叶片检测数据集构建与YOLO训练指南 1. 项目概述1.1 为什么要做番茄叶片检测数据集做智慧农业的人应该都有体会算法模型不缺缺的是干净、贴合场景、能直接用的数据。尤其在大棚番茄种植场景里叶片黄化、病斑、缺素症这些问题靠人眼巡检效率低经验依赖重规模化种植根本忙不过来。我在实际项目里碰到的情况是网上能下到的公开数据集要么是田间的远景叶片要么是实验室里单反拍的“完美样本”真到了大棚里光线杂乱、叶片重叠、阴影交错模型直接拉胯。所以我花了两周多时间整理并构建了一套番茄健康叶片的检测数据集一共3100张图像全部基于YOLO格式标注。这里说的“健康叶片”不是只包含完全无病的叶片而是覆盖了从健康到轻度异常的不同状态目的是让模型学会区分“正常”和“需要关注”的叶片而不是只在完美样本上刷精度。这套数据集解决的核心问题有三个第一给做设施番茄种植智能化的人一套可以直接训练检测模型的底料第二统一标注格式和目录结构省掉自己转格式、清洗数据的脏活第三提供一套从采集、标注到训练评估的完整参考流程让刚入门YOLO的农业方向开发者少踩坑。适合谁用正在做智慧农业视觉检测、番茄生长状态监测、植物病害预警系统的开发者或者想用YOLOv8/v5训练自定义数据集但不知道从哪下手的同学这套东西都能直接接上。1.2 数据集规格与文件结构先看整体规格这套数据集的核心参数如下项目参数图像总数3100张标注格式YOLO txt格式归一化坐标目标类别1类healthy_leaf健康叶片图像分辨率1920×1080为主部分近景图达3000×3000场景覆盖温室大棚、露天种植、实验室补光环境光照条件自然光、遮阴、人工补光、逆光生长阶段苗期、花期、果实膨大期均有覆盖标注框数量每张图平均5-8个目标合计约19000个实例目录结构沿用了YOLO官方数据集的习惯拿过来就能直接traindataset/ ├── images/ │ ├── train/ # 2480张 │ ├── val/ # 310张 │ └── test/ # 310张 ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ ├── data.yaml # nc1, names[healthy_leaf] └── README.md # 采集说明标注规范train/val/test按8:1:1划分保证同株番茄的不同图片不会同时出现在训练集和验证集里这个细节后面会专门说因为直接关系到模型评估的可靠性。2. 数据采集与标注全流程2.1 采集设备与场景设计数据采集这事我踩过的坑比训练模型多得多。第一次采集时我贪图方便直接用手机在晴天中午拍了一批结果模型训练完在阴天场景下检测率直接掉了20个百分点。后来才意识到农业视觉数据的场景多样性远比数量重要。最终的采集方案是用iPhone 13 Pro和一台大疆无人机Mini 3 Pro分别采集近景和俯视视角地面拍摄距离控制在30-80cm无人机飞行高度在2-5米。固定三脚架拍摄了一批不同角度、不同光照条件下的标准图像保证数据多样性。同时在采集过程中同步记录了温湿度、光照强度lux等环境数据方便后续分析环境对检测效果的影响。场景上我特意覆盖了三种连栋温室有遮阳网、喷灌系统、普通拱棚塑料膜透光不均、露天菜地自然风、直射光。每个场景下再细分早晚9:00前、16:00后、正午强光、阴天散射光三种光照条件。这样组合下来一套数据里就有了“不同生长阶段的叶片在不同光照下的状态”模型学到的特征更本质而不是记住了某个特定时间点的光影。这里有个关键建议采集时不要只拍“好看”的叶片。在真实大棚里叶片互相遮挡、下部老叶发黄、叶缘干枯都是常态这些都要拍进去。标注时要明确边界目标框严格框住完整叶片区域包括叶柄和叶缘。如果叶片被遮挡超过50%就不标注避免给模型送噪声。这样训练出来的模型才真的下地能用。2.2 标注规范与质量把控标注工具我用的LabelImg虽然界面老一点但胜在稳定团队协作也好上手。标注时只标单类healthy_leaf但框选边界制定了严格规范叶片轮廓清晰且被遮挡面积小于50%才标注否则跳过。对于重叠叶片只标最外层可见轮廓完整的叶片。图像边缘的叶片若被截断超过1/3不标。全程标完后我做了一轮交叉验证——让两个人互相抽检对方的标注结果检查框的位置偏差和漏标情况。一个值得注意的数字是抽检500张图后发现漏标率约3.2%主要出现在叶片重叠严重的区域。处理方式是让标注员重新过了一遍漏标图片补齐后再统一检查。如果你的数据集也要多人协作标注这个流程建议直接抄作业能有效避免“一个人标得松一个人标得紧”导致的标签风格不一致。质量检查这里再补充一个细节YOLO格式的txt文件里坐标是归一化的很容易出现小数点后位数不足导致框位偏移的问题。我统一保留了6位小数并且写了个脚本检查是否有坐标超出[0,1]范围、是否有width或height为0的异常框这类问题不处理的话训练时会直接报错处理起来很烦。2.3 数据清洗与增强策略原始采集了大概4300张图最终只留下3100张删掉约1200张。删除的规则包括严重过曝或欠曝、严重运动模糊、叶片占比过小目标区域小于图像面积5%、以及乔布斯都救不了的构图混乱图。这一步别心疼脏数据进模型后面十倍时间都补不回来。增强策略上我没有一上来就上重型增强而是分两步走。第一步是基础增强水平翻转概率0.5、±15度旋转、±20%亮度调整、HSV微调。第二步是针对光照场景的专项增强随机阴影叠加、模拟逆光的高光抑制、局部遮挡模拟用黑色矩形块随机遮盖叶片的一部分。这样做的目的是让模型在白天强光、傍晚弱光、叶片互相遮挡这些真实场景下不容易丢目标。还有一个很管用的操作——MixUp增强。把两张不同的叶片图按一定比例融合相当于强制模型去学“叶片局部特征”而不是死记整张图的纹理。我在训练中设置mixup概率为0.3配合mosaic增强模型在验证集上的Recall提升了1.8个百分点实测有效。3. 基于YOLO的模型训练与评估3.1 环境配置与训练参数选择训练环境我用的是单张RTX 309024GB显存软件栈是PyTorch 2.0 CUDA 11.8 YOLOv8官方仓库。如果是学生党只有笔记本也能跑但建议用Google Colab的GPU运行时把数据集上传到Drive后挂载训练即可。我第一次就是在Colab上完成的数据验证用的T4显卡200轮训练大概需要3.5小时。超参数这一块我直接给出一个验证过的组合参数值说明img_size640×640兼顾精度与显存占用batch_size1624GB显存下比较稳Colab T4也能跑epochs200足够收敛配合早停更稳lr00.01初始学习率YOLOv8默认值可用optimizerSGDMomentum0.937, weight_decay0.0005mosaic1.0前100轮开启后100轮关闭以稳定收敛mixup0.3增强泛化能力实测有效augmentTrue开启YOLOv8自带增强策略训练命令很简单yolo仓库下直接跑yolo train data/path/to/data.yaml modelyolov8s.pt epochs200 imgsz640 batch16这里说明一下为什么选yolov8s而不是n或mn模型太小在叶片重叠场景下漏检明显m模型精度高但训练和推理速度都慢不少对实时检测场景不够友好。s是精度和速度的平衡点对大多数农业检测需求来说是最稳的选择。3.2 结果可视化的解读方法训练完成后val目录下会生成results.png、confusion_matrix.png、F1_curve.png等文件。很多人只看最终的mAP数字其实这里面的信息量很大。results.png里的关键曲线有三条box_loss边框回归损失、cls_loss分类损失、mAP0.5。我训练的模型在200轮时的表现如下指标数值mAP0.50.961mAP0.5:0.950.843Precision0.948Recall0.956F1-score0.952看曲线时有个实用的小技巧如果box_loss在前50轮就降到了0.03以下说明模型学得很快数据质量不错如果cls_loss一直在0.1以上震荡说明类别特征不明显这时候要回去检查标注框是不是太松。mAP0.5在0.95以上这个数字在公开数据集上不算稀奇但在这种背景复杂、光照多样的农业场景里说明标注质量和数据多样性确实起了作用。3.3 消融实验设计思路为了严格评估数据集的质量可以设计一组简单的消融实验固定同一份YOLOv8结构、同一套训练参数对比“仅用公开数据集比如VOC中的部分植物图片”和“公开数据集本数据集”两种训练组合下的指标差距。关键是控制变量——除了训练数据其他条件全都保持一致。加入本数据集后如果mAP0.5提升了2-3个百分点以上就说明新增的数据确实提供了有效信息而不是重复的冗余样本。具体操作时注意两点第一每组实验至少跑三次不同的随机种子取均值消除随机性第二保证训练轮数相同避免因为早停位置不同导致比较无意义。有条件的话还可以加一组“使用预训练权重”和“不使用预训练权重”的对比看看数据集本身的贡献有多大。这套消融实验不需要额外写代码成本很低但对论证数据集的可用性非常有效。4. 常见问题与排查技巧4.1 训练时Loss不下降的排查思路训练一开始最崩溃的就是loss不降反升。遇到这个情况我通常按下面这个顺序排查先检查数据集。用yolo自带的验证脚本跑一遍看标注框是否正常显示。如果画出来的框位置不对、大小异常那问题多半在txt标注文件里。常见情况是类别id从1开始而不是0或者归一化坐标的除数是图像宽度而不是最大边长。这种低级错误很隐蔽我第一次做数据集时就栽在“除的是高度”这个细节上。然后检查数据增强配置。mosaic开启后如果输入图像边长小于640会导致拼图区域有黑边影响模型对目标尺度的感知。解决办法是在增强前将所有图片resize到统一尺寸。最后检查学习率。SGD下lr0调到0.01还降不下去试着降到0.001如果降了就能收敛说明初始学习率过高了。4.2 验证集mAP很高但测试集掉点这是过拟合的典型信号。我见过不少同学训练集mAP 0.98测试集直接掉到0.7以下然后开始怀疑数据集有问题。实际上问题往往出在数据划分上如果没有保证同一株番茄的图片只出现在一个集合里模型就相当于见过“答案”了。解决方法是按植株分组划分数据集而不是按图片随机划分。我在这套数据集里就是先按植株编号分组再按8:1:1切分这样即使同一植株的不同角度图片都在训练集里模型面对没见过的植株时泛化表现才是真实水平。另外增加数据增强的强度、加入早停机制也能有效抑制过拟合。4.3 标注文件常见错误速查错误类型表现解决方案类别id错误训练时报num_classes不匹配检查txt第一列是否为0坐标越界训练中断报index out of range写脚本检查归一化坐标是否在[0,1]空标注文件该图无标签训练正常但精度低脚本过滤空txt并核实是否漏标图像尺寸不一致mosaic拼接时报错统一resize到640重复标注同一叶片两个框人工复核删掉IoU0.8的重复框标注质量真的值得花时间反复核查。我后来每次训练前都会跑一遍检查脚本把异常文件直接列出来看到0个异常才安心睡觉。5. 扩展应用与实战经验5.1 用USB摄像头做实时检测模型训好后最直接的下游应用就是接摄像头做实时检测。我用普通USB摄像头罗技C920在笔记本上跑过YOLOv8s输入分辨率640帧率能稳定在25FPS左右检测效果足够日常监测使用。核心代码如下from ultralytics import YOLO import cv2 model YOLO(best.pt) cap cv2.VideoCapture(0) while True: ret, frame cap.read() if not ret: break results model(frame, conf0.5, imgsz640) annotated results[0].plot() cv2.imshow(Tomato Leaf Detection, annotated) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()需要注意一个细节大棚里的网络环境经常不稳定不要依赖云端API做实时检测本地跑模型才是最稳的方案。另外摄像头安装位置建议离叶片30-50cm太远了小叶片容易漏检太近了视野太小。5.2 无人机航测与移动端部署这套数据集里的俯视图可以用来训练无人机视角的叶片检测最直接的应用就是多光谱影像反演。如果手里有大疆无人机和配套的多光谱相机可以采集田间NDVI数据与叶片检测结果叠加分析就能定位到具体哪一垄的番茄出现了叶片黄化趋势。我自己试过把YOLOv8s导出为ONNX再转成TensorRT在Jetson Orin Nano上推理速度能到30ms/帧左右完全满足田间实时分析的需要。移动端部署则更适合轻量级场景。用YOLOv8n导出为NCNN格式在小米11上跑推理耗时约45ms内存占用不到1GB。如果你只想快速验证一个检测demo直接用YOLO的Python接口配Flask搭一个HTTP服务手机浏览器访问就能看到检测结果这个方案最适合做技术验证。5.3 农业场景部署的三个经验提醒第一光照变化比你想象的剧烈。大棚里10点钟和14点钟的光照强度能差好几倍模型如果只在固定光照下训练换到另一个时段效果就会明显波动。训练时开的HSV扰动和亮度增强实际部署后帮助很大。第二实时检测的误报处理要留后手。叶片重叠时模型偶尔会给出置信度不高但位置正确的框conf 0.3-0.4如果业务上对误报容忍度低建议把置信度阈值调高到0.6以上虽然Recall会掉一点但在实际监测中减少非必要的报警更有价值。第三模型更新要常态化。番茄不同生长阶段的叶片形态差异很大这套数据集虽然覆盖了多个阶段但新环境、新品种还是要持续补充数据。建议部署一套简单的数据回传机制把现场检测置信度低但人工确认有效的图片定期加入训练集滚动更新模型。6. 写在最后的个人体会做这套数据集前后花了三周真正的时间大头不在拍照和标注而在清洗和验证。前前后后删掉重标过的图片没有一千也有八百但回头看这些“浪费”的时间一点都不可惜——数据质量直接决定了模型天花板这个道理在农业场景里体会尤其深。另外想说的一点是智慧农业这个方向很多算法工程师容易钻进模型结构的优化里出不来但实际上在农田、大棚这些非理想环境下数据和场景适配才是真正的护城河。一套贴合实际场景的高质量数据集对模型效果的提升往往比换一个更大的backbone来得更明显。如果你准备用这套数据集跑自己的项目我建议先花半天时间把标注抽出来可视化看一眼多看看错误案例比你直接开训价值更大。后续我打算在这套数据基础上补一批同时标注“健康叶”和“病斑叶”的细粒度数据再把番茄果实的检测加上去做成一个完整的生育期监测方案到时候再和大家分享。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号