利用Python统计coco数据集信息

目录

1.COCO数据集简介

2.COCO数据集的优缺点(简述)

3.COCO数据集信息统计

4.下次将推出VOC转COCO的脚本,期待关注。


1.COCO数据集简介

微软发布的 COCO 数据库是一个大型图像数据集, 专为对象检测、分割、人体关键点检测、语义分割和字幕生成而设计。

COCO 数据库的网址是:

  • MS COCO 数据集主页:http://mscoco.org/
  • Github 网址:https://github.com/Xinering/cocoapi
  • 关于 API 更多的细节在网站: http://mscoco.org/dataset/#download
  • 推荐参考文章:https://zhuanlan.zhihu.com/p/29393415

COCO API 提供了 Matlab, Python 和 Lua 的 API 接口. 该 API 接口可以提供完整的图像标签数据的加载, parsing 和可视化。此外,网站还提供了数据相关的文章, 教程等。

2.COCO数据集的优缺点(简述)

优点:数据集量大,作为官方数据集广泛用于深度学习--目标检测,是一个极富挑战性的数据集。

           采用json标注格式(VOC采用的是xml格式),具有良好的自我描述性,便于阅读。

缺点:由于数据集量很大,json文件一般也很大,当我们需要打开json文件时,导致文本编辑器卡死

3.COCO数据集信息统计

比如说我们想要知道由于训练的数据的具体信息或测试数据的具体信息,要通过json统计,针对COCO数据集的缺点,写者编写了一个Python脚本统计json文件中的数据信息。

具体代码如下:

from pycocotools.coco import COCO
#文件路径
dataDir='D:/Users/Desktop/'
dataType='trainval2014'
annFile='{}/instances_{}.json'.format(dataDir,dataType)

# initialize COCO api for instance annotations
coco_train=COCO(annFile)

# display COCO categories and supercategories
#显示所有类别
cats = coco_train.loadCats(coco_train.getCatIds())
cat_nms=[cat['name'] for cat in cats]
print('COCO categories:\n{}'.format('\n'.join(cat_nms))+'\n')
#统计单个类别的图片数量与标注数量
for cat_name in cat_nms:
    catId = coco_train.getCatIds(catNms=cat_name)
    if cat_name == "person":
        print(catId)
        imgId = coco_train.getImgIds(catIds=catId)
        annId = coco_train.getAnnIds(imgIds=imgId, catIds=catId, iscrowd=False)
        print("{:<15} {:<6d}     {:<10d}\n".format(cat_name, len(imgId), len(annId)))
#统计全部的类别及全部的图片数量和标注数量
print("NUM_categories: "+str(len(coco_train.dataset['categories'])))
print("NUM_images: "+str(len(coco_train.dataset['images'])))
print("NUM_annotations: "+str(len(coco_train.dataset['annotations'])))

运行结果展示

利用Python统计coco数据集信息_第1张图片

运行代码可能出现的bug:

问题:提示pycocotools.coco module缺少

解决办法:python执行pip install pycocotools,成功安装即可

如果有遇到其他问题,请评论区留言,与写者一起交流

4.下次将推出VOC转COCO的脚本,期待关注。

你可能感兴趣的:(收获,数据处理)