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

news2024/9/20 16:15:31

用于人体姿势估计的 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 是一个很好的做法。使用以下命令更新它:

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

4381547a9350ff1cc8c989d5735c9c77.jpeg

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()

运行步骤:

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

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

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

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

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

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

·  END  ·

HAPPY LIFE

4d6c9b8b33ff7366ed9e2a419ac7fe11.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1537379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高标准农业四情监测系统的应用范围

高标准农业四情监测系统的应用范围【TH-Q1】随着科技的不断进步,高标准农业四情监测系统已经逐渐成为现代农业的重要组成部分。这一系统能够实时监测土壤、气候、作物生长和病虫害情况,为农业生产提供精准的数据支持,从而提高农作物的产量和质…

小红书离线数仓提效新思路,提升百倍回刷性能

数据处理效率一直是大数据时代的核心话题,它推动着各类数据执行引擎持续迭代产品。从早期的 MapReduce,到今天的 Spark,各行业正不断演进其离线数仓技术架构。 现有以 Spark 为核心的数仓架构在处理大规模数据回刷方面已取得进展,…

第十节HarmonyOS 常用容器组件2-Counter

1、描述 计数器组件,提供相应的增加或者减少的计数操作。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 2、子组件 可以包含子组件。 3、接口 Counter() 从API version 9开始…

项目实战-开发工具入门/基本框架搭建/项目初始化/引入组件库

上周更新完了之前vue3的shopping项目,接下来,将会开启一个新的项目,效果是类似于移动端的一个伙伴匹配项目,今天这篇文章从需求分析到架构设计再到项目初始化,基本框架搭建几个部分来为大家详细介绍。 从这个项目开始…

java面试:常见的限流算法有哪些

1 什么是限流算法 限流算法是一种用于限制流量请求的频率或速率的算法,其目的是在高并发或大流量请求的情况下,保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。是一种系统保护…

linux之sed编辑器指令练习

目录 一、sed编辑器 二、sed使用案例 1.1 s命令(substitute替换) 一、sed编辑器 sed编辑器比交互式编辑器快的多,可以简化数据处理任务,sed编辑器并不会修改文件,只会将修改后的数据,输出。 二、sed使用案例 首先…

【国家计算机二级C语言】高分笔记

二叉树 参考 http://t.csdnimg.cn/ozVwT 数据库 SQL程序语言有四种类型,对数据库的基本操作都属于这四类,它们分别为;数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言…

【数据结构与算法】(18):树形选择排序:按照锦标赛的思想进行排序

🤡博客主页:Code_文晓 🥰本文专栏:数据结构与算法 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&…

yaml 语法和在线解析工具

文章目录 在线解析工具1. 简介2. 语法规则3. 数据类型3.1 数组:3.2对象:3.3 标量3.4 复合结构3.5 锚点3.5.1 单个锚点3.5.6 多个锚点 3.6 引号 参考 在线解析工具 工具1 工具2 1. 简介 Yaml是一种可读性高的数据标记语言,Yaml文件是一种配…

6 修改主机名和HOSTS文件

后期我们会配置多台服务器,那么每台服务器我们都会给定一个主机名,方便后期通过主机名进行访问。主机名的修改我们可以在安装操作系统时对其修改,如果忘记了,就可以修改配置文件完成,像后期我们进行虚拟机克隆后&#…

Docker常用命令练习

文章目录 Docker常用命令练习1.docker 基础命令2.镜像命令3.保存镜像4.加载镜像5.容器命令6.环境变量7. --rm8. --networkhost Docker常用命令练习 1.docker 基础命令 安装docker yum install docker启动docker systemctl start docker关闭docker systemctl stop docker重…

LeetCode-热题100:17.电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入: digits “23” 输出&a…

2024年【P气瓶充装】复审模拟考试及P气瓶充装操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 P气瓶充装复审模拟考试根据新P气瓶充装考试大纲要求,安全生产模拟考试一点通将P气瓶充装模拟考试试题进行汇编,组成一套P气瓶充装全真模拟考试试题,学员可通过P气瓶充装操作证考试全…

【阿里云物联网】上报设备数据

前言 MQTT客户端上传数据到阿里云服务端,并且能将数据显示出来。在此之前,我们先要懂得阿里云给设备管理划分的概念。首先是产品,所以在产品里要配置内容,产品下的设备才可以使用,比如主题大类都是在产品里面就可以查…

使用 Amazon SageMaker 微调 Llama 2 模型

本篇文章主要介绍如何使用 Amazon SageMaker 进行 Llama 2 模型微调的示例。 这个示例主要包括: Llama 2 总体介绍Llama 2 微调介绍Llama 2 环境设置Llama 2 微调训练 前言 随着生成式 AI 的热度逐渐升高,国内外各种基座大语言竞相出炉,在其基础上衍生出…

I2C芯片24C02/4/8/16(EEPROM)解读

一.原理图 24C01的硬件连接图如下: 二.24C0x系列芯片规格 三.24C0x芯片结构 下面简述EEPROM内部存储结构。 3.1 内部存储结构 根据24C02芯片的Datasheet描述,其内部存储结构应该如下图所示。 其它容量的EEPROM内部结构依此类推。 3.2 地址 3.2.1 器件…

BitMap介绍与应用

文章目录 BitMapBitMap介绍BitMap 结构RoaringBitmap 常见BitMapJava中的BitSetRedis中的BitMapClickHouse中的BitMap BitMap应用案例人群圈选 BitMap 场景一:(大部分开发面试都会遇到的一个问题) 有10亿个用户id (int类型),判断用户是否登…

Vue el-table 合并单元格

一般常见的就是下图这种的单列&#xff0c;上下重复进行合并。 有时候可能也会需要多行多列的合并。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

【LeetCode】--- 动态规划 集训(一)

目录 一、1137. 第 N 个泰波那契数1.1 题目解析1.2 状态转移方程1.3 解题代码 二、面试题 08.01. 三步问题2.1 题目解析2.2 状态转移方程2.3 解题代码 三、746. 使用最小花费爬楼梯3.1 题目解析3.2 状态转移方程3.3 解题代码 一、1137. 第 N 个泰波那契数 题目地址&#xff1a…

FloodFill算法——岛屿数量

文章目录 题目解析算法解析代码解析 题目解析 岛屿数量 题目依旧是熟悉的配方&#xff0c;熟悉的味道&#xff0c;还是那个0还是那个1还是那个二维矩阵&#xff0c;这时候BFS和DFS闻着味就来了&#xff0c;我们来看一下这个题目&#xff0c;这个题目也很容易理解如下图有一个…