当前位置:   article > 正文

对MS coco数据集的ann file协议的探究_cocodetection 的 annfile

cocodetection 的 annfile

1. 工作场景

    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全集在实际工作中具有如下的不便之处:

  • 图片压缩包分别为18G和1G, 由于网络原因,下载速度慢且易中断。
  • coco数据集的ann file是一个数据集对应一个整体json文件,仅val集的json文件大小可达到20M, 不方便直接打开查看。
  • 大部分场景下,并不是想使用coco全集,仅仅是因为开源框架或者算法提供的是coco数据集接口,为了安装、跑通该框架(或算法)需要coco集的存在。

    因此本篇博文的内容聚焦两点内容:

  1. 探究coco数据集中ann file 协议。
  2. 制作一个coco标签形式的小规模数据集。

2. 资料收集

    coco数据集的官网提供了相关的介绍,见[引2]。该github提供了instances_val2017.json, 大小为20M可以有一个直观感受, 见[引3]。

3. 解决方案

3.1 探究coco数据集中ann file 协议

    首先回答第一个问题,coco的anno file协议是什么样子?以instances_val2017.json为例,它是一个大的dict数据结构。其key值包含五项[注1]:

'info', 'licenses', 'images', 'annotations', 'categories'
  • 1

3.1.1 annotations字段:重要程度☆☆☆

    这里的’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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.1.2 images和categories字段:重要程度☆☆

    这里的’images’和’categories’字段有一定的用处,可以稍微的留意一下。'images’是一个list, 其长度为5000,与coco2017 val集的5000张图片数量相对应。仍旧以list中一个item为例,如下截图所示,这里强调两点:

  1. 在代码逻辑层面,图片的id数字是一个比图片名更加常用的值,这里可以看到id事实上就是图片名称中的数字去除前缀无效的0。
  2. 在该字段中,保留了图片的宽和高。如果一些预处理操作需要这一信息,不需要再借助于PIL或者cv等图像处理库来获取。open一个图片会花费较多不必要的时间。
# 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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

    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'}]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.1.2 info和licenses字段:重要程度☆

    这里的‘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'}]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

3.2 制作一个coco标签形式的小规模数据集

    针对第二个问题,其实际意义在于,coco数据集在很多时候,它的作用仅仅是为了跑通一些开源框架。但该集较大,下载起来速度较慢,存储空间较大。因此这里抽取了一个子集,共64张图片,可用于日常的快速使用, github链接[引3]。
    这里的json标签文件只有1M不到,可以方便的用json文件打开工具(例如,右键,使用FireFox浏览器打开),打开直接直观的查看,3.1节的内容会更加清晰。

4. 结语

    本篇文章探究了当前目标检测领域最为流行的MS coco数据集的ann file协议,并提供了一个含有64张图片及其对应anno file的coco子数据集,方便日常工作中开源算法和框架的安装、调试等工作。

5. 注意

[注1]如果查看引用2链接中的官方说明,会缺少’categories’这一项,但实际如果解析json文件,会看到是有该项的。可能是由于历史版本的原因。

6.参考资料

[引1] 文档版面解析任务: publayNet
[引2]MS COCO annotation files 官方介绍
[引3]coco子数据集

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/550929
推荐阅读
相关标签
  

闽ICP备14008679号