未验证 提交 ea8806ba 编写于 作者: J JYChen 提交者: GitHub

Cherry pick tinypose readme (#4689)

* update tinypose readme

* add tinypose link in keypoint introduction, test=document_fix

* update AP data and deployment link for Competitor model
上级 f7b0fb44
...@@ -38,6 +38,8 @@ MPII数据集 ...@@ -38,6 +38,8 @@ MPII数据集
| HRNet-w32 | 256x256 | 90.6 | 38.5 | [hrnet_w32_256x256_mpii.pdparams](https://paddledet.bj.bcebos.com/models/keypoint/hrnet_w32_256x256_mpii.pdparams) | [config](./hrnet/hrnet_w32_256x256_mpii.yml) | | HRNet-w32 | 256x256 | 90.6 | 38.5 | [hrnet_w32_256x256_mpii.pdparams](https://paddledet.bj.bcebos.com/models/keypoint/hrnet_w32_256x256_mpii.pdparams) | [config](./hrnet/hrnet_w32_256x256_mpii.yml) |
我们同时推出了针对移动端设备优化的实时关键点检测模型[PP-TinyPose](./tiny_pose/README.md), 欢迎体验。
## 快速开始 ## 快速开始
### 1、环境安装 ### 1、环境安装
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</div> </div>
## 简介 ## 简介
PP-TinyPose是PaddleDetecion针对移动端设备优化的实时姿态检测模型,可流畅地在移动端设备上执行多人姿态估计任务。借助PaddleDetecion自研的优秀轻量级检测模型[PicoDet](../../picodet/README.md),我们同时提供了特色的轻量级垂类行人检测模型。TinyPose的运行环境有以下依赖要求: PP-TinyPose是PaddleDetecion针对移动端设备优化的实时关键点检测模型,可流畅地在移动端设备上执行多人姿态估计任务。借助PaddleDetecion自研的优秀轻量级检测模型[PicoDet](../../picodet/README.md),我们同时提供了特色的轻量级垂类行人检测模型。TinyPose的运行环境有以下依赖要求:
- [PaddlePaddle](https://github.com/PaddlePaddle/Paddle)>=2.2 - [PaddlePaddle](https://github.com/PaddlePaddle/Paddle)>=2.2
如希望在移动端部署,则还需要: 如希望在移动端部署,则还需要:
...@@ -17,8 +17,22 @@ PP-TinyPose是PaddleDetecion针对移动端设备优化的实时姿态检测模 ...@@ -17,8 +17,22 @@ PP-TinyPose是PaddleDetecion针对移动端设备优化的实时姿态检测模
<img src="../../../docs/images/tinypose_pipeline.png" width='800'/> <img src="../../../docs/images/tinypose_pipeline.png" width='800'/>
</div> </div>
## 部署案例
- [Android Fitness Demo](https://github.com/zhiboniu/pose_demo_android) 基于PP-TinyPose, 高效实现健身校准与计数功能。
<div align="center">
<img src="../../../docs/images/fitness_demo.gif" width='636'/>
</div>
- 欢迎扫码快速体验
<div align="center">
<img src="../../../docs/images/tinypose_app.png" width='220'/>
</div>
## 模型库 ## 模型库
### 姿态检测模型 ### 关键点检测模型
| 模型 | 输入尺寸 | AP (COCO Val) | 单人推理耗时 (FP32)| 单人推理耗时(FP16) | 配置文件 | 模型权重 | 预测部署模型 | Paddle-Lite部署模型(FP32) | Paddle-Lite部署模型(FP16)| | 模型 | 输入尺寸 | AP (COCO Val) | 单人推理耗时 (FP32)| 单人推理耗时(FP16) | 配置文件 | 模型权重 | 预测部署模型 | Paddle-Lite部署模型(FP32) | Paddle-Lite部署模型(FP16)|
| :------------------------ | :-------: | :------: | :------: |:---: | :---: | :---: | :---: | :---: | :---: | | :------------------------ | :-------: | :------: | :------: |:---: | :---: | :---: | :---: | :---: | :---: |
| PP-TinyPose | 128*96 | 58.1 | 4.57ms | 3.27ms | [Config](./tinypose_128x96.yml) |[Model](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.pdparams) | [预测部署模型](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.tar) | [Lite部署模型](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.nb) | [Lite部署模型(FP16)](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96_fp16.nb) | | PP-TinyPose | 128*96 | 58.1 | 4.57ms | 3.27ms | [Config](./tinypose_128x96.yml) |[Model](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.pdparams) | [预测部署模型](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.tar) | [Lite部署模型](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.nb) | [Lite部署模型(FP16)](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96_fp16.nb) |
...@@ -32,26 +46,31 @@ PP-TinyPose是PaddleDetecion针对移动端设备优化的实时姿态检测模 ...@@ -32,26 +46,31 @@ PP-TinyPose是PaddleDetecion针对移动端设备优化的实时姿态检测模
**说明** **说明**
- 姿态检测模型与行人检测模型均使用`COCO train2017``AI Challenger trainset`作为训练集。姿态检测模型使用`COCO person keypoints val2017`作为测试集,行人检测模型采用`COCO instances val2017`作为测试集。 - 关键点检测模型与行人检测模型均使用`COCO train2017``AI Challenger trainset`作为训练集。关键点检测模型使用`COCO person keypoints val2017`作为测试集,行人检测模型采用`COCO instances val2017`作为测试集。
- 姿态检测模型的精度指标所依赖的检测框为ground truth标注得到。 - 关键点检测模型的精度指标所依赖的检测框为ground truth标注得到。
- 姿态检测模型与行人检测模型均在4卡环境下训练,若实际训练环境需要改变GPU数量或batch size, 须参考[FAQ](https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/FAQ.md)对应调整学习率。 - 关键点检测模型与行人检测模型均在4卡环境下训练,若实际训练环境需要改变GPU数量或batch size, 须参考[FAQ](https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/FAQ.md)对应调整学习率。
- 推理速度测试环境为 Qualcomm Snapdragon 865,采用arm8下4线程推理得到。 - 推理速度测试环境为 Qualcomm Snapdragon 865,采用arm8下4线程推理得到。
### Pipeline性能 ### Pipeline性能
| 行人检测模型 | 姿态检测模型 | mAP (COCO Val) | 单人耗时 (FP32) | 单人耗时 (FP16) | 6人耗时 (FP32) | 6人耗时 (FP16)| | 单人模型配置 | AP (COCO Val 单人) | 单人耗时 (FP32) | 单人耗时 (FP16) |
| :------------------------ | :-------: | :------: | :---: | :---: | :---: | :---: | | :------------------------ | :------: | :---: | :---: |
| PicoDet-S-Pedestrian-192*192 | PP-TinyPose-128*96 | 36.7 | 11.72 ms| 8.18 ms | 36.22 ms| 26.33 ms | | PicoDet-S-Pedestrian-192\*192 + PP-TinyPose-128\*96 | 51.8 | 11.72 ms| 8.18 ms |
| PicoDet-S-Pedestrian-320*320 | PP-TinyPose-128*96 | 44.2 | 19.45 ms| 14.41 ms | 44.0 ms| 32.57 ms | | 其他优秀开源模型-192\*192 | 22.3 | 12.0 ms| - |
| 多人模型配置 | 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| - |
**说明** **说明**
- 姿态检测模型的精度指标是基于对应行人检测模型检测得到的检测框。 - 关键点检测模型的精度指标是基于对应行人检测模型检测得到的检测框。
- 精度测试中去除了flip操作,且检测置信度阈值要求0.5。 - 精度测试中去除了flip操作,且检测置信度阈值要求0.5。
- 速度测试环境为qualcomm snapdragon 865,采用arm8下4线程、FP32推理得到。 - 速度测试环境为qualcomm snapdragon 865,采用arm8下4线程、FP32推理得到。
- Pipeline速度包含模型的预处理、推理及后处理部分。 - Pipeline速度包含模型的预处理、推理及后处理部分。
- 其他优秀开源模型的测试及部署方案,请参考[这里](https://github.com/zhiboniu/MoveNet-PaddleLite)
## 模型训练 ## 模型训练
姿态检测模型与行人检测模型的训练集在`COCO`以外还扩充了[AI Challenger](https://arxiv.org/abs/1711.06475)数据集,各数据集关键点定义如下: 关键点检测模型与行人检测模型的训练集在`COCO`以外还扩充了[AI Challenger](https://arxiv.org/abs/1711.06475)数据集,各数据集关键点定义如下:
``` ```
COCO keypoint Description: COCO keypoint Description:
0: "Nose", 0: "Nose",
...@@ -95,7 +114,7 @@ AI Challenger Description: ...@@ -95,7 +114,7 @@ AI Challenger Description:
- 重新排列了`image_id``annotation id` - 重新排列了`image_id``annotation id`
利用转换为`COCO`形式的合并数据标注,执行模型训练: 利用转换为`COCO`形式的合并数据标注,执行模型训练:
```bash ```bash
# 姿态检测模型 # 关键点检测模型
python3 -m paddle.distributed.launch tools/train.py -c configs/keypoint/tiny_pose/tinypose_128x96.yml python3 -m paddle.distributed.launch tools/train.py -c configs/keypoint/tiny_pose/tinypose_128x96.yml
# 行人检测模型 # 行人检测模型
...@@ -118,7 +137,7 @@ picodet_s_192_pedestrian ...@@ -118,7 +137,7 @@ picodet_s_192_pedestrian
├── model.pdiparams.info ├── model.pdiparams.info
└── model.pdmodel └── model.pdmodel
``` ```
您也可以直接下载模型库中提供的对应`预测部署模型`,分别获取得到行人检测模型和姿态检测模型的预测部署模型,解压即可。 您也可以直接下载模型库中提供的对应`预测部署模型`,分别获取得到行人检测模型和关键点检测模型的预测部署模型,解压即可。
2. 执行Python联合部署预测 2. 执行Python联合部署预测
```bash ```bash
...@@ -149,7 +168,7 @@ python3 deploy/python/det_keypoint_unite_infer.py --det_model_dir=output_inferen ...@@ -149,7 +168,7 @@ python3 deploy/python/det_keypoint_unite_infer.py --det_model_dir=output_inferen
### 实现移动端部署 ### 实现移动端部署
#### 直接使用我们提供的模型进行部署 #### 直接使用我们提供的模型进行部署
1. 下载模型库中提供的`Paddle-Lite部署模型`,分别获取得到行人检测模型和姿态检测模型的`.nb`格式文件。 1. 下载模型库中提供的`Paddle-Lite部署模型`,分别获取得到行人检测模型和关键点检测模型的`.nb`格式文件。
2. 准备Paddle-Lite运行环境, 可直接通过[PaddleLite预编译库下载](https://paddle-lite.readthedocs.io/zh/latest/quick_start/release_lib.html)获取预编译库,无需自行编译。如需要采用FP16推理,则需要下载[FP16的预编译库](https://github.com/PaddlePaddle/Paddle-Lite/releases/download/v2.10-rc/inference_lite_lib.android.armv8_clang_c++_static_with_extra_with_cv_with_fp16.tiny_publish_427e46.zip) 2. 准备Paddle-Lite运行环境, 可直接通过[PaddleLite预编译库下载](https://paddle-lite.readthedocs.io/zh/latest/quick_start/release_lib.html)获取预编译库,无需自行编译。如需要采用FP16推理,则需要下载[FP16的预编译库](https://github.com/PaddlePaddle/Paddle-Lite/releases/download/v2.10-rc/inference_lite_lib.android.armv8_clang_c++_static_with_extra_with_cv_with_fp16.tiny_publish_427e46.zip)
3. 编译模型运行代码,详细步骤见[Paddle-Lite端侧部署](../../../deploy/lite/README.md) 3. 编译模型运行代码,详细步骤见[Paddle-Lite端侧部署](../../../deploy/lite/README.md)
...@@ -175,7 +194,7 @@ paddle_lite_opt --model_dir=inference_model/picodet_s_192_pedestrian --valid_tar ...@@ -175,7 +194,7 @@ paddle_lite_opt --model_dir=inference_model/picodet_s_192_pedestrian --valid_tar
# FP16 # FP16
paddle_lite_opt --model_dir=inference_model/picodet_s_192_pedestrian --valid_targets=arm --optimize_out=picodet_s_192_pedestrian_fp16 --enable_fp16=true paddle_lite_opt --model_dir=inference_model/picodet_s_192_pedestrian --valid_targets=arm --optimize_out=picodet_s_192_pedestrian_fp16 --enable_fp16=true
# 2. 转换姿态检测模型 # 2. 转换关键点检测模型
# FP32 # FP32
paddle_lite_opt --model_dir=inference_model/tinypose_128x96 --valid_targets=arm --optimize_out=tinypose_128x96_fp32 paddle_lite_opt --model_dir=inference_model/tinypose_128x96 --valid_targets=arm --optimize_out=tinypose_128x96_fp32
# FP16 # FP16
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册