计算机系统应用教程网站

网站首页 > 技术文章 正文

【OpenMMLab 教程】目标检测常见数据集格式(COCO、VOC、YOLO)

btikc 2024-10-03 15:28:03 技术文章 11 ℃ 0 评论

一、COCO数据集格式

COCO(Common Objects in Context)数据集是一个大型的、用于对象检测、分割和图像标注的数据集。COCO数据集的格式与VOC数据集有所不同,它使用JSON格式来存储标注信息。

COCO数据集的主要组成部分包括:

  1. Images:包含所有的图像文件,通常是JPEG格式。每个图像都有一个唯一的ID。
  1. Annotations:包含所有的标注信息,存储在一个或多个JSON文件中。每个标注文件包含以下信息:
  • images:图像的信息,包括图像的ID、文件名、宽度和高度。
  • annotations:每个对象的标注信息,包括:
  • id:标注的唯一ID。
  • image_id:该标注对应的图像ID。
  • category_id:对象的类别ID。
  • segmentation:对象的分割掩码(多边形格式)。
  • bbox:对象的边界框,格式为[x, y, width, height]。
  • area:对象的面积。
  • iscrowd:是否为拥挤场景中的对象。
  1. Categories:对象的类别信息,包括类别ID、名称和超类别(如果有)。

一个典型的COCO数据集目录结构如下:

coco/
  ├── images/
  │   ├── train2017/
  │   ├── val2017/
  │   └── test2017/
  ├── annotations/
  │   ├── instances_train2017.json
  │   ├── instances_val2017.json
  │   ├── person_keypoints_train2017.json
  │   ├── person_keypoints_val2017.json
  │   ├── captions_train2017.json
  │   └── captions_val2017.json
  └── ...

COCO数据集的JSON标注文件示例如下:

{
  "images": [
    {
      "id": 1,
      "file_name": "0000000001.jpg",
      "width": 640,
      "height": 480
    },
    ...
  ],
  "annotations": [
    {
      "id": 1,
      "image_id": 1,
      "category_id": 1,
      "segmentation": [[x1, y1, x2, y2, ...]],
      "bbox": [x, y, width, height],
      "area": 2304,
      "iscrowd": 0
    },
    ...
  ],
  "categories": [
    {
      "id": 1,
      "name": "person",
      "supercategory": "person"
    },
    ...
  ]
}

COCO数据集广泛应用于计算机视觉领域,特别是在对象检测、实例分割和语义分割的研究和实践中。

二、VOC 数据集格式

VOC(Visual Object Classes)数据格式是一种用于目标检测和图像分割任务的标注格式,由PASCAL VOC挑战赛推广。这种格式主要用于存储图像及其对应的标注信息,如目标类别和边界框。VOC格式数据后缀为xml

VOC数据格式通常包含以下几个部分:

  1. JPEGImages:这个文件夹包含所有的图像文件,通常是JPEG格式。
  1. Annotations:这个文件夹包含每个图像的标注文件,通常是XML格式。每个XML文件对应一个图像,并包含以下信息:
  • filename:图像文件的名称。
  • size:图像的尺寸,包括宽度、高度和通道数。
  • object:图像中的目标对象,每个对象包含以下信息:
  • name:目标的类别名称。
  • bndbox:目标的边界框,包括左上角和右下角的坐标(xmin, ymin, xmax, ymax)。
  • difficult:目标是否难以检测的标志。
  1. ImageSets:这个文件夹包含用于训练和测试的图像列表,通常分为以下几个文件:
  • Main:包含用于分类任务的图像列表。
  • Segmentation:包含用于分割任务的图像列表。
  • Layout:包含用于人体布局任务的图像列表。
  • Action:包含用于动作识别任务的图像列表。
  1. SegmentationClass:这个文件夹包含用于分割任务的类别标注图像。
  1. SegmentationObject:这个文件夹包含用于分割任务的对象标注图像。

一个典型的VOC数据集目录结构如下:

VOCdevkit/
  ├── VOC2007/
  │   ├── JPEGImages/
  │   ├── Annotations/
  │   ├── ImageSets/
  │   │   ├── Main/
  │   │   ├── Segmentation/
  │   │   ├── Layout/
  │   │   └── Action/
  │   ├── SegmentationClass/
  │   └── SegmentationObject/
  └── VOC2012/
      ├── JPEGImages/
      ├── Annotations/
      ├── ImageSets/
      │   ├── Main/
      │   ├── Segmentation/
      │   ├── Layout/
      │   └── Action/
      ├── SegmentationClass/
      └── SegmentationObject/

VOC数据格式广泛应用于计算机视觉领域,特别是在目标检测和图像分割的研究和实践中。

三、YOLO数据集格式

YOLO(You Only Look Once)是一种流行的实时对象检测算法,其数据集格式相对简单,主要用于训练和评估YOLO模型。YOLO数据集格式通常包含以下几个部分:

  1. Images:包含所有的图像文件,通常是JPEG或PNG格式。
  1. Labels:包含每个图像对应的标注文件,通常是文本格式(TXT文件)。每个标注文件的名称与对应的图像文件名称相同,但扩展名为.txt。

每个标注文件中的每一行代表一个对象,格式如下:

<object-class> <x-center> <y-center> <width> <height>
  • <object-class>:对象的类别ID(从0开始)。
  • <x-center>:对象边界框中心点的x坐标,相对于图像宽度的比例(0到1之间)。
  • <y-center>:对象边界框中心点的y坐标,相对于图像高度的比例(0到1之间)。
  • <width>:对象边界框的宽度,相对于图像宽度的比例(0到1之间)。
  • <height>:对象边界框的高度,相对于图像高度的比例(0到1之间)。

例如,假设一个图像文件名为image001.jpg,其对应的标注文件名为image001.txt,内容可能如下:

0 0.45 0.67 0.23 0.34
1 0.12 0.34 0.15 0.20

这表示图像中有两个对象:

  • 第一个对象的类别ID为0,边界框中心点坐标为(0.45, 0.67),宽度为0.23,高度为0.34。
  • 第二个对象的类别ID为1,边界框中心点坐标为(0.12, 0.34),宽度为0.15,高度为0.20。

YOLO数据集的目录结构通常如下:

dataset/
  ├── images/
  │   ├── train/
  │   │   ├── image001.jpg
  │   │   ├── image002.jpg
  │   │   └── ...
  │   ├── val/
  │   │   ├── image101.jpg
  │   │   ├── image102.jpg
  │   │   └── ...
  │   └── test/
  │       ├── image201.jpg
  │       ├── image202.jpg
  │       └── ...
  └── labels/
      ├── train/
      │   ├── image001.txt
      │   ├── image002.txt
      │   └── ...
      ├── val/
      │   ├── image101.txt
      │   ├── image102.txt
      │   └── ...
      └── test/
          ├── image201.txt
          ├── image202.txt
          └── ...

YOLO数据集格式简单且高效,非常适合用于训练和评估YOLO模型。

格式转换

在 MMDetection 和 MMYOLO 里,几乎所有的训练都是依靠 COCO JSON 标注文件,其他的数据集格式需要提前转换为COCO格式。

常见数据集

常见的开源数据集网站包括 Hugging Face、Kaggle 和 AI Studio

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表