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

目录

一、常见数据标注格式

[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> <width> <height>

例如:

复制代码
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/目录。