PrepareKeypointDataSet_cn.md 3.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
# 如何准备关键点数据集
## 目录
- [COCO数据集](#COCO数据集)
- [MPII数据集](#MPII数据集)

## COCO数据集
### COCO数据集的准备
我们提供了一键脚本来自动完成COCO2017数据集的下载及准备工作,请参考[COCO数据集下载](https://github.com/PaddlePaddle/PaddleDetection/blob/f0a30f3ba6095ebfdc8fffb6d02766406afc438a/docs/tutorials/PrepareDataSet.md#COCO%E6%95%B0%E6%8D%AE)

### 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.json``person_keypoints_val2017.json`两个json文件。json文件中包含的`info``licenses``images`字段的含义与Detection相同,而`annotations``categories`则是不同的。
`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](http://human-pose.mpi-inf.mpg.de/#download)下载MPII数据集的图像与对应标注文件,并存放到`dataset/mpii`路径下。标注文件可以采用[mpii_annotations](https://download.openmmlab.com/mmpose/datasets/mpii_annotations.tar),已对应转换为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。