一、MediaPipe概述

MediaPipe 为直播和流媒体提供开源跨平台、可定制的 ML 解决方案。MediaPipe 是谷歌开发的开源框架。它是一个非常轻量级的多平台机器学习解决方案框架,可以在 CPU 上实时运行。

支持较多场景的检测

人脸检测、面部网格、手势识别、部分姿势识别、人体姿势估计(可以给出33个关键点的3D坐标)、目标检测跟踪等等。

还支持如下语言:Android    iOS    C++    Python    JS    Coral

但不是每种语言所有功能都具备的。

详情参考文档地址:Home - mediapipehttps://google.github.io/mediapipe/

二、人体姿势估计概述

1、人体姿势估计

人体姿态估计表示人体的图形骨架。它有助于分析人类的活动。骨架基本上是一组描述人的姿势的坐标。每个关节都是一个单独的坐标,称为关键点或姿势地标。关键点之间的连接称为对。

通过姿势估计,我们能够跟踪人类在现实世界空间中的运动和活动。这开辟了广泛的应用可能性。它是一种强大的技术,有助于非常有效地构建复杂的应用程序。

2、人体姿势估计的应用

(1)人类活动估计

姿势估计可用于跟踪人类活动,例如步行、跑步、睡眠、饮酒。它提供了一些关于一个人的信息。活动估计可以增强安全和监视系统。

(2)运动转移

人体姿态估计最有趣的应用之一是运动转移。我们在电影或游戏中看到,3d 图形角色的身体运动就像真实的人类或动物。通过跟踪人体姿势,3d 渲染的图形可以通过人体的运动进行动画处理。

(3)机器人

为了训练机器人的运动,可以使用人体姿态估计。不是手动对机器人进行编程以遵循特定路径,而是使用人体姿势骨架来训练机器人的关节运动。

(4)游戏

如今,VR或虚拟现实游戏非常流行。在虚拟现实游戏中,3d 姿势由一个或多个摄像头估计,游戏角色根据人类的动作移动。

3、姿态估计模型

姿态估计模型主要有三类:

1.运动学模型:它是一种基于骨骼的模型,代表人体。

2.平面模型:平面模型是一种基于轮廓的模型,它使用人体周围的轮廓来表示人体形状。

3. 体积模型:体积模型创建人体的 3d 网格,表示人体的形状和外观。

4、姿势估计的类别

1. 2D 姿态估计:在 2d 姿态估计中,仅预测图像中每个地标的 x 和 y 坐标。它不提供有关骨架角度或物体或人体实例的旋转或方向的任何信息。

2. 3D 姿态估计: 3D 姿态估计允许我们预测人的螺旋位置。它为每个地标提供 x、y 和 z 坐标。通过 3d 姿态估计,我们可以确定人体骨骼每个关节的角度。

3、刚体姿态估计:刚体姿态估计也称为6D姿态估计。它提供有关人体姿势以及人体实例的旋转和方向的所有信息。

4. 单一姿态估计:在单一姿态估计模型中,只能在图像中预测一个人的姿态。

5. 多姿态估计:在多姿态估计中,可以在一张图像中同时预测多个人体姿态。

5、姿势估计的流程

姿态估计主要使用深度学习解决方案来预测人体姿态标志。它将图像作为输入,并为每个实例提供姿势界标作为输出。

姿态估计有两种方法,

1. 自下而上:在这种方法中,特定关键点的每个实例都在图像中进行预测,然后将一组关键点组合成最终的骨架。

2. 自上而下:在自上而下的方法中,首先在给定图像中检测对象/人,然后在该图像的每个裁剪对象实例中预测地标。

6、一些流行的姿势估计模型

1. OpenPose: OpenPose 是目前最流行的多人人体姿态估计方法之一。它是一种具有高精度关键点的开源实时多人检测。

2. DeepPose: DeepPose 使用深度神经网络来估计人体姿势。该架构捕获卷积层中的所有铰链和关节,然后是全连接层以形成这些层的一部分。

3. PoseNet: PoseNet 建立在 Tensorflow.js 之上。这是一个运行在移动设备和浏览器上的轻量级架构。

三、结合OpenCV进行人体姿势估计

1、代码参考

MediaPipe 在后端使用 TensorFlow lite。使用检测器首先在框架内定位人 (ROI)。然后它使用 ROI 裁剪帧作为 INPUT 并预测 ROI 内的地标/关键点。mediaPipe 姿态估计器共检测到 33 个关键点。

MediaPipe 姿态估计是一个单一的 3D 姿态估计器。它检测每个地标的 x、y 和 z 坐标。Z轴基本上是关于地标深度的信息。这意味着地标相对于其他地标与相机的距离或接近。

因为我使用的这个版本的opencv没有实现gui,所以是把识别的图片保存起来到文件夹内,否则是可以实时看到的。

# TechVidvan Human pose estimator
# import necessary packagesimport cv2
import mediapipe as mp# initialize Pose estimator
mp_drawing = mp.solutions.drawing_utils
mp_pose = mp.solutions.posepose = mp_pose.Pose(min_detection_confidence=0.5,min_tracking_confidence=0.5)# create capture object
cap = cv2.VideoCapture('C:\\Users\\xiaomao\\Desktop\\123.mp4')i = 0
while cap.isOpened():# read frame from capture object_, frame = cap.read()# try:# convert the frame to RGB formatRGB = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# process the RGB frame to get the resultresults = pose.process(RGB)print(results.pose_landmarks)# draw detected skeleton on the framemp_drawing.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)# show the final outputcv2.imwrite('C:\\Users\\zyh\\Desktop\\123456\\' + str(i) + '.jpg', frame)i = i+1cap.release()
cv2.destroyAllWindows()

