Microsoft2017-COCO常见物体数据集

一、问题描述

微软常见物体数据集COCO(Common Objects in Context)的建设目的是为了推动计算机视觉领域的研究和发展,特别是在目标识别、目标检测和图像分割等任务上。通过提供大规模、多样化和详细标注的图像数据,COCO数据集旨在解决传统数据集的局限性,促进算法的稳健性和准确性,并推动计算机视觉技术的进步。

二、数据集内容

MS COCO 数据集的首个版本于 2014 年发布。它包含 164K 张图片,分为训练集(83K)、验证集(41K)和测试集(41K)。2015 年发布了额外的 81K 张图片的测试集,包括之前所有的测试图片和 40K 张新图片。根据社区反馈,2017 年训练/验证集的划分从 83K/41K 变更为 118K/5K。新的划分使用相同的图片和注释。2017 年的测试集是 2015 年测试集中 41K 张图片的子集。此外,2017 年的发布还包含了一个新的未标注的数据集,包含 123K 张图片。该数据集具有以下注释:

  • 目标检测:80 个对象类别的边界框和实例分割掩码,
  • 图像描述:图像的自然语言描述(参见 MS COCO Captions),
  • 关键点检测:包含超过 200,000 张图片和 250,000 个人实例,标记有关键点(17 个可能的关键点,如左眼、鼻子、右臀、右脚踝),
  • 物品图像分割:91 个物品类别的逐像素分割掩码,如草地、墙壁、天空,
  • 全景分割:完整的场景分割,包含 80 个事物类别(如人、自行车、大象)和 91 个物品类别的子集(草地、天空、道路),
  • 密集姿态/dense pose:超过 39,000 张图片和 56,000 个人实例标记有 DensePose 注释——每个标记的人都有一个实例 ID 和一个将属于该人身体的图像像素与模板 3D 模型之间的映射。注释仅对训练和验证图片公开可用。Dense Pose(密集姿态)是一种计算机视觉任务,旨在从图像中估计人体的详细姿态信息。与传统的关键点检测任务不同,Dense Pose 提供了人体表面每个像素的精确对应关系,将图像中的人体像素映射到一个标准化的三维人体模型上。这种详细的姿态信息在许多应用场景中非常有用,如虚拟现实、增强现实、人机交互、服装设计和人体动画等。

以下是关于COCO-2017数据集的详细信息:

数据集组成

├── coco2017: 数据集根目录
    ├── train2017: 所有训练图像文件夹(118,287张),打包成文件train2017.zip。
    ├── val2017: 所有验证图像文件夹(5,000张),打包成文件val2017.zip。
    ├── test2017: 所有验证图像文件夹(40,670张),打包成文件test2017.zip。
    └── annotations: 对应标注文件夹,打包成文件annotations_trainval2017.zip。
        ├── instances_train2017.json: 对应目标检测、分割任务的训练集标注文件
        ├── instances_val2017.json: 对应目标检测、分割任务的验证集标注文件
        ├── captions_train2017.json: 对应图像描述的训练集标注文件
        ├── captions_val2017.json: 对应图像描述的验证集标注文件
        ├── person_keypoints_train2017.json: 对应人体关键点检测的训练集标注文件
        └── person_keypoints_val2017.json: 对应人体关键点检测的验证集标注文件夹

总共文件大小约为25G。

注释文件结构

COCO-2017的注释文件采用JSON格式,主要包括以下部分:

  • images:包含所有图像的信息,如图像ID、文件名、宽度、高度等。
  • annotations:包含所有标注的信息,如标注ID、图片ID、类别ID、边界框坐标等。
  • categories:包含所有类别的信息,如类别ID、类别名称、超类别名称等。

标注结构

instances_train2017.json

instances_train2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了训练集的图像和标注信息。该文件是一个 JSON 格式的文件,其结构定义如下:

{
 "info": {
   "description": "COCO 2017 Dataset",
   "url": "http://cocodataset.org",
   "version": "1.0",
   "year": 2017,
   "contributor": "COCO Consortium",
   "date_created": "2017/09/01"
},
 "licenses": [
  {
     "id": 1,
     "name": "Attribution-NonCommercial-ShareAlike License",
     "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/"
  },
   // ... 其他许可证
],
 "images": [
  {
     "id": 1,
     "file_name": "image_000000000001.jpg",
     "width": 640,
     "height": 480,
     "date_captured": "2013-11-14 12:00:00"
  },
   // ... 其他图像
],
 "annotations": [
  {
     "id": 1,
     "image_id": 1,
     "category_id": 1,
     "segmentation": [[x1, y1, x2, y2, ..., xn, yn]],
     "area": 123.45,
     "bbox": [x, y, width, height],
     "iscrowd": 0
  },
   // ... 其他标注
],
 "categories": [
  {
     "id": 1,
     "name": "person",
     "supercategory": "person"
  },
   // ... 其他类别
]
}

