3. 农业视觉数据集构建与标注

轻量化模型在边缘端能不能真正落地,很大程度上不取决于网络结构有多精巧,而取决于数据集是否“像田里长出来的”。农业图像与通用数据集(如 ImageNet、COCO)的差异非常明显:光照跨越正午强光与阴天散射,背景是高度自相似的作物冠层,目标存在严重遮挡、尺度剧烈变化,且病虫害类别天然呈现长尾分布。本节围绕采集、类别体系、标注与质控、小样本长尾、增强适配五个环节展开,目标是产出一份可直接用于训练与验证的农业视觉数据集。

一、田间图像采集规范

采集阶段决定了数据分布的上限,后期标注和增强都无法弥补系统性偏差。建议按“场景—光照—尺度—时间”四个维度做分层采样,而不是走到哪拍到哪。以一个番茄病害识别任务为例,可设定如下采集矩阵:场景覆盖大棚、露地、育苗棚三类;光照覆盖晴天顺光、晴天逆光、阴天、傍晚弱光四档;拍摄距离覆盖 0.3 m(叶片特写)、1.0 m(单株)、2.5 m(行间冠层)三档;时间上避开正午 11:00–14:00 的过曝时段,或在该时段单独成组以便模型学会抗过曝。

硬件与参数方面,边缘部署模型通常输入 320×320 或 416×416,因此采集分辨率不必盲目追高,但需保证目标在原始图中占据足够像素。经验做法是:单叶病斑在原始图中短边不少于 60 像素,这样缩放到 320 输入时仍保留约 20 像素,处于可辨识下限。手机或工业相机均可,关键是固定白平衡与曝光策略,同一批次内不要频繁切换自动模式,否则会引入难以建模的色彩漂移。每类场景建议采集不少于 300 张原始图,并保留 10%–15% 作为完全独立的测试集,测试集应来自不同地块或不同日期,以检验跨域泛化。

采集时同步记录元数据:地块编号、日期、时段、天气、光照方向、拍摄距离、设备型号。这些字段在后续做分层划分和误差归因时价值极高,建议以 CSV 与图像同目录存放。

二、类别体系设计

类别体系要同时服务“模型能学”和“业务能用”。常见错误是把类别切得过细(如把叶斑病按病斑形态分成十余个子类),导致每类样本不足、类间差异小于标注一致性;另一种错误是过粗(只分“健康/病害”),使模型无法支撑精准施药。推荐采用两级体系:一级为作物器官或任务大类(叶片、果实、茎秆),二级为具体状态(健康、早疫病、晚疫病、虫害孔洞等)。二级类别应满足“肉眼在 1 米内可稳定区分”这一可操作判据。

类别定义需写成文字规范,明确包含项与排除项。例如“虫害孔洞”定义为叶片上由咀嚼式口器造成的透光或不透光缺损,排除机械损伤与药害斑点;边界模糊的样本归入“其他/不确定”类,训练时可作为忽略区域处理。类别 ID 建议从 0 开始连续编号,并单独保留 0 号为背景,避免与检测框架的默认约定冲突。

三、标注工具与质量控制

检测任务常用 LabelImg、CVAT、Label Studio;分割任务可用 CVAT 的掩膜工具或 Labelme。农业场景建议优先使用支持“多边形+旋转框”的工具,因为叶片和果实朝向随机,水平框会引入大量背景。标注流程上,先由一人制定 20–30 张“黄金样本”作为基准,全体标注员对齐后再批量开工;每批抽取 10% 做双人交叉复核,计算一致率。

质量控制的核心指标是交并比(IoU)一致性与类别一致率。可设定:同一目标两次标注的框 IoU ≥ 0.75 视为一致;类别一致率低于 90% 时,回到类别规范重新培训而非直接返工。对分割掩膜,可用边界像素容差 3 像素作为宽松判据。下表给出一份可直接套用的抽检记录字段示例(数值为示例假设):

