2. 农业识别数据工程实战

在农业视觉识别项目中,模型效果的上限往往在数据阶段就已经被决定。作物、病害、虫害三类目标在形态、尺度、光照和背景上差异极大:作物叶片可能大面积重叠,病斑可能只占叶片面积的百分之几,害虫则可能只有十几像素。如果采集与标注环节缺乏统一规范,后续无论怎样调参都难以弥补。本节围绕一条可落地的数据工程链路展开:采集规范、标注工具与格式、增强策略、数据集划分、质量检查。

一、采集规范:先定义“拍什么、怎么拍”

采集前应先明确目标类别体系。以番茄为例,可划分为健康叶片、早疫病、晚疫病、叶霉病,以及蚜虫、白粉虱等虫害类别。类别定义要给出可判别的视觉特征,例如“早疫病表现为同心轮纹状褐色病斑,边缘带黄晕”,避免“病叶”这类模糊标签导致标注员各自理解不同。

拍摄环节建议固定一组可控参数并记录在采集表中:设备型号、拍摄距离、光照条件(自然光/补光灯)、拍摄角度(俯拍、45°侧拍)、背景(田间原位/白色背景板)。同一类别应覆盖至少三种光照(顺光、逆光、阴天散射)与两个生育期,避免模型学到“背景即类别”的捷径特征。单类别原始图像建议不少于 300~500 张,虫害等小目标类别应适当增加,并保证每张图中目标数量与分布多样。

文件命名应携带元信息,便于追溯与分层划分,例如:

tomato_early_blight_field_A_20240612_1030_001.jpg
作物_类别_地块_日期_时间_序号.jpg

二、标注工具与格式选择

农业图像标注以矩形框检测和实例分割为主。常用工具包括 LabelImg(Pascal VOC/COCO 输出)、Labelme(JSON 多边形)、CVAT(支持多人协作与视频抽帧)、Roboflow(在线管理与增强)。选择依据是任务类型与后续训练框架:仅做检测可用 YOLO 格式的 txt(每行 class cx cy w h,坐标为归一化值);需要精细病斑轮廓时用 Labelme 多边形并转换为 COCO 的 segmentation 字段。

标注规范要写清边界规则:框应紧贴目标可见边缘,叶片被遮挡超过 50% 时不标,虫害按虫体整体外接框标注,病斑按病斑区域而非整片叶标注。多人标注时先做 20 张的试标校准,统一后再批量推进。

三、数据增强策略:模拟田间真实变化

增强的目的不是堆数量,而是覆盖采集阶段难以穷举的分布。推荐组合:随机水平/垂直翻转、±15° 旋转、亮度与对比度扰动(±20%)、HSV 色调轻微偏移、随机缩放裁剪(0.6~1.0)、运动模糊与高斯噪声(模拟手持抖动与低光)。对于小目标虫害,慎用大幅缩放裁剪,否则目标可能被裁掉;可采用马赛克增强提升小目标出现频率。增强仅在训练集上进行,验证集与测试集保持原始分布,否则评估结果会失真。

农业识别数据工程链路 ① 图像采集 作物 / 病斑 / 虫体 多光照 · 多角度 · 多生育期 命名含地块与时间元信息 ② 标注 LabelImg / Labelme / CVAT 检测框 / 病斑多边形 YOLO txt · COCO json ③ 数据增强 翻转 · 旋转 · 亮度扰动 模糊 · 噪声 · 马赛克 仅作用于训练集 ④ 数据集划分 训练 70% / 验证 15% 测试 15% 按地块分层,防泄漏 ⑤ 质量检查(贯穿全流程) 类别平衡 · 框贴合度 · 重复/漏标 · 划分泄漏 抽样复核 10% · 统计每类实例数 · 异常图剔除 输出:可训练数据集 images/ + labels/ + data.yaml + 统计报告

四、数据集划分:分层与防泄漏

常见比例为训练 70%、验证 15%、测试 15%。关键不是比例本身,而是划分方式。若同一地块、同一植株的连续拍摄帧被随机打散到训练集和测试集,模型会因“见过同一片叶子”而虚高。正确做法是按地块或拍摄批次分层抽样:先按类别与地块分组,再在组内随机分配,确保测试集来自训练时未见过的地块。划分完成后应输出统计表,核对每类在三个子集中的实例数比例是否接近。

五、质量检查:用数据说话

质量检查建议形成固定动作:一是类别分布统计,若某类实例数不足总数的 5%,需补采或采用过采样;二是标注框贴合度抽检,随机抽取 10% 图像人工复核,记录框偏移、漏标、错类数量;三是重复与近似重复检测,可用感知哈希剔除连拍冗余;四是划分泄漏检查,比对训练集与测试集的文件哈希与地块编号。检查结果应形成一份可填写的记录表,例如:

检查项方法合格标准(示例)
类别平衡统计每类实例数最小类占比 ≥ 5%
标注贴合度抽检 10% 图像错标率 ≤ 3%
重复图像感知哈希比对重复率 ≤ 2%
划分泄漏地块编号与哈希比对测试集地块不出现在训练集
建议把上述检查写成脚本在导出前自动执行,输出 JSON 统计报告,与数据集一同归档,便于复现与追责。

完成以上五步后,数据集才具备进入模型训练与 ONNX 导出的资格。数据工程的严谨程度,直接决定了后续部署阶段模型在真实田间的泛化表现。