数据标注之数据集的类型与如何标注

目录

一、常见数据标注格式

[1. PASCAL VOC (XML格式)](#1. PASCAL VOC (XML格式))

[2. COCO (JSON格式)](#2. COCO (JSON格式))

[3. YOLO (TXT格式)](#3. YOLO (TXT格式))

[4. TFRecord (TensorFlow专用)](#4. TFRecord (TensorFlow专用))

[5. 其他格式](#5. 其他格式)

二、数据标注工具对比

三、标注流程示例(以LabelImg为例)


一、常见数据标注格式

1. PASCAL VOC (XML格式)

  • 适用任务:目标检测、图像分类

  • 文件结构:

    • Annotations/:存放XML标注文件(每个图像对应一个XML文件)

    • JPEGImages/:存放原始图像

    • ImageSets/:存放训练/验证/测试集划分文件(如train.txt)

标注内容:例如

复制代码
<annotation>
    <filename>image1.jpg</filename>
    <size>
        <width>800</width>
        <height>600</height>
        <depth>3</depth>  <!-- RGB图像 -->
    </size>
    <object>
        <name>cat</name>
        <bndbox>
            <xmin>100</xmin>  <!-- 边界框左上角x坐标 -->
            <ymin>200</ymin>  <!-- 边界框左上角y坐标 -->
            <xmax>300</xmax>  <!-- 边界框右下角x坐标 -->
            <ymax>400</ymax>  <!-- 边界框右下角y坐标 -->
        </bndbox>
    </object>
</annotation>
  • 如何标注:

    • 使用工具:LabelImg(开源)、CVAT、RectLabel(Mac)

    • 标注步骤:

      1. 打开图像,用矩形框标注物体。

      2. 输入类别名称(如cat)。

      3. 工具自动生成XML文件。

2. COCO (JSON格式)

  • 适用任务:目标检测、实例分割、关键点检测

  • 文件结构:

    • 单个annotations.json文件,包含所有图像的标注信息。
  • 标注内容(关键字段):

    {
    "images": [
    {
    "id": 1,
    "file_name": "image1.jpg",
    "width": 800,
    "height": 600
    }
    ],
    "annotations": [
    {
    "id": 1,
    "image_id": 1,
    "category_id": 1, // 类别ID(对应categories中的"cat")
    "bbox": [100, 200, 200, 200], // [x, y, width, height]
    "area": 40000,
    "segmentation": [[...]] // 多边形坐标(实例分割用)
    }
    ],
    "categories": [
    {"id": 1, "name": "cat"}
    ]
    }

  • 如何标注:

    • 使用工具:LabelMe、CVAT、Supervisely

    • 标注步骤:

      1. 标注物体边界框或多边形(分割任务)。

      2. 导出为COCO JSON格式。

3. YOLO (TXT格式)

  • 适用任务:目标检测(轻量级,适合嵌入式设备)

  • 文件结构:

    • 每个图像对应一个.txt文件,内容格式:

      <class_id> <x_center> <y_center>

例如:

复制代码
0 0.25 0.5 0.1 0.2  # 类别0,中心点(25%宽度, 50%高度),宽高占10%和20%
  • 如何标注:

    • 使用工具:LabelImg(需设置YOLO导出格式)、Roboflow

    • 标注步骤:

      1. 标注矩形框并指定类别。

      2. 工具自动将坐标转换为归一化值(相对于图像宽高)。

4. TFRecord (TensorFlow专用)

  • 适用任务:大规模数据集(TensorFlow训练用)

  • 文件结构:

    • 二进制文件(.tfrecord),存储图像和标注的序列化数据。
  • 如何标注:

    • 需先将其他格式(如COCO/VOC)转换为TFRecord:
python 复制代码
# 使用TensorFlow Dataset API转换
tf.data.TFRecordDataset("data.tfrecord")

5. 其他格式

格式 特点 适用场景
CSV 简单表格(文件路径+bbox坐标) 快速标注/小数据集
Mask R-CNN 多任务(检测+分割) 实例分割
KITTI 自动驾驶(3D框+雷达数据) 自动驾驶

二、数据标注工具对比

工具 支持格式 特点
LabelImg VOC (XML), YOLO (TXT) 开源,简单易用
CVAT COCO, VOC, YOLO 在线协作,支持视频标注
LabelMe COCO, JSON 支持多边形标注(分割任务)
Roboflow 所有主流格式 在线平台,支持自动预处理

三、标注流程示例(以LabelImg为例)

安装LabelImg:

bash 复制代码
pip install labelImg
labelImg  # 启动

标注步骤:

  • 打开图像文件夹(Open Dir)。

  • 绘制矩形框(快捷键W),输入类别名称。

  • 保存为PASCAL VOC XML或YOLO TXT格式。

  • 导出到Annotations/目录。