当前位置:   article > 正文

基于 Google MediaPipe 进行人体姿势估计演示

基于 Google MediaPipe 进行人体姿势估计演示

用于人体姿势估计的 MediaPipe 演示

MediaPipe简介

MediaPipe是一个开源框架,用于构建跨平台、多模式应用机器学习管道。它由 Google 开发,旨在促进基于机器学习的功能的快速开发和部署,特别关注音频、视频和时间序列数据。

我可以将 MediaPipe 用于商业用途来运营我的业务吗?

我们可以将MediaPipe用于商业目的。 MediaPipe 是根据 Apache License 2.0 发布的开源框架,这是一种宽松的自由软件许可证。这意味着我们可以根据许可条款使用、修改和分发该软件,包括用于商业用途。MediaPipe 可以成为商业项目的强大工具。尽管如此,理解并遵守许可条款、评估应用程序的技术适用性并注意法律和监管因素仍然很重要。

我可以在 CPU 计算机上运行 MediaPipe 吗?

我们可以在 CPU 上运行 MediaPipe。MediaPipe 被设计为跨平台且灵活,使其可以在各种硬件配置上运行,包括标准 CPU。始终支持 GPU 或 TPU,使用此类硬件可以增强性能,特别是对于更复杂的模型或实时应用程序。

我可以在 macOS 上运行 MediaPipe 吗?

我们可以在 macOS 上运行 MediaPipe。MediaPipe 设计为跨平台,支持各种操作系统,包括 macOS、Windows、Linux 以及 Android 和 iOS 等移动平台。

当我们安装 MediaPipe 时,是否会下载预训练的权重?

当我们使用 pip 安装 MediaPipe 时,它会随包一起下载预先训练的模型权重。这是因为 MediaPipe 的模型(包括姿势估计模型 BlazePose)旨在以最少的设置“开箱即用”。模型权重捆绑在 MediaPipe 包中,允许我们在安装后立即使用模型,无需任何额外的步骤来下载权重。

macOS 上 MediaPipe 的安装步骤

机器配置 — macOS,版本 — 13.6.1,Mac 中的总 RAM 为 16.0 GB。要在 macOS 上安装 MediaPipe,请按照以下步骤操作。请注意,该过程主要涉及设置Python环境并通过pip安装MediaPipe包。这是详细的演练:

先决条件

  • Python:确保我们已安装 Python。MediaPipe 与 Python 3.6 或更高版本配合良好。我们可以通过python3 --version在终端中运行来检查我们的 Python 版本。我的 conda 环境中安装的当前 Python 版本是 Python 3.11.6。

  • pip:确保已安装 pip(Python 包管理器)。如果没有,我们可以从Python 官方网站将其与 Python 一起安装。

安装步骤

  1. 我正在使用 Anaconda 环境来安装运行 MediaPipe 人体姿势估计所需的所有软件包。

  2. 打开终端并使用以下命令创建 Anaconda 环境。更新 pip (可选):拥有最新版本的 pip 是一个很好的做法。使用以下命令更新它:

  1. conda create --name mediapipe python=3.11
  2. conda activate mediapipe
  3. python3 -m pip install --upgrade pip

3. 安装MediaPipe:

激活虚拟环境后,运行以下命令:

pip install mediapipe

为了确保正确安装 MediaPipe,请运行以下命令。

  1. python3
  2. >>> import mediapipe as mp

4381547a9350ff1cc8c989d5735c9c77.jpeg

MediaPipe 的正确安装

4. 安装OpenCV

使用以下命令安装 OpenCV,因为我们在多个步骤中都需要它。

pip install opencv-python

