YOLO数据集标注
首页文章工具搜索

YOLO数据集标注

2026.08.27 [YOLO] [数据集] [机器视觉] 147 浏览


前言

下面将会讲述YOLO标注数据的基础格式以及一些标注技巧。

格式

标注文件由一行或者多行"类别id 中心点X 中心点Y 宽度 高度"组成。为了方便理解直接上一个具体示例:

假设一张图片"zoo.jpg"(尺寸是800×600像素),里面包含一只猫(类别id为0)和一条狗(类别id为1),并且它们的位置有重叠。

1. 计算归一化坐标

YOLO要求的坐标必须是归一化的(0~1之间的小数),计算公式为:像素坐标 ÷ 图片尺寸。

猫:边界框左上角(100, 200),右下角(300, 400)。
中心点 X = (100+300)/2 / 800 = 0.25
中心点 Y = (200+400)/2 / 600 = 0.50
宽度 = (300-100) / 800 = 0.25
高度 = (400-200) / 600 = 0.33

狗:边界框左上角(400, 250),右下角(700, 500)。
中心点 X = (400+700)/2 / 800 = 0.6875
中心点 Y = (250+500)/2 / 600 = 0.625
宽度 = (700-400) / 800 = 0.375
高度 = (500-250) / 600 = 0.4167

2. 创建标签文件"zoo.txt"

直接在txt内写上两行(第一列是类别ID,后四列是坐标数据)。

0 0.25 0.50 0.25 0.33 1 0.6875 0.625 0.375 0.4167

标注工具推荐

标注计算看起来是不是很繁琐?但是在实际工作中,没有哪个大聪明会去手动计算!现代化的标注工具已经支持可视化地拉框,同时工具会生成对应上述格式的txt文件!!!

这里推荐 Make Sense(在线网页版,但是数据处理在本地处理)。

标注技巧以及雷点

标注YOLO训练数据是决定模型性能上限的最关键环节,如果标注的质量差,再好的算法也无力回天,下面是三个标注的核心原则:

  • 边界框的"紧贴"原则(最高优先级)
    必须紧贴物体: 框必须恰好包裹住物体的可见部分,必须紧贴物体, 不要包含大量背景!也绝不要裁切到物体主体。
    特别处理: 如果物体被遮挡或截断, 只标注可见部分! 不要自行"脑补"被遮挡的边缘,否则会引入巨量噪声。
    平衡正负样本: 对于小目标, 框要尽可能精准 ,因为YOLO下采样后特征图较小,轻微偏移都会导致IOU剧烈下降。
  • 分类的"互斥"与"粒度"把控
    互斥性: 确保类别定义清晰, 遇到难以区分,近似度高的对象则建议合并 ,否则模型会持续混淆。
    以调味品为例:
    "精盐"和"白糖"这二者从外观上十分难以区分,所以标记的时候应该合并为"调味品"而非"精盐"和"白糖"。
    类内差异: 如果同一类别外观差异巨大,可以合并;但是如果差异具有语义意义,则必须分开,因为这是任务的需要。
    以水果为例:
    "绿苹果"和"红苹果",如果仅仅检测的是苹果,那么二者可以合并为"苹果";如果需要检测统计"绿苹果"和"红苹果"的数量则不能合并。
    密集堆叠: 在目标密集的场景中, 宁可漏标一个模糊的,也不要标注"融合框" ,即一个框只框一个实例,绝不允许一个框同时框住两个紧挨着的物体。
  • 处理"模糊"与"遮挡"的黄金法则(一致性大于绝对正确)
    必须紧贴物体: 对于看不清的边缘,务必统一标注规则。
    关键:
    同一批次数据中,处理模糊目标的标准必须前后一致,模型只认统计数据,不认绝对真理。
    遮挡处理: 正常标注可见边缘,但是遮挡面积大于50%建议打"遮挡标签"。

一些其他需要注意的点(杂谈)

训练的数据(图像)应该全场景覆盖,不能只标注某一种单一环境,必须包括各种各样的极限环境,否则环境一变训练出来的模型立刻失效。

验证集和训练集绝对不要包含相同或者相似的图像,否则会导致验证精度虚高但是在部署时一塌糊涂。务必保证验证集和训练集时间空间上完全独立。

标注完毕后建议回头再审视一遍标注框,以避免漏标错标。