数据标注之数据集的类型与如何标注
目录
一、常见数据标注格式
1. PASCAL VOC (XML格式)
2. COCO (JSON格式)
3. YOLO (TXT格式)
4. TFRecord (TensorFlow专用)
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)
-
标注步骤:
-
打开图像,用矩形框标注物体。
-
输入类别名称(如
cat
)。 -
工具自动生成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
-
标注步骤:
-
标注物体边界框或多边形(分割任务)。
-
导出为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
-
标注步骤:
-
标注矩形框并指定类别。
-
工具自动将坐标转换为归一化值(相对于图像宽高)。
-
-
4. TFRecord (TensorFlow专用)
-
适用任务:大规模数据集(TensorFlow训练用)
-
文件结构:
-
二进制文件(
.tfrecord
),存储图像和标注的序列化数据。
-
-
如何标注:
-
需先将其他格式(如COCO/VOC)转换为TFRecord:
-
# 使用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:
pip install labelImg
labelImg # 启动
标注步骤:
-
打开图像文件夹(
Open Dir
)。 -
绘制矩形框(快捷键
W
),输入类别名称。 -
保存为PASCAL VOC XML或YOLO TXT格式。
-
导出到
Annotations/
目录。