一、简介
官方网站:http://cocodataset.org/
全称:Microsoft Common Objects in Context (MS COCO)
支持任务:Detection、Keypoints、Stuff、Panoptic、Captions
说明:COCO数据集目前有三个版本,即2014、2015和2017,其中2015版只有测试集,其他两个有训练集、验证集和测试集。
(本贴内容来源于官网+个人理解与描述)
二、数据集下载
方法一:直接官网下载(需要FQ)。
方法二:本人已把官网数据集放在百度云网盘,可自行下载(无需FQ)。
三、数据集说明
COCO数据集包括两大部分:Images和Annotations
Images:“任务+版本”命名的文件夹(例如:train2014),里面为xxx.jpg的图像文件;
Annotations:文件夹,里面为xxx.json格式的文本文件(例如:instances_train2014.json);
使用COCO数据集的核心就在于xxx.json文件的读取操作,下面详细介绍annotation文件的组织结构和使用方法。
3.1 通用字段
COCO有五种注释类型对应五种任务:目标检测、关键点检测、实物分割、全景分割和图像描述。注释使用JSON文件存储。每个xxx.json的内容整体为一个字典,key为“info”、“images“、”annotations“和”licenses“,如下所示:
1 {
2 "info":info,
3 "images":[image],
4 "annotations":[annotation],
5 "licenses":[license],
6 }
value为对应的数据类型,其中,info是一个字典,images是一个list,annotations是一个list,licenses是一个list。除annotation外,每部分的内容定义如下:
1 info{
2 "year" : int, # 数据集年份号
3 "version" : str, # 数据集版本
4 "description" : str, # 数据集描述
5 "contributor" : str, # 贡献者
6 "url" : str, # 数据集官方网址
7 "date_created" : datetime, # 数据集创建详细时间
8 }
9
10 image{
11 "id" : int, # 图像id
12 "width" : int, # 图像宽度
13 "height" : int, # 图像高度
14 "file_name" : str, # 图像文件名
15 "license" : int, # 许可证
16 "flickr_url" : str, # flickr链接
17 "coco_url" : str, # coco链接
18 "date_captured" : datetime, # 拍摄时间
19 }
20
21 license{
22 "id" : int, # license的编号,1-8
23 "name" : str, # 许可证名称
24 "url" : str, # 许可证网址
25 }
key为”annotation“的value对应不同的xxx.json略有不同,但表示内容含义是一样的,即对图片和实例的描述。同时除了annotation外,还有一个key为”categories“表示类别。以下分别对不同任务的annotation和categories进行说明。
3.2 非通用字段
3.2.1 Object Detection(目标检测)
以检测任务为例,对于每一张图片,至少包含一个对象,COCO数据集对每一个对象进行描述,而不是对一张图片。每个对象都包含一系列字段,包括对象的类别id和mask码,mask码的分割格式取决于图像里的对象数目,当一张图像里就一个对象时(iscrowd=0),mask码用RLE格式,当大于一个对象时(iscrowd=1),采用polyhon格式。
1 annotation{
2 "id" : int, # annotation的id,每个对象对应一个annotation
3 "image_id" : int, # 该annotation的对象所在图片的id
4 "category_id" : int, # 类别id,每个对象对应一个类别
5 "segmentation" : RLE or[polygon],
6 "area" : float, # 面积
7 "bbox" : [x,y,width,height], # x,y为左上角坐标
8 "iscrowd" : 0 or 1, # 0时segmentation为REL,1为polygon
9 }
10
11 categories[{
12 "id" : int, # 类别id
13 "name" : str, # 类别名称
14 "supercategory" : str, # 类别的父类,例如:bicycle的父类是vehicle
15 }]
3.2.2 Keypoint Detection(关键点检测)
与检测任务一样,一个图像包干若干对象,一个对象对应一个keypoint注释,一个keypoint注释包含对象注释的所有数据(包括id、bbox等)和两个附加字段。
首先,key为”keypoints“的value是一个长度为3k的数组,其中k是类别定义的关键点总数(例如人体姿态关键点的k为17).每个关键点都有一个0索引的位置x、y和可见性标志v(v=0表示未标记,此时