coco 关键点json文件解析

COCO是微软提供的一个图像识别的数据集。其中包括3个tasks,分别是object instances, object keypoints, 和image captions,存储格式为JSON。

基本的数据结构定义如下:

{
"info" : info, "images" : [image], "annotations" : [annotation], "licenses" : [license],
}
 
info{
"year" : int, "version" : str, "description" : str, "contributor" : str, "url" : str, "date_created" : datetime,
}
 
image{
"id" : int, "width" : int, "height" : int, "file_name" : str, "license" : int, "flickr_url" : str, "coco_url" : str, "date_captured" : datetime,
}
 
license{
"id" : int, "name" : str, "url" : str,
}


其中images和licenses是包含多个实例的数组。

三个tasks的格式相近,这里以一段object keypoints的实例代码为例进行解析。

{
"info" : info, "images" : [image], "annotations" : [annotation], "licenses" : [license],
}
"info":{
    "description":"This is stable 1.0 version of the 2014 MS COCO dataset.",
    "url":"http:\/\/mscoco.org",
    "version":"1.0","year":2014,
    "contributor":"Microsoft COCO group",
    "date_created":"2015-01-27 09:11:52.357475"
},
"image":{
    "license":3,
    "file_name":"COCO_val2014_000000391895.jpg",
    "coco_url":"http:\/\/mscoco.org\/images\/391895",
    "height":360,"width":640,"date_captured":"2013-11-14 11:18:45",
    "flickr_url":"http:\/\/farm9.staticflickr.com\/8186\/8119368305_4e622c8349_z.jpg",
    "id":391895
},
"licenses":{
    "url":"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/",
    "id":1,
    "name":"Attribution-NonCommercial-ShareAlike License"
},
"annotations":{
    "segmentation": [[125.12,539.69,140.94,522.43...]],
    "num_keypoints": 10,
    "area": 47803.27955,
    "iscrowd": 0,
    "keypoints": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,309,1,177,320,2,191,398...],
    "image_id": 425226,"bbox": [73.35,206.02,300.58,372.5],"category_id": 1,
    "id": 183126
},
"category":{
    "supercategory": "person",
    "id": 1,
    "name": "person",
    "keypoints": ["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"],
    "skeleton": [[16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13],[6,7],[6,8],[7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
}


先看annotation字段。segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)。单个的对象(iscrowd=0)可能需要多个polygon来表示,比如这个对象在图像中被挡住了。而iscrowd=1时(将标注一组对象,比如一群人)的segmentation使用的就是RLE格式。而只要是iscrowd=0那么segmentation就是polygon格式;只要iscrowd=1那么segmentation就是RLE格式。另外,每个对象(不管是iscrowd=0还是iscrowd=1)都会有一个矩形框bbox ,矩形框左上角的坐标和矩形框的长宽会以数组的形式提供,数组第一个元素就是左上角的横坐标值。area是area of encoded masks,是标注区域的面积。如果是矩形框,那就是高乘宽;如果是polygon或者RLE,那就复杂点。

keypoints是一个长度为3*k的数组,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。num_keypoints表示这个目标上被标注的关键点的数量(v>0),比较小的目标上可能就无法标注关键点。

再看category字段,存储的是当前对象所属的category的id,以及所属的supercategory的name(在object keypoint任务中只有一类,即person)。keypoints是一个长度为k的数组,包含了每个关键点的名字;skeleton定义了各个关键点之间的连接性(比如人的左手腕和左肘就是连接的,但是左手腕和右手腕就不是)。

 

注:人体关键点检测任务,COCO中有18个关键点,而MPI有15个。COCO关键点顺序如下:

 

References:

http://cocodataset.org/#format-data

https://zhuanlan.zhihu.com/p/29393415

https://blog.csdn.net/u010925447/article/details/77411335
 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
coco数据集是一个用于图像识别和物体检测的常用数据集,它包含了大量带有标注的图像。Coco数据集的标注信息以json格式存储,包含了每张图像中物体的位置、类别等信息。 拆分coco数据集的json文件通常有两个常见的需求:按照类别拆分和按照图像拆分。 按照类别拆分json文件可以通过遍历json文件中的每个标注,将同一类别的标注存储到对应的类别文件中。具体步骤如下: 1. 读取coco数据集的json文件解析出每个标注所对应的图像ID和类别ID。 2. 创建一个字典,以类别ID为键,对应的值为一个列表,用于存储该类别的所有标注。 3. 遍历每个标注,将同一类别的标注添加到对应的列表中。 4. 将每个类别的标注列表保存为单独的json文件。 按照图像拆分json文件可以通过遍历coco数据集中的每个图像,将每个图像的标注信息存储到对应的图像文件中。具体步骤如下: 1. 读取coco数据集的json文件,获取所有图像的列表。 2. 遍历每个图像,获取该图像对应的标注信息。 3. 将每个图像的标注信息保存为单独的json文件。 无论是按照类别拆分还是按照图像拆分,我们都可以使用Python中的json库来进行json文件的读取和写入操作。 拆分coco数据集的json文件可以帮助我们更好地管理和使用数据集的标注信息,方便进行数据预处理、训练模型和评估结果等操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值