3. 数据标注与格式转换
在农作物病虫害识别项目中,模型的上限往往在数据标注阶段就已经被决定。YOLO 系列模型需要的是“边界框 + 类别”的监督信号,而原始图像本身并不携带这些信息。本节围绕三件事展开:如何用 LabelImg 与 Roboflow 把图像变成可用的标注,YOLO 格式到底规定了什么,以及如何系统性地检查并修正标注错误。
一、标注工具的选择与实操要点
LabelImg 是本地化的轻量标注工具,适合小规模、离线、需要精细控制标注文件的场景。安装后通过 labelImg 图像目录 预定义类别文件 启动,在界面中切换到 YOLO 模式(左侧工具栏的保存格式按钮),此后每画一个框,都会在图像同目录生成一个同名 .txt 文件。操作流程是:按 W 创建矩形框,拖动调整边界,选择类别,按 Ctrl+S 保存,按 D 切到下一张。关键习惯是“先定类别体系,再开始标注”,类别文件 classes.txt 中每行一个类名,顺序即类别索引,一旦开始标注就不要随意增删或调序,否则索引会整体错位。
Roboflow 则是云端协作平台,优势在于多人分工、自动预标注和格式导出。上传图像后建立项目并设定类别,可使用其模型生成初稿框,人工只做增删改,能显著降低重复劳动。标注完成后在 Export 环节直接选择 “YOLOv8” 或 “YOLO Darknet” 格式导出,平台会自动完成坐标归一化和目录划分。对于团队项目,建议在 Roboflow 中固定标注规范(如“只框住病斑区域,不框整片叶”),并利用其 Review 功能做交叉复核。
二、YOLO 格式解析
YOLO 标注文件是纯文本,每行描述一个目标,格式为:
类别索引 中心点x 中心点y 宽度 高度
其中后四个数值均为相对于图像宽高的归一化值,取值范围 0~1。设图像宽 W、高 H,标注框左上角为 (x1, y1)、右下角为 (x2, y2),则换算关系为:
cx = ((x1 + x2) / 2) / W
cy = ((y1 + y2) / 2) / H
w = (x2 - x1) / W
h = (y2 - y1) / H
例如一张 1280×720 的图像,某病斑像素框为 (320, 180) 到 (640, 360),类别索引为 2,则标注行为 2 0.375 0.375 0.25 0.25。理解这个换算非常重要:它解释了为什么标注框必须严格落在图像范围内,也解释了为什么图像被缩放或裁剪后,标注文件必须同步重算,否则框会整体偏移。
配套的目录结构通常为 images/train、images/val、labels/train、labels/val,图像与标签文件同名、仅扩展名不同。数据集根目录下的 data.yaml 声明训练与验证路径、类别数和类名列表,类名顺序必须与标注中的索引严格一致。
三、标注质量检查与修正
标注错误在训练前不发现,就会变成模型学到的“错误知识”。常见问题有四类:漏标(目标存在但无框)、误标(背景被当成目标)、框不准(边界明显偏离目标)、类别错(索引与类名不匹配)。建议按以下顺序检查。
第一,文件级一致性检查。统计图像数量与标签数量是否相等,找出“有图无标签”和“有标签无图”的样本。有图无标签若确实是负样本(无病虫害的健康叶片),应保留空标签文件;若本应有目标,则属于漏标。可用脚本快速比对文件名集合。
第二,数值合法性检查。逐行解析标签,确认每行 5 个字段、类别索引在 [0, 类别数-1] 范围内、四个坐标值均在 [0,1] 内、宽高大于 0。越界值通常来自手工编辑或裁剪后未重算,必须修正。
第三,可视化复核。把归一化坐标还原为像素框并画回原图,批量生成带框预览图,人工快速扫视。这一步能高效发现框偏移、框过大过小和类别错标。对密集病斑图像,重点看是否有框重叠到无法区分。
第四,抽样交叉复核。按 10%~20% 比例随机抽样,由第二人独立复核,记录错误率。若某类错误率超过约定阈值(例如 5%),应回到该类别的标注规范重新培训,而不是逐张修补。
下面给出一份可直接使用的标注质量检查清单,字段按农作物检测任务的实际需要设定:
| 检查项 | 判定标准 | 处理方式 |
|---|---|---|
| 图像/标签数量一致 | 同名文件一一对应 | 补齐缺失标签或删除孤立标签 |
| 类别索引范围 | 0 ≤ idx ≤ 类别数-1 | 按 classes.txt 顺序修正 |
| 坐标归一化范围 | 四值均在 [0,1] | 重算或裁剪越界框 |
| 框贴合度 | 边界紧贴病斑外缘 | 人工微调,统一粒度标准 |
| 漏标/误标 | 抽样错误率 ≤ 5% | 整类返工或补充负样本 |
| 类别语义一致 | 索引与类名严格对应 | 修正 data.yaml 或标签 |
完成上述检查后,数据集才具备进入训练的条件。标注质量不是一次性工作,而应作为数据版本的一部分被记录:每次修订保留变更说明,便于后续复现和追溯。把“标注—检查—修正”做成可重复的流程,比单次追求完美标注更能保证农作物病虫害识别项目的长期稳定性。