MS COCO 数据集
MS COCO全称是Microsoft Common Objects in Context,是由微软开发维护的大型图像数据集。
COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。图像包括91类目标,328,000影像和2,500,000个label。目前为止有语义分割的最大数据集,提供的类别有80 类,有超过33 万张图片,其中20 万张有标注,整个数据集中个体的数目超过150 万个,数据集压缩大小超过25G。
COCO数据集目前有三个版本,即2014、2015和2017,其中2015版只有测试集,其他两个有训练集、验证集和测试集
特点
- 对象分割
- 在上下文中可识别
- 超像素分割
- 330K图像(> 200K标记)
- 150万个对象实例
- 80个对象类别
- 91个类别
- 每张图片5个字幕
- 有关键点的250,000人
数据集分类
Object Detection
经典的情况下通过bounding box确定目标位置,期初主要用于人脸检测与行人检测,数据集如Caltech Pedestrian Dataset包含350,000个bounding box标签。PASCAL VOC数据包括20个目标超过11,000图像,超过27,000目标bounding box。最近还有ImageNet数据下获取的detection数据集,200类,400,000张图像,350,000个bounding box。由于一些目标之间有着强烈的关系而非独立存在,在特定场景下检测某种目标是是否有意义的,因此精确的位置信息比bounding box更加重要。
Image Classification
分类需要二进制的标签来确定目标是否在图像中。早期数据集主要是位于空白背景下的单一目标,如MNIST手写数据库,COIL household objects。在机器学习领域的著名数据集有CIFAR-10 and CIFAR-100,在32*32影像上分别提供10和100类。最近最著名的分类数据集即ImageNet,22,000类,每类500-1000影像。
Semantic scene labeling
这类问题需要pixel级别的标签,其中个别目标很难定义,如街道和草地。数据集主要包括室内场景和室外场景的,一些数据集包括深度信息。其中,SUN dataset包括908个场景类,3,819个常规目标类(person, chair, car)和语义场景类(wall, sky, floor),每类的数目具有较大的差别(这点COCO数据进行改进,保证每一类数据足够)。
Other vision datasets
一些数据集如Middlebury datasets,包含立体相对,多视角立体像对和光流;同时还有Berkeley Segmentation Data Set (BSDS500),可以评价segmentation和edge detection算法。
数据体格式
MS COCO有5种类型的标注,分别是:物体检测、关键点检测、实例分割、全景分割、图片标注。所有MS COCO的标注数据第一层都至少包含以下四个对象,不同检测任务的annotations不同且部分检测任务还包含一个categories(JSON第一层即包含五个对象)
{
"info": info,
"images": [image],
"annotations": [annotation],
"licenses": [license],
}
其中info对应的内容如下:
info{
"year" : int,
"version" : str,
"description" : str,
"contributor" : str,
"url" : str,
"date_created" : datetime,
}
其中images对应的是一个list,对应了多张图片。list的每一个元素是一个字典,对应一张图片。格式如下:
info{
"id" : int,
"width" : int,
"height" : int,
"file_name" : str,
"license" : int,
"flickr_url" : str,
"coco_url" : str,
"date_captured" : datetime,
}
license的内容如下:
license{
"id" : int,
"name" : str,
"url" : str,
}
虽然每个json文件都有"info", “images” , “annotations”, "licenses"关键字,但不同的任务对应的json文件中annotation的形式不同,分别如下:
目标检测
每个对象实例注释都包含一系列字段,包括对象的类别id和分段掩码。分割格式取决于实例是表示单个对象(使用多边形的情况下iscrowd=0)还是表示对象的集合(使用RLE的情况下iscrowd=1)。注意,单个对象(iscrowd=0)可能需要多个多边形,例如遮挡时。Crowd注释(iscrowd=1)用于标记大量对象(例如一群人)。此外,还为每个对象提供了一个包围框(框坐标从图像左上角开始测量,并以0为索引)。最后,注释结构的categories字段存储类别id到类别和超类别名称的映射。
annotation{
"id" : int,
"image_id" : int,
"category_id" : int,
"segmentation" : RLE or [polygon],
"area" : float,
"bbox" : [x,y,width,height],
"iscrowd" : 0 or 1,
}
categories[{
"id" : int,
"name" : str,
"supercategory" : str,
}]