2、结果预览

机器学习笔记 - MediaPipe了解 + 结合OpenCV进行人体姿势估计相关推荐

  1. 论文笔记--3D Human Pose Estimation with Spatial and Temporal Transformers(用空间和时间变换器进行三维人体姿势估计)

    用空间和时间变换器进行三维人体姿势估计 摘要   Transformer架构已经成为自然语言处理中的首选模型,现在正被引入计算机视觉任务中,如图像分类.物体检测和语义分割.然而,在人类姿势估计领域,卷 ...

  2. 有了TensorFlow.js,浏览器中也可以实时人体姿势估计

    翻译文章,内容有删减.原文地址:https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-te ...

  3. OpenCV中的姿势估计及3D效果(3D坐标轴,3D立方体)绘制

    OpenCV中的姿势估计及3D效果(3D坐标轴,3D立方体)绘制 1. 效果图 2. 原理 3. 源码 3.1 姿态估计后绘制3D坐标轴 3.2 姿态估计后绘制立方体 参考 这篇博客将延续上一篇博客: ...

  4. 无需3D运动数据训练,最新人体姿势估计方法达到SOTA | CVPR 2020

    作者 | Muhammed Kocabas 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 人体的运动对于理解人的行为是非常重要的.尽管目前已经在单图像3D姿势和动作估计方面取得 ...

  5. CVPR2020|无需3D运动数据训练,最新SOTA人体姿势估计方法

    点击我爱计算机视觉标星,更快获取CVML新技术 作者 | Muhammed Kocabas 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 人体的运动对于理解人的行为是非常重要的 ...

  6. python绘制图形沙漏_pytorch-pose一个用于二维人体姿势估计的PyTorch工具包。 - pytorch中文网...

    pytorch-pose PyTorch-Pose是2D单人姿态估计的一般流水线的PyTorch实现.其目的是为最流行的人体姿态数据库(如MPII人体姿态,LSP和FLIC)提供训练/推理/评估的接口 ...

  7. 从DeepNet到HRNet,这有一份深度学习“人体姿势估计”全指南

    大数据文摘出品 来源:blog.nanonets 作者:栾红叶.熊琰.周家乐.钱天培 从DeepNet到HRNet,这有一份深度学习"人体姿势估计"全指南 几十年来,人体姿态估计( ...

  8. 利用深度学习进行人体姿势估计--概述

    本文转载于原文链接 什么是姿势估计? 人体姿势估计和跟踪是一项计算机视觉任务,包括检测.关联和跟踪语义关键点.语义关键点的例子是 "右肩"."左膝 "或 &qu ...

  9. 基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 人体姿态估计是一个非常有趣的领域,如果我们能够将诸如棒球摆动 ...

  10. 基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)

    人体姿势骨架以图形格式表示人的方向.本质上,它是一组坐标,可以连接起来描述人的姿势.骨架中的每个坐标都被称为一个部分(或一个关节,或一个关键点).两个部分之间的有效连接称为一对(或分支).下面是一个人 ...

最新文章

  1. 英伟达开源行人生成/重识别代码
  2. anaconda+python3.6利用命令安装BeautifulSoup4-4.6.0
  3. java 词频_java程序:统计单词词频,
  4. 利用Quartz2D-contex绘制三角形
  5. Nginx的Mainline version、Stable version、Legacy version的版本区别
  6. java取文本首位_java – 从文本文件中读取的第一个字符:[复制]
  7. 洛谷1363——幻想迷宫(搜索)
  8. docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
  9. FreeMarker FTL标签
  10. 枚举类(Enumerated types)介绍
  11. 如何键盘锁定计算机,如何锁定电脑键盘或鼠标防止误操作
  12. Gif动图如何裁剪?收下这个图片在线裁剪工具
  13. 数据科学数据分析_使用数据科学进行营销分析
  14. jsp四大作用域介绍
  15. A2M峰会直击|闲鱼纳米镜——人人都是数据分析师
  16. 个人笔记使用(wolai,OneNote)
  17. 19.Eager模式
  18. 顶级科学家是哲学家,顶级investor是哲学家
  19. 邓白氏编码申请最后提交资料格式
  20. JARVISOJ RE

热门文章

  1. html缓存的图片放在哪里,浏览器图片缓存在哪
  2. 被syn攻击了怎么办,如何预防服务器被被syn攻击
  3. 我在舒舍的短租生活之旅
  4. 深入浅出SpringBoot2.x
  5. ios 判断打开相机权限_ios 判断是否有权限访问相机,相册,定位
  6. 工具使用,PS隐藏技能—对称绘画
  7. cisco思科 前言
  8. [UE4]材质中的UV理解(UV是什么)
  9. (计算机组成原理)第七章输入和输出系统-第三节3:I/O方式之DMA方式
  10. C语言杨辉三角前15行,C语言输出杨辉三角前n行(低时间复杂度)