2D Pose人体关键点实时检测(Python/Android /C++ Demo)
2D Pose人体关键点实时检测(Python/Android /C++ Demo)
目录
2D Pose人体关键点实时检测(Python/Android /C++ Demo)
人体关键点检测(Human Keypoints Detection)又称为人体姿态估计2D Pose,是计算机视觉中一个相对基础的任务,是人体动作识别、行为分析、人机交互等的前置任务。一般情况下可以将人体关键点检测细分为单人/多人关键点检测、2D/3D关键点检测,同时有算法在完成关键点检测之后还会进行关键点的跟踪,也被称为人体姿态跟踪。
本博客提供2D Pose的Python代码,以及C++版本的推理代码,还提供Android Demo APP,已经集成了轻量化版本的人体检测模型
和人体姿态估计模型
,在普通手机可实时检测。
来,先看个Android Demo的效果图:
2D Pose人体关键点检测整套Android源码:2D Pose人体关键点实时检测Android源码, 整套项目源码,主要内容包含有:
(1)2D Pose人体关键点检测Android Demo整套源码,可以直接在本地Android studio构建
(2)已经集成了轻量化版本的
人体检测模型
和2D Pose人体关键点检测模型
,在普通手机可实时检测(CPU多线程约70ms, GPU约50ms)(3)核心算法均采用C++实现,有效提高性能,开发者可轻松进行二次开发
(4)Android Demo支持多线程CPU处理,以及GPU(OpenCL)加速,可支持多人人体关键点检测
(5)人体关键点检测APP demo免费体验:Android人体检测和人体关键点检测APPDemo安装包-Android文档类资源-CSDN下载,或者链接: https://pan.baidu.com/s/1ywiBsJMZlIZoLAu0UZAOFg 提取码: bunc
本篇博客不含训练代码,若有需要请详看这篇博客《https://panjinquan.blog.csdn.net/article/details/125502259》
Repo推荐:
- 个人repo(Python版): https://github.com/PanJinquan/Human-Keypoints-Detection
- 个人repo(C++版):https://github.com/PanJinquan/Human-Pose-Estimation-Lite-cpp
- Android Demo,支持CPU多线程和GPU加速,可实时检测(这是APP Demo APP)Android人体检测和人体关键点检测APPDemo安装包-Android文档类资源-CSDN下载
- 2D Pose人体关键点检测整套Android源码:2D Pose人体关键点实时检测Android源码
- 《Simple Baselines for Human Pose Estimation and Tracking》https://github.com/Microsoft/human-pose-estimation.pytorch
- 《Deep High-Resolution Representation Learning for Human Pose Estimation》https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
1.人体关键点数据集
(1)COCO数据集
下载地址:http://cocodataset.org/
COCO人体关键点标注,最多标注全身的17个关键点,平均一幅图像2个人,最多有13个人;
人体关键点标注,每个人体关键点个数的分布情况,其中11-15这个范围的人体是最多的,有接近70000人,6-10其次,超过40000人,后面依次为16-17,2-5,1.
(2)MPII数据集
下载地址:http://human-pose.mpi-inf.mpg.de/#download
人体关键点标注了全身16个关键点及其是否可见的信息,人数:train有28821,test有11701,有409种人类活动;使用mat的struct格式;行人框使用center和scale标注,人体尺度关于200像素高度。也就是除过了200
(3)关键点示意图
数据集 | 关键点示意图 | 关键点说明 |
COCO | ![]() | # 图像左右翻转时,成对的关键点(训练时用于数据增强) flip_pairs=[[1, 2], [3, 4], [5, 6], [7, 8],[9, 10], [11, 12], [13, 14], [15, 16]]
# 关键点连接线序号(用于绘制图像) skeleton =[[15, 13], [13, 11], [16, 14], [14, 12], [11, 12], [5, 11], [6, 12], [5, 6], [5, 7], [6, 8], [7, 9], [8, 10], [0, 1], [0, 2], [1, 3], [2, 4]]
# 每个关键点序号对应人体关键点的意义 "keypoints": { 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" } |
MPII | ![]() | # 图像左右翻转时,成对的关键点(训练时用于数据增强) # 关键点连接线序号(用于绘制图像) skeleton=[[0, 1], [1, 2], [3, 4], [4, 5], [2, 6], [6, 3], [12, 11], [7, 12], [11, 10], [13, 14], [14, 15], [8, 9], [8, 7], [6, 7], [7, 13]] # 每个关键点序号对应人体关键点的意义 |
human3.6M | ![]() | |
kinect | ![]() | |
2.人体关键点Demo(Python版本)
git clone https://github.com/PanJinquan/Human-Keypoints-Detection
目前仅仅提供推理代码,相关训练代码和数据,可以跟博主交流一起学习,可以支持自定义人体关键点进行训练。
人体关键点和手部关键点原理差不多的,只要有相关数据即可训练模型。
运行demo:
python demo.py
3.人体关键点Demo(C++版本)
git clone https://github.com/PanJinquan/Human-Pose-Estimation-Lite-cpp
运行demo:
bash build.sh
这是轻量化版本的人体姿态估计(2D Pose)C++推理代码,推理框架使用TNN
- 轻量化模型是基于MobileNet V2的改进版本
- 使用COCO的数据集进行训练,也可以支持MPII数据
- 支持OpenCL模型推理加速,在普通手机可实时检测
- 该仓库并未集成
人体检测模型
,Pose检测输入是原图,使用人体检测框并进行裁剪,Pose检测效果会更好 - 关于轻量化版本的人体检测检测模型,可参考Object-Detection-Lite-cpp
- 注意:纯C++版本速度比较慢,需要配置OpenCL方可实时检测
- 仅用于学习交流,并未进行过多的性能优化
- 模型训练代码暂时未提供
4.人体关键点Demo(Android版本)
2D Pose人体关键点检测整套Android源码:2D Pose人体关键点实时检测Android源码, 整套项目源码,主要内容包含有:
(1)2D Pose人体关键点检测Android Demo整套源码,可以直接在本地Android studio构建
(2)已经集成了轻量化版本的
人体检测模型
和2D Pose人体关键点检测模型
,在普通手机可实时检测(CPU多线程约70ms, GPU约50ms)(3)核心算法均采用C++实现,有效提高算法性能,开发者可轻松进行二次开发
(4)Android Demo支持多线程CPU处理,以及GPU(OpenCL)加速,可支持多人人体关键点检测
(5)人体关键点检测APP demo免费体验:Android人体检测和人体关键点检测APPDemo安装包-Android文档类资源-CSDN下载,或者链接: https://pan.baidu.com/s/1ywiBsJMZlIZoLAu0UZAOFg 提取码: bunc
Android Demo CPU:70ms,GPU:50ms |
---|
![]() |
- 运行APP闪退:dlopen failed: library "libomp.so" not found
参考解决方法:解决dlopen failed: library “libomp.so“ not found_PKing666666的博客-CSDN博客_dlopen failed
5.人体关键点检测效果
![]() | ![]() |
6.人体关键点检测训练代码
7.博客推荐:人脸检测+人体检测C++ Android实现
人脸检测+人体检测C++ Android实现,可参考另一篇博客:
相关文章
- [Android Pro] android Flag介绍
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- Android API之android.content.AsyncQueryHandler
- python时间和日期
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- Python“文件操作”Excel篇(上)
- Android studio中 android-support-v4报错问题
- Python:利用python语言实现18位身份证号码和15位身份证号码相互转换
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- python自学:15款学习游戏网站,边学边玩
- 改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)【电气期刊论文复现】
- python疲劳驾驶实时检测项目讲解(附代码)
- 从零开始学习python | 实例讲解如何制作Python模式程序
- Python编程:shelve模块-持久化python数据
- Python编程:查看python环境支持的whl
- Python编程:使用supervisor管理Django-Celery进程
- Python编程:元类的简单使用
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )
- 使用Android Studio build tensorflow/examples/android——直接用android studio即可
- python中的imp模块——让引用模块更加简单
- Python open()文件的字符数与指针字节关系
- linux bash shell 中getopts 命令 和 python 中 getopt 函数的比较总结
- Python实现卡方检验和相关性分析
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 〖Python自动化办公篇⑲〗 - python实现邮件自动化 - 邮件发送