基于MediaPipe模型能力的多种人体关键点姿态估计可视化

背景介绍

人体姿态估计是计算机视觉(computer vision,CV)中一个有趣的任务,发展至今已有大量优秀的解决方案产生,较为经典的2D人体姿态估计解决方案有:

Github开源项目Pytorch-Human-Pose-Estimation提供了上述解决方案在MPIICOCO数据集上的统一训练框架。

值得注意的是,在使用该框架的过程中,由于其nms计算部分的代码修改自py-faster-rcnn项目,其Cython源代码编译生成的是.pyx文件,该文件在Linux系统上可直接运行,在Windows系统上不会被加载使用1(.pyx等python文件类型的介绍参照文章《详解Python文件: .py、.ipynb、.pyi、.pyc、​.pyd !》2)。

同时,训练上述解决方案需要大量的计算资源,并且在应用各解决方案时,可视化速度较慢,难以应对实时视频中人体关键点的姿态估计。在不考虑对解决方案进行算法创新时,MediaPipe提供的人体关键点姿态估计模型能力非常具有吸引力。

项目难点

对于MediaPipe与其模型能力不再赘述,感兴趣的可浏览其官方主页以及各解决方案的详细介绍,本项目侧重于应用其提供的模型能力进行多种人体关键点姿态估计可视化。

MediaPipe在进行姿态估计时,其内置的人体关键点如下图所示,共包含33个人体关键点。
MediaPipe内置的人体关键点
MediaPipe定义了其关键点的数据类型landmark,而非简单的列表或字典数据类型,并且MediaPipe封装了可视化方法draw_landmarks。因此本项目的主要难点在于分析其数据类型以及可视化方法,利用其数据类型以及可视化方法完成多种人体关键点的姿态估计可视化。

本项目以COCO数据集的人体关键点为例,介绍如何利用MediaPipe进行COCO数据集的人体关键点姿态估计可视化。

环境配置

本项目在Python环境下进行,使用的Python环境为mediapipe=0.10.11、opencv-python & opencv-contrib-python=4.10.0.84

其中opencv-contrib-python应当是mediapipe的依赖库之一,其为mediapipe安装时自带安装的,opencv-python则是为了与opencv-contrib-python保持一致,实际上非必要安装。

Step1:建立两组人体关键点映射

COCO数据集的人体关键点如下图所示,共包含17个人体关键点。
COCO数据集的人体关键点
将其与MediaPipe内置的人体关键点分别进行对应,可得到相同关键点处的索引的映射,代码实现如下:

# MediaPipe关键点对应的索引
mediapipe_keypoints_mapping = {
   
   
    "nose": 0, "left_eye_inner": 1, "left_eye": 2, "left_eye_outer": 3, "right_eye_inner": 4, "right_eye": 5,
    "right_eye_outer": 6, "left_ear": 7, "right_ear": 8, "mouth_left": 9, "mouth_right": 10, "left_shoulder": 11,
    "right_shoulder": 12, "left_elbow": 13, "right_elbow": 14, "left_wrist": 15, "right_wrist": 16,
    "left_pinky": 17, "right_pinky": 18, "left_index": 19, "right_index": 20, "left_thumb": 21, "right_thumb": 22,
    "left_hip": 23, "right_hip": 24, "left_knee": 25, "right_knee": 26, "left_ankle": 27, "right_ankle": 28,
    "left_heel": 29, "right_heel": 30, "left_foot_index": 31, "right_foot_index": 32
}
# COCO关键点对应的索引
coco_keypoints_mapping = {
   
   
    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"
}
# 根据COCO关键点对应的索引位置构建MediaPipe关键点映射字典
coco_to_mediapipe_mapping 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hylan_J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值