网易首页 > 网易号 > 正文 申请入驻

MediaPipe 集成人脸识别,人体姿态评估,人手检测模型

0
分享至

上期文章,我们介绍了MediaPipe Holistic的基础知识,了解到MediaPipe Holistic分别利用MediaPipe Pose,MediaPipe Face Mesh和MediaPipe Hands中的姿势,面部和手界标模型来生成总共543个界标(每手33个姿势界标,468个脸部界标和21个手界标)。

对于姿势模型的精度足够低以至于所得到的手的ROI仍然不够准确的情况,但我们运行附加的轻型手重新裁剪模型,该模型起着的作用,并且仅花费了手模型推断时间的10%左右。

MediaPipe

MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 、Google Lens、ARCore、Google Home 以及 ,都已深度整合了 MediaPipe。

MediaPipe图片检测

作为一款跨平台框架,MediaPipe 不仅可以被部署在服务器端,更可以在多个移动端 (安卓和苹果 iOS)和嵌入式平台(Google Coral 和树莓派)中作为设备端机器学习推理 (On-device Machine Learning Inference)框架。

一款多媒体机器学习应用的成败除了依赖于模型本身的好坏,还取决于设备资源的有效调配、多个输入流之间的高效同步、跨平台部署上的便捷程度、以及应用搭建的快速与否。

基于这些需求,谷歌开发并开源了 MediaPipe 项目。除了上述的特性,MediaPipe 还支持 TensorFlow 和 TF Lite 的推理引擎(Inference Engine),任何 TensorFlow 和 TF Lite 的模型都可以在 MediaPipe 上使用。同时,在移动端和嵌入式平台,MediaPipe 也支持设备本身的 GPU 加速。

MediaPipe 主要概念

MediaPipe 的核心框架由 C++ 实现,并提供 Java 以及 Objective C 等语言的支持。MediaPipe 的主要概念包括数据包(Packet)、数据流(Stream)、计算单元(Calculator)、图(Graph)以及子图(Subgraph)。数据包是最基础的数据单位,一个数据包代表了在某一特定时间节点的数据,例如一帧图像或一小段音频信号;数据流是由按时间顺序升序排列的多个数据包组成,一个数据流的某一特定时间戳(Timestamp)只允许至多一个数据包的存在;而数据流则是在多个计算单元构成的图中流动。MediaPipe 图是有向的——数据包从数据源(Source Calculator或者 Graph Input Stream)流入图直至在汇聚结点(Sink Calculator 或者 Graph Output Stream) 离开。

MediaPipe 的核心框架

若我们想使用MediaPipe,
首先,在我们的电脑cmd命令框中输入
python –m pip install MediaPipe安装第三方模型,
然后我们便可以使用代码来进行图片或者视频的检测了,
此模型最主要的优点是不需要我们下载预训练模型,只是安装上其mediapipe包即可

MediaPipe 图片检测

Mediapipe 模型的图片代码检测import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_holistic = mp.solutions.holistic

file = '4.jpg'
holistic = mp_holistic.Holistic(static_image_mode=True)

image = cv2.imread(file)
image_hight, image_width, _ = image.shape
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = holistic.process(image)

首先,我们导入需要的第三方库,并配置一下需要画图的点的尺寸,线的尺寸以及颜色等,这些信息都可以自行修改,这里我们直接引用官方的配置进行设计(mp.solutions.drawing_utils函数)

然后定义一个holistic检测模型函数

mp_holistic = mp.solutions.holistic

file = '4.jpg'
holistic = mp_holistic.Holistic(static_image_mode=True)

然后使用我们前期介绍的opencv的相关知识从系统中读取我们需要检测的图片,并获取图片的尺寸

image = cv2.imread(file)
image_hight, image_width, _ = image.shape

由于OpenCV默认的颜色空间是BGR,但是一般我们说的颜色空间为RGB,这里mediapipe便修改了颜色空间

然后使用我们前面建立的holistic检测模型,对图片进行检测即可

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = holistic.process(image)

模型检测完成后的结果保存在results里面,我们需要访问此结果,并把检测到的人脸,人手,以及姿态评估的数据点画在原始检测的图片上,以便查看

