一、问题描述
微软常见物体数据集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"
},
// ... 其他类别
]
}
字段解释
- info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
- licenses: 包含数据集中使用的图像的许可证信息。
- images: 包含所有图像的信息,每个图像由以下字段组成:
id
: 图像的唯一标识符。file_name
: 图像文件的名称。width
: 图像的宽度。height
: 图像的高度。date_captured
: 图像的拍摄日期和时间。
- annotations: 包含所有标注的信息,每个标注由以下字段组成:
id
: 标注的唯一标识符。image_id
: 标注所属图像的ID。category_id
: 标注对象的类别ID。segmentation
: 标注对象的分割掩码坐标,对于多边形标注,是一个二维数组。area
: 标注对象的面积。bbox
: 标注对象的边界框坐标,格式为[x, y, width, height]
。iscrowd
: 标记标注对象是否属于人群(0 表示否,1 表示是)。
- 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."
},
// ... 其他标注
]
}
字段解释
- info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
- licenses: 包含数据集中使用的图像的许可证信息。
- images: 包含所有图像的信息,每个图像由以下字段组成:
id
: 图像的唯一标识符。file_name
: 图像文件的名称。width
: 图像的宽度。height
: 图像的高度。date_captured
: 图像的拍摄日期和时间。
- 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"
}
]
}
字段解释
- info: 包含数据集的基本信息,如描述、URL、版本、年份、贡献者和创建日期。
- licenses: 包含数据集中使用的图像的许可证信息。
- images: 包含所有图像的信息,每个图像由以下字段组成:
id
: 图像的唯一标识符。file_name
: 图像文件的名称。width
: 图像的宽度。height
: 图像的高度。date_captured
: 图像的拍摄日期和时间。
- 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 表示是)。
- 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数据集时,您需要遵守以下规定:
- 署名:在您的作品或出版物中,必须明确提及COCO数据集及其来源。
- 非商业性使用:您不得将COCO数据集用于商业目的,例如在商业产品或服务中使用。
- 相同方式共享:如果您修改了COCO数据集或基于COCO数据集创作了新的作品,您需要以相同的许可协议(Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License)分享您的作品。
- 无保证:COCO数据集是在“原样”基础上提供的,没有任何形式的保证。使用COCO数据集的风险由使用者自行承担。
- 不适用于法律诉讼:本许可协议不授予您任何法律权利,以对抗COCO数据集的创作者或版权所有者,也不授予您对抗第三方的任何法律权利。
在使用COCO数据集时,请确保遵守上述许可协议的规定。如有疑问,请查阅完整的许可协议文本:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License。
三、获取案例套装
文件包大小:25 GB