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)、运动模糊与高斯噪声(模拟手持抖动与低光)。对于小目标虫害,慎用大幅缩放裁剪,否则目标可能被裁掉;可采用马赛克增强提升小目标出现频率。增强仅在训练集上进行,验证集与测试集保持原始分布,否则评估结果会失真。
四、数据集划分:分层与防泄漏
常见比例为训练 70%、验证 15%、测试 15%。关键不是比例本身,而是划分方式。若同一地块、同一植株的连续拍摄帧被随机打散到训练集和测试集,模型会因“见过同一片叶子”而虚高。正确做法是按地块或拍摄批次分层抽样:先按类别与地块分组,再在组内随机分配,确保测试集来自训练时未见过的地块。划分完成后应输出统计表,核对每类在三个子集中的实例数比例是否接近。
五、质量检查:用数据说话
质量检查建议形成固定动作:一是类别分布统计,若某类实例数不足总数的 5%,需补采或采用过采样;二是标注框贴合度抽检,随机抽取 10% 图像人工复核,记录框偏移、漏标、错类数量;三是重复与近似重复检测,可用感知哈希剔除连拍冗余;四是划分泄漏检查,比对训练集与测试集的文件哈希与地块编号。检查结果应形成一份可填写的记录表,例如:
| 检查项 | 方法 | 合格标准(示例) |
|---|---|---|
| 类别平衡 | 统计每类实例数 | 最小类占比 ≥ 5% |
| 标注贴合度 | 抽检 10% 图像 | 错标率 ≤ 3% |
| 重复图像 | 感知哈希比对 | 重复率 ≤ 2% |
| 划分泄漏 | 地块编号与哈希比对 | 测试集地块不出现在训练集 |
完成以上五步后,数据集才具备进入模型训练与 ONNX 导出的资格。数据工程的严谨程度,直接决定了后续部署阶段模型在真实田间的泛化表现。