用于人体姿势估计的 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 一起安装。
安装步骤
我正在使用 Anaconda 环境来安装运行 MediaPipe 人体姿势估计所需的所有软件包。
打开终端并使用以下命令创建 Anaconda 环境。更新 pip (可选):拥有最新版本的 pip 是一个很好的做法。使用以下命令更新它:
conda create --name mediapipe python=3.11
conda activate mediapipe
python3 -m pip install --upgrade pip
3. 安装MediaPipe:
激活虚拟环境后,运行以下命令:
pip install mediapipe
为了确保正确安装 MediaPipe,请运行以下命令。
python3
>>> import mediapipe as mp
MediaPipe 的正确安装
4. 安装OpenCV
使用以下命令安装 OpenCV,因为我们在多个步骤中都需要它。
pip install opencv-python
这是我在 Anaconda 虚拟环境中安装的内容。
Package Version
----------------------- --------
absl-py 2.0.0
attrs 23.1.0
cffi 1.16.0
contourpy 1.2.0
cycler 0.12.1
flatbuffers 23.5.26
fonttools 4.47.0
kiwisolver 1.4.5
matplotlib 3.8.2
mediapipe 0.10.9
numpy 1.26.2
opencv-contrib-python 4.8.1.78
opencv-python 4.8.1.78
packaging 23.2
Pillow 10.1.0
pip 23.3.2
protobuf 3.20.3
pycparser 2.21
pyparsing 3.1.1
PyQt6 6.5.2
PyQt6-3D 6.5.0
PyQt6-Charts 6.5.0
PyQt6-DataVisualization 6.5.0
PyQt6-NetworkAuth 6.5.0
PyQt6-sip 13.5.2
PyQt6-WebEngine 6.5.0
python-dateutil 2.8.2
setuptools 68.2.2
six 1.16.0
sounddevice 0.4.6
wheel 0.41.2
脚本:
MediaPipe 模块中用于姿势估计的默认模型mp.solutions.pose称为BlazePose。 BlazePose 能够实时检测单人和多人的 33 个身体标志。它的设计轻巧,同时仍提供高精度,这使其能够跨不同平台(包括移动和桌面)在设备上高效运行。
import os
import cv2
import mediapipe as mp
input_video_path = '/Users/prajendr/Downloads/test_data.mp4'
mediapipe_outdir = '/Users/prajendr/leaddatascientist/data/mediapipe_output/'
output_video_path = mediapipe_outdir + 'video.mp4'
if not os.path.exists(mediapipe_outdir):
os.makedirs(mediapipe_outdir)
# Initialize MediaPipe Pose.
mp_pose = mp.solutions.pose
pose = mp_pose.Pose()
# Initialize MediaPipe drawing module for annotations.
mp_drawing = mp.solutions.drawing_utils
# Open the local video file.
cap = cv2.VideoCapture(input_video_path)
# Get video properties for output file.
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
# Define the codec and create VideoWriter object to save the output video.
out = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (frame_width, frame_height))
while cap.isOpened():
success, image = cap.read()
if not success:
break
# Convert the BGR image to RGB and process it with MediaPipe Pose.
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = pose.process(image)
# Draw the pose annotations on the image.
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
if results.pose_landmarks:
mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
# Write the frame into the output file.
out.write(image)
# # Display the annotated image (optional, can be commented out).
# cv2.imshow('MediaPipe Pose', image)
# # Break the loop when 'q' is pressed.
# if cv2.waitKey(1) & 0xFF == ord('q'):
# break
# Release resources.
cap.release()
out.release()
cv2.destroyAllWindows()
运行步骤:
设置视频路径:更改input_video_path本地视频文件的路径以及output_video_path要保存输出视频的位置。
视频捕获和写入器:脚本从输入视频中读取帧并初始化一个cv2.VideoWriter对象以将处理后的帧写入输出视频。
处理每一帧:对于每一帧,将其转换为 RGB,使用 MediaPipe Pose 进行处理,然后绘制姿势地标。
保存输出:每个带注释的帧都会写入输出视频文件。
显示和退出:处理后的帧显示在窗口中。按“q”提前退出。此步骤是可选的,如果不需要,可以删除。
清理:释放视频捕获和写入对象,并销毁所有 OpenCV 窗口。
· END ·
HAPPY LIFE
本文仅供学习交流使用,如有侵权请联系作者删除