这是我在 Anaconda 虚拟环境中安装的内容。

  1. Package Version
  2. ----------------------- --------
  3. absl-py 2.0.0
  4. attrs 23.1.0
  5. cffi 1.16.0
  6. contourpy 1.2.0
  7. cycler 0.12.1
  8. flatbuffers 23.5.26
  9. fonttools 4.47.0
  10. kiwisolver 1.4.5
  11. matplotlib 3.8.2
  12. mediapipe 0.10.9
  13. numpy 1.26.2
  14. opencv-contrib-python 4.8.1.78
  15. opencv-python 4.8.1.78
  16. packaging 23.2
  17. Pillow 10.1.0
  18. pip 23.3.2
  19. protobuf 3.20.3
  20. pycparser 2.21
  21. pyparsing 3.1.1
  22. PyQt6 6.5.2
  23. PyQt6-3D 6.5.0
  24. PyQt6-Charts 6.5.0
  25. PyQt6-DataVisualization 6.5.0
  26. PyQt6-NetworkAuth 6.5.0
  27. PyQt6-sip 13.5.2
  28. PyQt6-WebEngine 6.5.0
  29. python-dateutil 2.8.2
  30. setuptools 68.2.2
  31. six 1.16.0
  32. sounddevice 0.4.6
  33. wheel 0.41.2

脚本:

MediaPipe 模块中用于姿势估计的默认模型mp.solutions.pose称为BlazePose。 BlazePose 能够实时检测单人和多人的 33 个身体标志。它的设计轻巧,同时仍提供高精度,这使其能够跨不同平台(包括移动和桌面)在设备上高效运行。

  1. import os
  2. import cv2
  3. import mediapipe as mp
  4. input_video_path = '/Users/prajendr/Downloads/test_data.mp4'
  5. mediapipe_outdir = '/Users/prajendr/leaddatascientist/data/mediapipe_output/'
  6. output_video_path = mediapipe_outdir + 'video.mp4'
  7. if not os.path.exists(mediapipe_outdir):
  8. os.makedirs(mediapipe_outdir)
  9. # Initialize MediaPipe Pose.
  10. mp_pose = mp.solutions.pose
  11. pose = mp_pose.Pose()
  12. # Initialize MediaPipe drawing module for annotations.
  13. mp_drawing = mp.solutions.drawing_utils
  14. # Open the local video file.
  15. cap = cv2.VideoCapture(input_video_path)
  16. # Get video properties for output file.
  17. frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  18. frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  19. fps = int(cap.get(cv2.CAP_PROP_FPS))
  20. # Define the codec and create VideoWriter object to save the output video.
  21. out = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (frame_width, frame_height))
  22. while cap.isOpened():
  23. success, image = cap.read()
  24. if not success:
  25. break
  26. # Convert the BGR image to RGB and process it with MediaPipe Pose.
  27. image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  28. results = pose.process(image)
  29. # Draw the pose annotations on the image.
  30. image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
  31. if results.pose_landmarks:
  32. mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
  33. # Write the frame into the output file.
  34. out.write(image)
  35. # # Display the annotated image (optional, can be commented out).
  36. # cv2.imshow('MediaPipe Pose', image)
  37. # # Break the loop when 'q' is pressed.
  38. # if cv2.waitKey(1) & 0xFF == ord('q'):
  39. # break
  40. # Release resources.
  41. cap.release()
  42. out.release()
  43. cv2.destroyAllWindows()

运行步骤:

  1. 设置视频路径:更改input_video_path本地视频文件的路径以及output_video_path要保存输出视频的位置。

  2. 视频捕获和写入器:脚本从输入视频中读取帧并初始化一个cv2.VideoWriter对象以将处理后的帧写入输出视频。

  3. 处理每一帧:对于每一帧,将其转换为 RGB,使用 MediaPipe Pose 进行处理,然后绘制姿势地标。

  4. 保存输出:每个带注释的帧都会写入输出视频文件。

  5. 显示和退出:处理后的帧显示在窗口中。按“q”提前退出。此步骤是可选的,如果不需要,可以删除。

  6. 清理:释放视频捕获和写入对象,并销毁所有 OpenCV 窗口。

·  END  ·

HAPPY LIFE

4d6c9b8b33ff7366ed9e2a419ac7fe11.png

本文仅供学习交流使用,如有侵权请联系作者删除

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/280029
推荐阅读
相关标签
  

闽ICP备14008679号