PrepareKeypointDataSet_cn.md 5.5 KB

简体中文 | English

如何准备关键点数据集

目录

COCO数据集

COCO数据集的准备

我们提供了一键脚本来自动完成COCO2017数据集的下载及准备工作,请参考COCO数据集下载

COCO数据集(KeyPoint)说明

在COCO中,关键点序号与部位的对应关系为:

COCO keypoint indexes:
        0: 'nose',
        1: 'left_eye',
        2: 'right_eye',
        3: 'left_ear',
        4: 'right_ear',
        5: 'left_shoulder',
        6: 'right_shoulder',
        7: 'left_elbow',
        8: 'right_elbow',
        9: 'left_wrist',
        10: 'right_wrist',
        11: 'left_hip',
        12: 'right_hip',
        13: 'left_knee',
        14: 'right_knee',
        15: 'left_ankle',
        16: 'right_ankle'

与Detection任务不同,KeyPoint任务的标注文件为person_keypoints_train2017.jsonperson_keypoints_val2017.json两个json文件。json文件中包含的infolicensesimages字段的含义与Detection相同,而annotationscategories则是不同的。 在categories字段中,除了给出类别,还给出了关键点的名称和互相之间的连接性。 在annotations字段中,标注了每一个实例的ID与所在图像,同时还有分割信息和关键点信息。其中与关键点信息较为相关的有:

  • keypoints[x1,y1,v1 ...],是一个长度为17*3=51的List,每组表示了一个关键点的坐标与可见性,v=0, x=0, y=0表示该点不可见且未标注,v=1表示该点有标注但不可见,v=2表示该点有标注且可见。
  • bbox: [x1,y1,w,h]表示该实例的检测框位置。
  • num_keypoints: 表示该实例标注关键点的数目。

MPII数据集

MPII数据集的准备

请先通过MPII Human Pose Dataset下载MPII数据集的图像与对应标注文件,并存放到dataset/mpii路径下。标注文件可以采用mpii_annotations,已对应转换为json格式,完成后的目录结构为:

mpii
|── annotations
|   |── mpii_gt_val.mat
|   |── mpii_test.json
|   |── mpii_train.json
|   |── mpii_trainval.json
|   `── mpii_val.json
`── images
    |── 000001163.jpg
    |── 000003072.jpg

MPII数据集的说明

在MPII中,关键点序号与部位的对应关系为:

MPII keypoint indexes:
        0: 'right_ankle',
        1: 'right_knee',
        2: 'right_hip',
        3: 'left_hip',
        4: 'left_knee',
        5: 'left_ankle',
        6: 'pelvis',
        7: 'thorax',
        8: 'upper_neck',
        9: 'head_top',
        10: 'right_wrist',
        11: 'right_elbow',
        12: 'right_shoulder',
        13: 'left_shoulder',
        14: 'left_elbow',
        15: 'left_wrist',

下面以一个解析后的标注信息为例,说明标注的内容,其中每条标注信息标注了一个人物实例:

{
    'joints_vis': [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    'joints': [
        [-1.0, -1.0],
        [-1.0, -1.0],
        [-1.0, -1.0],
        [-1.0, -1.0],
        [-1.0, -1.0],
        [-1.0, -1.0],
        [-1.0, -1.0],
        [1232.0, 288.0],
        [1236.1271, 311.7755],
        [1181.8729, -0.77553],
        [692.0, 464.0],
        [902.0, 417.0],
        [1059.0, 247.0],
        [1405.0, 329.0],
        [1498.0, 613.0],
        [1303.0, 562.0]
    ],
    'image': '077096718.jpg',
    'scale': 9.516749,
    'center': [1257.0, 297.0]
}
  • joints_vis:分别表示16个关键点是否标注,若为0,则对应序号的坐标也为[-1.0, -1.0]
  • joints:分别表示16个关键点的坐标。
  • image:表示对应的图片文件。
  • center:表示人物的大致坐标,用于定位人物在图像中的位置。
  • scale:表示人物的比例,对应200px。

训练其他数据集

这里我们以AIChallenger数据集为例,展示如何将其他数据集对齐到COCO格式并加入关键点模型训练中。

AI challenger的标注格式如下:

AI Challenger Description:
        0: 'Right Shoulder',
        1: 'Right Elbow',
        2: 'Right Wrist',
        3: 'Left Shoulder',
        4: 'Left Elbow',
        5: 'Left Wrist',
        6: 'Right Hip',
        7: 'Right Knee',
        8: 'Right Ankle',
        9: 'Left Hip',
        10: 'Left Knee',
        11: 'Left Ankle',
        12: 'Head top',
        13: 'Neck'
  1. AI Challenger点位序号,调整至与COCO数据集一致,(如Right Shoulder的序号由0调整到13
  2. 统一是否标注/可见的标志位信息,如AI Challenger标注且可见需要由1调整到2
  3. 在该过程中,舍弃该数据集特有的点位(如Neck);同时该数据集中没有的COCO点位(如left_eye等),对应设置为v=0, x=0, y=0,表示该未标注。
  4. 为了避免不同数据集ID重复的问题,需要重新排列图像的image_idannotation id
  5. 整理图像路径file_name,使其能够被正确访问到。

我们提供了整合COCO训练集和AI Challenger数据集的标注文件,供您参考调整后的效果。