批次抽检张数框 IoU 均值类别一致率处理结论
B01500.8294%通过
B02500.6886%重训后返工
B03500.7991%边界样本复审

四、小样本与长尾分布

农业数据的长尾极其典型:健康叶片成千上万,某些病害只有几十张。直接训练会让模型偏向头部类。工程上可组合三种手段:其一,重采样,对尾部类做过采样并配合强增强,头部类适度欠采样;其二,损失重加权,采用类别频率的倒数开方作为权重(比直接取倒数更稳定);其三,把稀有类先合并到上位类训练,待特征稳定后再做细分类微调。划分数据时务必分层抽样,保证每个类别在训练/验证/测试中都有代表,尾部类至少保留 5–10 张进入测试集,否则评估结果没有统计意义。

五、面向农业场景的数据增强适配

增强不是越多越好,必须尊重农业图像的物理约束。水平翻转、随机缩放、亮度与对比度扰动是安全的基础项;色彩抖动幅度要克制,因为病斑颜色(黄化、褐变)本身就是判别依据,HSV 色相偏移建议控制在 ±10° 以内。随机裁剪要保证目标不被裁掉主体。以下是一段可直接参考的增强配置示例(基于常见检测框架的写法,参数为示例假设):

train_aug:
  hflip: 0.5
  vflip: 0.0          # 叶片朝向有语义,慎用垂直翻转
  scale: [0.7, 1.3]
  hsv_h: 0.02         # 约 ±7°,保护病斑色相
  hsv_s: 0.3
  hsv_v: 0.4
  mosaic: 0.5         # 提升小目标与密集场景鲁棒性
  blur: 0.1           # 模拟田间轻微失焦
  motion_blur: 0.05   # 模拟手持抖动
  shadow: 0.2         # 模拟冠层阴影

需要特别提醒的是,不要使用会破坏类别语义的增强:例如对病斑区域做大角度旋转后叠加到健康叶片上,可能生成自然界不存在的病征形态,反而教坏模型;MixUp 在细粒度病害上也要谨慎,两张不同病害图混合后标签本身就不成立。增强策略应先在验证集上做小规模消融,观察 mAP 与尾部类召回的变化,再决定是否保留。

农业视觉数据集构建与质控闭环 田间采集 场景 / 光照 / 距离分层 固定白平衡与曝光 同步记录元数据 CSV 短边 ≥ 60 px 目标 类别体系 两级:器官 → 状态 1 米内可稳定区分 含包含项 / 排除项 0 号保留为背景 标注 CVAT / Label Studio 多边形 + 旋转框 黄金样本对齐 10% 双人交叉复核 质量控制 框 IoU ≥ 0.75 类别一致率 ≥ 90% 掩膜容差 3 px 不达标则重训 小样本与长尾处理 尾部过采样 + 头部欠采样 损失权重 ∝ 频率⁻⁰·⁵ 稀有类先上位类再微调 农业适配增强 翻转 / 缩放 / 亮度对比度 色相偏移 ≤ ±10° Mosaic / 模糊 / 阴影模拟 分层划分 训练 / 验证 / 测试 测试集跨地块、跨日期 尾部类测试 ≥ 5–10 张 验证集 mAP 与尾部召回下降 → 回溯采集与标注环节 输出:分布可控、类别清晰、标注一致、可跨域评估的训练/测试集 数据质量决定边缘模型上限,增强与重加权只能逼近该上限

把上述环节串成闭环后,判断数据集是否“可用”的标准并不复杂:在独立测试集上,头部类与尾部类的召回差距是否在可接受范围(例如尾部类召回不低于头部类的 70%),以及跨地块测试时 mAP 下降是否小于 10 个百分点。若差距过大,优先回到采集分层与类别定义上找原因,而不是一味加大增强强度。数据集是边缘部署的第一道工程关口,它的质量直接决定了后续量化、剪枝和推理优化能走多远。