赞
踩
Coco数据集是当前目标检测领域最为流行的一个公开学术集。许多目标检测领域相关的开源工作,在描述自己的ann file的时候,会使用如下的方式进行描述:
The annotation files follows the json format of the Object Detection task of MS COCO[引1].
看起来,coco的数据标签形式是一个默认大家都知道的常识。那么,coco数据的标签形式到底是什么样子的?鉴于coco数据标签形式使用的广泛性,有必要对其进行一定的了解。
另外一方面,coco常用的训练集train_2017和验证集val_2017全集在实际工作中具有如下的不便之处:
因此本篇博文的内容聚焦两点内容:
coco数据集的官网提供了相关的介绍,见[引2]。该github提供了instances_val2017.json, 大小为20M可以有一个直观感受, 见[引3]。
首先回答第一个问题,coco的anno file协议是什么样子?以instances_val2017.json为例,它是一个大的dict数据结构。其key值包含五项[注1]:
'info', 'licenses', 'images', 'annotations', 'categories'
这里的’annotations’是我们最应该关注的字段。它本身是一个长度为36781的list。表示当前val集中有36781个目标。以list中一个item为例,如下截图所示:这里的bbox和category_id就是我们最为关心的目标坐标框gt和类别gt。各个目标并没有按照是否为一张图片进行划分,但可以通过image_id来进行collect。这里有一个iscrowd字段,也是一个需要注意的点,但这里不做展开,后续计划会另外写一篇关于coco评测的博文,会对该字段的作用进行阐述。
{'segmentation': [[510.66,
423.01,
...
510.03,
423.01,
510.45,
423.01]],
'area': 702.1057499999998,
'iscrowd': 0,
'image_id': 289343,
'bbox': [473.07, 395.93, 38.65, 28.67],
'category_id': 18,
'id': 1768}
这里的’images’和’categories’字段有一定的用处,可以稍微的留意一下。'images’是一个list, 其长度为5000,与coco2017 val集的5000张图片数量相对应。仍旧以list中一个item为例,如下截图所示,这里强调两点:
# images是一个len为5000的list, 这里展示的是其中的一个元素
{'license': 4,
'file_name': '000000397133.jpg',
'coco_url': 'http://images.cocodataset.org/val2017/000000397133.jpg',
'height': 427,
'width': 640,
'date_captured': '2013-11-14 17:02:52',
'flickr_url': 'http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg',
'id': 397133}
categories字段,展示了该数据集中的类别信息,对应的id以及物理名称。需要注意的是,这里的类别id并不是连续的。
# categories是一个len为80的list, 但要注意这里的id并不是连续的
[{'supercategory': 'person', 'id': 1, 'name': 'person'},
...
{'supercategory': 'furniture', 'id': 65, 'name': 'bed'},
{'supercategory': 'furniture', 'id': 67, 'name': 'dining table'},
{'supercategory': 'furniture', 'id': 70, 'name': 'toilet'},
{'supercategory': 'electronic', 'id': 72, 'name': 'tv'},
...
{'supercategory': 'appliance', 'id': 82, 'name': 'refrigerator'},
{'supercategory': 'indoor', 'id': 84, 'name': 'book'},
...
{'supercategory': 'indoor', 'id': 90, 'name': 'toothbrush'}]
这里的‘info’项和’licenses’项是一些无太多实际意义的声明,可以直接跳过。
# info字段的内容 {'description': 'COCO 2017 Dataset', 'url': 'http://cocodataset.org', 'version': '1.0', 'year': 2017, 'contributor': 'COCO Consortium', 'date_created': '2017/09/01'} # license字段的内容 [{'url': 'http://creativecommons.org/licenses/by-nc-sa/2.0/', 'id': 1, 'name': 'Attribution-NonCommercial-ShareAlike License'}, {'url': 'http://creativecommons.org/licenses/by-nc/2.0/', 'id': 2, 'name': 'Attribution-NonCommercial License'}, {'url': 'http://creativecommons.org/licenses/by-nc-nd/2.0/', 'id': 3, 'name': 'Attribution-NonCommercial-NoDerivs License'}, {'url': 'http://creativecommons.org/licenses/by/2.0/', 'id': 4, 'name': 'Attribution License'}, {'url': 'http://creativecommons.org/licenses/by-sa/2.0/', 'id': 5, 'name': 'Attribution-ShareAlike License'}, {'url': 'http://creativecommons.org/licenses/by-nd/2.0/', 'id': 6, 'name': 'Attribution-NoDerivs License'}, {'url': 'http://flickr.com/commons/usage/', 'id': 7, 'name': 'No known copyright restrictions'}, {'url': 'http://www.usa.gov/copyright.shtml', 'id': 8, 'name': 'United States Government Work'}]
针对第二个问题,其实际意义在于,coco数据集在很多时候,它的作用仅仅是为了跑通一些开源框架。但该集较大,下载起来速度较慢,存储空间较大。因此这里抽取了一个子集,共64张图片,可用于日常的快速使用, github链接[引3]。
这里的json标签文件只有1M不到,可以方便的用json文件打开工具(例如,右键,使用FireFox浏览器打开),打开直接直观的查看,3.1节的内容会更加清晰。
本篇文章探究了当前目标检测领域最为流行的MS coco数据集的ann file协议,并提供了一个含有64张图片及其对应anno file的coco子数据集,方便日常工作中开源算法和框架的安装、调试等工作。
[注1]如果查看引用2链接中的官方说明,会缺少’categories’这一项,但实际如果解析json文件,会看到是有该项的。可能是由于历史版本的原因。
[引1] 文档版面解析任务: publayNet
[引2]MS COCO annotation files 官方介绍
[引3]coco子数据集
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。