字段解释

  1. info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
  2. licenses: 包含数据集中使用的图像的许可证信息。
  3. images: 包含所有图像的信息,每个图像由以下字段组成:
    • id: 图像的唯一标识符。
    • file_name: 图像文件的名称。
    • width: 图像的宽度。
    • height: 图像的高度。
    • date_captured: 图像的拍摄日期和时间。
  4. annotations: 包含所有标注的信息,每个标注由以下字段组成:
    • id: 标注的唯一标识符。
    • image_id: 标注所属图像的ID。
    • category_id: 标注对象的类别ID。
    • segmentation: 标注对象的分割掩码坐标,对于多边形标注,是一个二维数组。
    • area: 标注对象的面积。
    • bbox: 标注对象的边界框坐标,格式为 [x, y, width, height]
    • iscrowd: 标记标注对象是否属于人群(0 表示否,1 表示是)。
  5. categories: 包含所有类别的信息,每个类别由以下字段组成:
    • id: 类别的唯一标识符。
    • name: 类别的名称。
    • supercategory: 类别的超类别名称。

使用示例

以下是一个使用 Python 读取 instances_train2017.json 文件的示例:

import json

# 读取 JSON 文件
with open('path/to/instances_train2017.json', 'r') as f:
   data = json.load(f)

# 打印基本信息
print(data['info'])
print(data['licenses'])

# 打印图像信息
for image in data['images']:
   print(image)

# 打印标注信息
for annotation in data['annotations']:
   print(annotation)

# 打印类别信息
for category in data['categories']:
   print(category)

通过这种方式,你可以访问和处理 COCO 数据集中的图像和标注信息,以便进行目标检测、分割等计算机视觉任务。

instances_val2017.json

instances_val2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了验证集的图像和标注信息。该文件是一个 JSON 格式的文件,其结构定义与 instances_train2017.json 文件相同。

captions_train2017.json

captions_train2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了训练集的图像和对应的自然语言描述(即图像标题)。该文件是一个 JSON 格式的文件,其结构定义如下:

{
 "info": {
   "description": "COCO 2017 Dataset",
   "url": "http://cocodataset.org",
   "version": "1.0",
   "year": 2017,
   "contributor": "COCO Consortium",
   "date_created": "2017/09/01"
},
 "licenses": [
  {
     "id": 1,
     "name": "Attribution-NonCommercial-ShareAlike License",
     "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/"
  },
   // ... 其他许可证
],
 "images": [
  {
     "id": 1,
     "file_name": "image_000000000001.jpg",
     "width": 640,
     "height": 480,
     "date_captured": "2013-11-14 12:00:00"
  },
   // ... 其他图像
],
 "annotations": [
  {
     "id": 1,
     "image_id": 1,
     "caption": "A person riding a bicycle on a road."
  },
   // ... 其他标注
]
}

字段解释

  1. info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
  2. licenses: 包含数据集中使用的图像的许可证信息。
  3. images: 包含所有图像的信息,每个图像由以下字段组成:
    • id: 图像的唯一标识符。
    • file_name: 图像文件的名称。
    • width: 图像的宽度。
    • height: 图像的高度。
    • date_captured: 图像的拍摄日期和时间。
  4. annotations: 包含所有图像标题的信息,每个标题由以下字段组成:
    • id: 标题的唯一标识符。
    • image_id: 标题所属图像的ID。
    • caption: 图像的自然语言描述。

使用示例

以下是一个使用 Python 读取 captions_train2017.json 文件的示例:

import json

# 读取 JSON 文件
with open('path/to/captions_train2017.json', 'r') as f:
   data = json.load(f)

# 打印基本信息
print(data['info'])
print(data['licenses'])

# 打印图像信息
for image in data['images']:
   print(image)

# 打印标题信息
for annotation in data['annotations']:
   print(annotation)

通过这种方式,你可以访问和处理 COCO 数据集中的图像和对应的自然语言描述,以便进行图像描述生成等计算机视觉任务。

captions_val2017.json

captions_val2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了验证集的图像和对应的自然语言描述(即图像标题)。该文件是一个 JSON 格式的文件,其结构定义与 captions_train2017.json 文件相同。

person_keypoints_train2017.json

