本文是专题 深入探究COCO数据集标签 的第三部分,主要讲解如何加载COCO style的数据集。其他部分链接:
深入探究COCO数据集(一)——COCO标签格式
深入探究COCO数据集(二)——制作COCO style的数据集
pycocotools
pycocotools
提供了COCO数据集交互的接口,加载COCO
style的数据集通常使用其完成,更准确地说,是通过pycocotools.coco
中的COCO
类实现。标签加载过程如下:
1 | from pycocotools.coco import COCO |
得到一个COCO
对象之后呢?别急,先来说几个COCO
类中常用的接口:
属性
常用属性的类型均为字典。
名称 | 键 | 值 | 说明 |
---|---|---|---|
anns |
ann_id |
字典,标注文件中对应的标注信息 | 由ann_id 快速索引标注 |
imgs |
image_id |
字典,标注文件中对应的图像信息 | 由image_id 快速索引图像 |
cats |
category_id |
字典,标注文件中对应的类别信息 | 由category_id 快速索引类别 |
imgToAnns |
image_id |
列表,元素为字典形式的标注信息 | 由image_id 快速索引该图像全部标注 |
catToImgs |
category_id |
列表,元素为image_id |
由category_id 索引有该类别标注的全部图像的id |
方法
getAnnIds()
参数:
imgIds
:待查询image_id
(可选)、catIds
:待查询category_id
(可选)。返回值:符合全部筛选条件的
ann_id
列表,如果没有入参返回包含全部ann_id
的列表。示例:
1
2100) coco.getAnnIds(imgIds=
[246, 247]
getImgIds()
参数:
imgIds
:待查询image_id
(可选)、catIds
:待查询category_id
(可选)。返回值:符合全部筛选条件的
image_id
列表,如果没有入参返回包含全部image_id
的列表。示例:
1
21, 10, 100], catIds=6) # 三张图中包含category_id=6标注的图 coco.getImgIds(imgIds=[
[100]
getCatIds()
参数:
catNms
:类别名字(可选)、supNms
:父类名字(可选)、catIds
:category_id
(可选)。返回值:符合全部筛选条件的
category_id
列表,如果没有入参返回包含全部category_id
的列表。示例:
1
2"chairs", catIds=6) coco.getCatIds(catNms=
[6]
loadAnns()
参数:
ids
:ann_id
(可选)。返回值:标注文件中对应传入
ann_id
的标注信息列表,如果没有入参返回包含全部标注的列表。机制:通过
anns
属性实现。示例:
1
>>> coco.loadAnns(ids=[2, 3])
loadImgs()
参数:
ids
:image_id
(可选)。返回值:标注文件中对应传入
image_id
的图像信息列表,如果没有入参返回包含全部图像信息的列表。机制:通过
imgs
属性实现。示例:
1
>>> coco.loadImgs(ids=0)
loadCats()
参数:
ids
:category_id
(可选)。返回值:标注文件中对应传入
category_id
的类别信息列表,如果没有入参返回包含全部类别信息的列表。机制:通过
cats
属性实现。示例:
1
>>> coco.loadCats(ids=6)
annToMask()
参数:
ann
:标注信息字典。返回值:
ann['segmentation']
中的多边形对应的掩膜,类型为np.ndarray
示例:
1
mask = coco.annToMask(coco.anns[0])
COCO style数据加载
其实加载COCO数据集的过程无非就是运用上述属性和方法获得对应信息的过程,掌握了上述接口加载数据就很简单了。
由于很多开源代码中都写有COCO的数据加载类,大多数情况下我们无须自己重写,但是在一些特殊情况下需要根据需求重写或修改,个人比较推荐参考YOLACT代码中的数据加载,因为代码逻辑比较简单清晰。
这里放一个简单的目标检测数据加载模板:
1 | import cv2 |
至此,深入探究COCO数据集标签这一专题就结束了,COCO数据集被广泛使用于检测和分割领域,即使我们不直接使用COCO数据集本身,掌握其标签格式进而能够创建和加载自己的COCO style数据集在使用相关模型的时候也很有益。希望本专题能抛砖引玉,给读者提供一些参考。