if results.pose_landmarks:
print(
f'Nose coordinates: ('
f'{results.pose_landmarks.landmark[mp_holistic.PoseLandmark.NOSE].x * image_width}, '
f'{results.pose_landmarks.landmark[mp_holistic.PoseLandmark.NOSE].y * image_hight})'
)
annotated_image = image.copy()
mp_drawing.draw_landmarks(
annotated_image, results.face_landmarks, mp_holistic.FACE_CONNECTIONS)
mp_drawing.draw_landmarks(
annotated_image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
mp_drawing.draw_landmarks(
annotated_image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
mp_drawing.draw_landmarks(
annotated_image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS)

这里我们打印了图片检测的结果,并分别画出人脸检测模型数据,人左右手的检测数据,以及人体姿态检测数据

#cv2.imshow('annotated_image',annotated_image)
cv2.imwrite('4.png', annotated_image)
cv2.waitKey(0)
holistic.close()

画图完成后,我们可以显示图片方便查看,也可以直接使用OpenCV的imwrite 函数进行结果图片的保存,最后只需要close holistic检测模型,这里在检测多人的时候出现了问题,只是检测了单人,我们后期研究

图片检测

Mediapipe 模型的视频代码检测

当然,我们也可以直接在视频里面进行Mediapipe的模型检测

import cv2
import time
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_holistic = mp.solutions.holistic

holistic = mp_holistic.Holistic(
min_detection_confidence=0.5, min_tracking_confidence=0.5)

首先跟图片检测一致,我们建立一个holistic检测模型,然后便可以打开摄像头进行模型的检测

cap = cv2.VideoCapture(0)
time.sleep(2)
while cap.isOpened():
success, image = cap.read()
if not success:
print("Ignoring empty camera frame.")
continue
image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
image.flags.writeable = False
results = holistic.process(image)

首先我们打开默认摄像头,并从摄像头中获取检测的实时图片

cap = cv2.VideoCapture(0)
while cap.isOpened():
success, image = cap.read()

检测到图片后,我们便可以直接使用图片检测的步骤,进行模型的检测

image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
image.flags.writeable = False
results = holistic.process(image)

这里我们使用到了cv2.flip(image, 1)图片翻转函数来增强数据图片,由于我们摄像头中的影像跟我们是镜像关系

cv2.flip(image, 1)

使用此函数便可以镜像我们的图片影像,最后把图片赋值给holistic模型进行检测

image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
mp_drawing.draw_landmarks(
image, results.face_landmarks, mp_holistic.FACE_CONNECTIONS)
mp_drawing.draw_landmarks(
image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
mp_drawing.draw_landmarks(
image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
mp_drawing.draw_landmarks(
image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS)
cv2.imshow('MediaPipe Holistic', image)
if cv2.waitKey(5) & 0xFF == ord('q'):
break
holistic.close()
cap.release()

检测完成后,我们便可以把数据实时进行绘制,以便在视频中实时进行结果的查看

视频检测

这里由于默认设置,线条与点的尺寸不太合适,我们后期慢慢优化

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
朱立伦打破沉默,蓝营确认12人,王金平三箭齐发,郑丽文大势已成

朱立伦打破沉默,蓝营确认12人,王金平三箭齐发,郑丽文大势已成

共工之锚
2026-07-25 00:14:07
成本3亿,《抓特务》全球票房:内地1.19亿,新西兰3.5万,低!

成本3亿,《抓特务》全球票房:内地1.19亿,新西兰3.5万,低!

夜深爱杂谈
2026-07-24 19:49:03
中国公开赛:国羽占据女单四强半壁江山!陈雨菲2-1复仇前世界第一

中国公开赛:国羽占据女单四强半壁江山!陈雨菲2-1复仇前世界第一

钉钉陌上花开
2026-07-24 18:10:16
41岁詹姆斯第五冠有戏!76人15+2阵容名单出炉,3大优势剑指冠军

41岁詹姆斯第五冠有戏!76人15+2阵容名单出炉,3大优势剑指冠军

锅子篮球
2026-07-25 02:08:22
突然火了,已售罄!“荷兰弟”来中国第一天,买了一条100多元五分裤……

突然火了,已售罄!“荷兰弟”来中国第一天,买了一条100多元五分裤……

都市快报橙柿互动
2026-07-24 19:15:32
和吴越再婚真相大白后,辛柏青首次谈及朱媛媛,一句话让全场泪崩

和吴越再婚真相大白后,辛柏青首次谈及朱媛媛,一句话让全场泪崩

春日筆記
2026-07-23 19:35:10
调查285名抽烟的老人,发现:爱抽烟的老人,背后有6点原因

调查285名抽烟的老人,发现:爱抽烟的老人,背后有6点原因

健康科普365
2026-07-10 15:59:49
章建平最新布局股曝光,是它!半导体产业链多股大涨!这些机会下周稳了?

章建平最新布局股曝光,是它!半导体产业链多股大涨!这些机会下周稳了?

证券市场周刊
2026-07-24 20:34:19
19岁巴萨天才全款给女友提奔驰,年薪800万

19岁巴萨天才全款给女友提奔驰,年薪800万

喜欢历史的阿繁
2026-07-25 00:07:23
演员钟雅婷收到北大研究生录取通知书冲上热搜,此前北大发布录取名单,其被拟录取到政治学专业;曾与赵露思、陈伟霆出演《许我耀眼》

演员钟雅婷收到北大研究生录取通知书冲上热搜,此前北大发布录取名单,其被拟录取到政治学专业;曾与赵露思、陈伟霆出演《许我耀眼》

极目新闻
2026-07-24 10:14:39
这4种“皮肤病”,十有八九跟糖尿病有关,很多人不知道

这4种“皮肤病”,十有八九跟糖尿病有关,很多人不知道

岐黄传人孙大夫
2026-07-23 12:03:32
黔驴技穷!美国突然宣布了!

黔驴技穷!美国突然宣布了!

故事终将光明磊落
2026-07-24 11:44:05
詹姆斯没有走捷径!加盟76人绝非抱团取巧,名记:东部10队能争冠

詹姆斯没有走捷径!加盟76人绝非抱团取巧,名记:东部10队能争冠

锅子篮球
2026-07-25 02:48:49
上海人注意了!这3个区域将有大动作,未来将会成为价值顶流

上海人注意了!这3个区域将有大动作,未来将会成为价值顶流

亿通电子游戏
2026-07-25 01:45:59
“妈妈,我屁股好痒”,妈妈半夜发现女儿小屁屁上竟有“白色粉末”……送医检查后倒吸一口凉气

“妈妈,我屁股好痒”,妈妈半夜发现女儿小屁屁上竟有“白色粉末”……送医检查后倒吸一口凉气

佛山电视台小强热线
2026-07-24 21:42:42
中国斯诺克晋级第7人!常冰玉横扫世界冠军创纪录,新赛季3进正赛

中国斯诺克晋级第7人!常冰玉横扫世界冠军创纪录,新赛季3进正赛

刘姚尧的文字城堡
2026-07-24 21:36:36
谢贤头七刚过,谢霆锋就奔赴青岛准备演唱会,一身黑衣低调肃穆

谢贤头七刚过,谢霆锋就奔赴青岛准备演唱会,一身黑衣低调肃穆

悦君兮君不知
2026-07-24 03:52:01
时隔2年出山!59岁克洛普官宣出任德国队新帅,签约4年,首秀确定

时隔2年出山!59岁克洛普官宣出任德国队新帅,签约4年,首秀确定

我爱英超
2026-07-24 17:13:18
乌军新司令语出惊人:顿巴斯人是苏联余孽,俄罗斯根本不配存在

乌军新司令语出惊人:顿巴斯人是苏联余孽,俄罗斯根本不配存在

经纬戎韬
2026-07-24 18:35:13
万万没想到,欧洲人不是不用空调,而是压根就没见过真正的空调

万万没想到,欧洲人不是不用空调,而是压根就没见过真正的空调

壹只灰鸽子
2026-07-23 09:59:56
2026-07-25 05:31:00
人工智能研究所AI
人工智能研究所AI
python人工智能,大数据,人生苦短,我用python
153文章数 777关注度
往期回顾 全部

科技要闻

中国等了90年,王虹邓煜同时摘下菲尔兹奖

头条要闻

西安一私立幼儿园被当地转普惠 园方损失超2000万元

头条要闻

西安一私立幼儿园被当地转普惠 园方损失超2000万元

体育要闻

哈登又发福几个围度!美媒嘲讽

娱乐要闻

张凌赫公主抱王楚然,比工业糖精好嗑

财经要闻

长鑫科技会成为下一个“中石油”吗?

汽车要闻

吉利的方盒子:来晚了,但打磨得刚好

态度原创

手机
游戏
亲子
旅游
公开课

手机要闻

iQOO 15 mini确认存在过,Neo新机或8月发

PS网络全球大崩溃!博主讽刺:服务器也换数字版了

亲子要闻

龙宝过生日收到好多礼物,仪式感十足,是家人对你满满的爱

旅游要闻

云南深山江边一座古镇,一场江上断桥大战,直接改写西南千年历史

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版