person_keypoints_train2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了训练集中的人体关键点标注信息。该文件是一个 JSON 格式的文件,其结构定义与 instances_train2017.json 文件类似,区别在于包括了人体关键点标注keypoints属性。以下是 person_keypoints_train2017.json 文件的数据结构定义:

{
 "info": {
   "description": "COCO 2017 Dataset",
   "url": "http://cocodataset.org",
   "version": "1.0",
   "year": 2017,
   "contributor": "COCO Consortium",
   "date_created": "2017/09/01"
},
 "licenses": [
  {
     "id": 1,
     "name": "Attribution-NonCommercial-ShareAlike License",
     "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/"
  },
   // ... 其他许可证
],
 "images": [
  {
     "id": 1,
     "file_name": "image_000000000001.jpg",
     "width": 640,
     "height": 480,
     "date_captured": "2013-11-14 12:00:00"
  },
   // ... 其他图像
],
 "annotations": [
  {
     "id": 1,
     "image_id": 1,
     "category_id": 1,
     "keypoints": [x1, y1, v1, x2, y2, v2, ..., xn, yn, vn],
     "num_keypoints": 10,
     "area": 123.45,
     "bbox": [x, y, width, height],
     "iscrowd": 0
  },
   // ... 其他标注
],
 "categories": [
  {
     "id": 1,
     "name": "person",
     "supercategory": "person"
  }
]
}

字段解释

  1. info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
  2. licenses: 包含数据集中使用的图像的许可证信息。
  3. images: 包含所有图像的信息,每个图像由以下字段组成:
    • id: 图像的唯一标识符。
    • file_name: 图像文件的名称。
    • width: 图像的宽度。
    • height: 图像的高度。
    • date_captured: 图像的拍摄日期和时间。
  4. annotations: 包含所有人关键点标注的信息,每个标注由以下字段组成:
    • id: 标注的唯一标识符。
    • image_id: 标注所属图像的ID。
    • category_id: 标注对象的类别ID(在关键点数据集中,通常只有人类)。
    • keypoints: 关键点的坐标和可见性标志。每个关键点由三个值组成:x 坐标、y 坐标和可见性标志(0 表示不可见,1 表示可见,2 表示遮挡)。
    • num_keypoints: 图像中可见的关键点数量。
    • area: 标注对象的面积。
    • bbox: 标注对象的边界框坐标,格式为 [x, y, width, height]
    • iscrowd: 标记标注对象是否属于人群(0 表示否,1 表示是)。
  5. categories: 包含所有类别的信息,每个类别由以下字段组成:
    • id: 类别的唯一标识符。
    • name: 类别的名称。
    • supercategory: 类别的超类别名称。

使用示例

以下是一个使用 Python 读取 person_keypoints_train2017.json 文件的示例:

import json

# 读取 JSON 文件
with open('path/to/person_keypoints_train2017.json', 'r') as f:
   data = json.load(f)

# 打印基本信息
print(data['info'])
print(data['licenses'])

# 打印图像信息
for image in data['images']:
   print(image)

# 打印关键点标注信息
for annotation in data['annotations']:
   print(annotation)

# 打印类别信息
for category in data['categories']:
   print(category)

通过这种方式,你可以访问和处理 COCO 数据集中的人体关键点标注信息,以便进行人体姿态估计等计算机视觉任务。

person_keypoints_val2017.json

person_keypoints_val2017.json 是 Microsoft COCO 数据集中的一个关键文件,它包含了验证集中的人体关键点标注信息。该文件是一个 JSON 格式的文件,其结构定义与 instances_train2017.json 文件类似。

数据集使用许可协议

COCO(Common Objects in Context)数据集使用了Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License(创作共用署名-非商业性使用-相同方式共享 4.0 国际许可协议)。这意味着在使用COCO数据集时,您需要遵守以下规定:

  1. 署名:在您的作品或出版物中,必须明确提及COCO数据集及其来源。
  2. 非商业性使用:您不得将COCO数据集用于商业目的,例如在商业产品或服务中使用。
  3. 相同方式共享:如果您修改了COCO数据集或基于COCO数据集创作了新的作品,您需要以相同的许可协议(Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License)分享您的作品。
  4. 无保证:COCO数据集是在“原样”基础上提供的,没有任何形式的保证。使用COCO数据集的风险由使用者自行承担。
  5. 不适用于法律诉讼:本许可协议不授予您任何法律权利,以对抗COCO数据集的创作者或版权所有者,也不授予您对抗第三方的任何法律权利。

在使用COCO数据集时,请确保遵守上述许可协议的规定。如有疑问,请查阅完整的许可协议文本:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

三、获取案例套装

文件包大小:25 GB

获取:传媒业和计算机服务视觉案例套装

发表评论