diff --git a/configs/keypoint/tiny_pose/README.md b/configs/keypoint/tiny_pose/README.md index 1e1827321e36894d64a47d64d2c1b45692894423..aebde8a5f56d62f033f64a7f5aee8f173ed725c1 100644 --- a/configs/keypoint/tiny_pose/README.md +++ b/configs/keypoint/tiny_pose/README.md @@ -60,11 +60,12 @@ PP-TinyPose是PaddleDetecion针对移动端设备优化的实时关键点检测 | 多人模型配置 | AP (COCO Val 多人) | 6人耗时 (FP32) | 6人耗时 (FP16)| | :------------------------ | :-------: | :---: | :---: | | PicoDet-S-Pedestrian-320\*320 + PP-TinyPose-128\*96 | 50.3 | 44.0 ms| 32.57 ms | -| 其他优秀开源模型-256\*256 | 39.4 | 12.0 ms| - | +| 其他优秀开源模型-256\*256 | 39.4 | 51.0 ms| - | **说明** - 关键点检测模型的精度指标是基于对应行人检测模型检测得到的检测框。 - 精度测试中去除了flip操作,且检测置信度阈值要求0.5。 +- 精度测试中,为了公平比较,多人数据去除了6人以上(不含6人)的图像。 - 速度测试环境为qualcomm snapdragon 865,采用arm8下4线程、FP32推理得到。 - Pipeline速度包含模型的预处理、推理及后处理部分。 - 其他优秀开源模型的测试及部署方案,请参考[这里](https://github.com/zhiboniu/MoveNet-PaddleLite)。 @@ -108,7 +109,7 @@ AI Challenger Description: 13: "Neck" ``` -由于两个数据集的关键点标注形式不同,我们将两个数据集的标注进行了对齐,仍然沿用COCO的标注形式,[训练的参考列表](https://bj.bcebos.com/v1/paddledet/data/keypoint/aic_coco_train_cocoformat.json),其主要处理如下: +由于两个数据集的关键点标注形式不同,我们将两个数据集的标注进行了对齐,仍然沿用COCO的标注形式,您可以下载[训练的参考列表](https://bj.bcebos.com/v1/paddledet/data/keypoint/aic_coco_train_cocoformat.json)并放在`dataset/`下使用。对齐两个数据集标注文件的主要处理如下: - `AI Challenger`关键点标注顺序调整至与COCO一致,统一是否标注/可见的标志位; - 舍弃了`AI Challenger`中特有的点位;将`AI Challenger`数据中`COCO`特有点位标记为未标注; - 重新排列了`image_id`与`annotation id`; diff --git a/docs/tutorials/PrepareKeypointDataSet_cn.md b/docs/tutorials/PrepareKeypointDataSet_cn.md index a34de57bc35522c6821078f5acc0205923808b35..2969e345b75e90a60a9a5ab04b02a3dca9fb2d95 100644 --- a/docs/tutorials/PrepareKeypointDataSet_cn.md +++ b/docs/tutorials/PrepareKeypointDataSet_cn.md @@ -2,6 +2,7 @@ ## 目录 - [COCO数据集](#COCO数据集) - [MPII数据集](#MPII数据集) +- [训练其他数据集](#训练其他数据集) ## COCO数据集 ### COCO数据集的准备 @@ -76,32 +77,63 @@ MPII keypoint indexes:: 下面以一个解析后的标注信息为例,说明标注的内容,其中每条标注信息标注了一个人物实例: ``` { - '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': [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。 \ No newline at end of file +- `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_id`和`annotation id`。 +5. 整理图像路径`file_name`,使其能够被正确访问到。 + +我们提供了整合`COCO`训练集和`AI Challenger`数据集的[标注文件](https://bj.bcebos.com/v1/paddledet/data/keypoint/aic_coco_train_cocoformat.json),供您参考调整后的效果。