The annotations of SynPose are stored using JSON. The data format is borrowed from COCO format. All annotations of subset SynPose14 and SynPose17 share the same basic data structure below:

{
"info"
: info,
"images"
: [image],
"annotations"
: [annotation],
"categories"
: [category],
}

info{
"year"
: int,
"version"
: str,
"description"
: str,
"contributor"
: str,
"date_created"
: datetime,
}

image{
"id"
: int,
"width"
: int,
"height"
: int,
"file_name"
: str,
}

annotation{
"id"
: int,
"image_id"
: int,
"category_id"
: int,
"num_keypoints"
: int,
"keypoints"
: [x1,y1,v1,...],
"bbox"
: [x,y,width,height],
}

category{
"id"
: int,
"name"
: str,
"supercategory"
: str,
"keypoints"
: [str],
"skeleton"
: [edge],
}


As with COCO format, the "keypoints" field is a length 3k array where k is the total number of keypoints defined for the category. Each keypoint has a 0-indexed location x,y and a visibility flag v. The difference is that in SynPose, the flag v is defined as v=0: occluded, v=1: self-occluded, and v=2: visible. (For the difference between occluded and self-occluded please check here.) for each category, the categories struct has two additional fields: "keypoints," which is a length k array of keypoint names, and "skeleton", which defines connectivity via a list of keypoint edge pairs and is used for visualization.

The only difference between the annotation of SynPose14 and SynPose17 is the 'keypoint' and 'skeleton' fields. In SynPose14 that will be:

category{
"keypoints"

: ['left_shoulder', 'right_shoulder', 'left_elbow', 'right_elbow', 'left_wrist', 'right_wrist', 'left_hip', 'right_hip', 'left_knee', 'right_knee', 'left_ankle', 'right_ankle', 'head', 'neck'],
"skeleton"
: [[12, 13], [13, 0], [13, 1], [0, 2], [2, 4], [1, 3], [3, 5], [13, 7], [13, 6], [7, 9], [9, 11], [6, 8], [8, 10]],
}

In SynPose17:

category{
"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]],
}