炼丹日记02-COCO姿态检测数据集结构讲解
背景
到现在,我的vitpose在full coco dataset已经跑了1天07个小时了,eta还有12个小时,要是每次我造一个新模型就得跑2天,那我估计要被我导师一脚踹飞了。因此我准备子集切一个COCO姿态估计数据集的子集出来,要切分就肯定要先了解数据格式,所以我就先去探索了一下coco姿态估计的json标注,然后就有了这篇文章。
Person_keypoints_train2017.json 结构解读
用Dadroit JSON阅读器打开 person_keypoints_train_2017.json文件,最顶层有5个key:

info
包含了COCO数据集的元信息,如网址,版本,年份等等:

licneses
包含了如何合法使用和分发数据集中的内容,对训练没啥用所以跳过
images
包含所有训练图片,一共有118287个元素,这里面的每一个元素都对应着一个img的元信息,对训练重要的有三个:
- 文件名
- 图片尺寸
- 唯一的索引id

annotations:
现在重头戏来了,annotations表示在这个Pose-Estimation标注文件中提供的所有标注信息,在这个train的标注文件中一共有262465条标注,每一条标注的结构如下所示:

- segmentation: 这个是语义分割的标注,用一堆坐标点把一个实例抠出来,和姿态估计不怎么相关,先不管

接下来就是和keypoints相关的annotation部分
-
num_keypoints: 图片中可见的coco关键点有几个
-
area:标注对象所占的像素面积
-
iscrowd: 这个人和其他人有没有重合,有1否0
-
keypoints: 一共有51个元素,对应着17个coco关键点的一维序列展开(每个点有(x, y visible)三个属性, 3 * 17 = 51)

-
image_id: 这个标注对应的图片id
-
bbox:该物体的检测框[xywh] (x, y)是左上角坐标,w代表宽度,h代表高度

-
category_id: 物体的所属类别,在姿态估计任务中只有1个,就是人,id为1
-
id:标注的唯一id
categories
对应着每个categories的关键点配置,这里目前只有人一类,所以catgories的元素就只有一个

-
supercategory: 所属超类,先不管
-
id:category的id
-
keypoints:定义了这个类有多少个keypoints,以及每个keypoints的名字

-
skeleton:定义了每个关键点之间的连接,每一个元素就是一个连接线,第一个连接线就是16和14关键点的连接。coco完整的人体标注会有19条连接线。

后记
这里只是简单的过了一遍json中的大概结构和重要字段,充当一个速查表的作用了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)