使用MediaPipe Holistic进行Python面部和手部识别
MediaPipe是一个跨平台的开源机器学习框架,用于创建复杂和多模态的应用机器学习流程。它可以用于创建先进的机器学习模型,如人脸识别、多手追踪、目标检测和跟踪等多种应用。MediaPipe仅作为一个中间人,用于管理在任何平台上运行的系统的模型实现,使开发者能够专注于对模型的实验,而不是系统。本文将介绍如何使用MediaPipe holistic来估计全身姿势。该模型将识别我们身体的所有面部标志、手部和位置。
安装和导入库
在访问模型时,使用MediaPipe,在访问相机或静态图片进行检测时,使用OpenCV。
!pip install mediapipe opencv-python
import mediapipe as mp
import cv2
MediaPipe设置
首先,导入绘图工具MediaPipe。它将允许我们从全面的模型中提取检测结果。之后导入MediaPipe完整模型。请记住,MediaPipe库有几种ML解决方案。您可以使用代码测试这些模型,只需输入mp.solutions。当您点击一个新的单元格时,您将能够看到该库提供的模型。
示例
mp_drawing = mp.solutions.drawing_utils
mp_holistic = mp.solutions.holistic
Using OpenCV to load a picture
from google.colab.patches import cv2_imshow
url = 'https://images.unsplash.com/photo-1599447292180-45fd84092ef0?ixlib=rb4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&
w=1887&q=80'
image = cv2.imread(url)
输出
图片可以在这里找到。你也可以使用一张你自己的照片。
检测地标
我们首先利用分段来初始化整体模型。我们使用imread技术加载图片。
with mp_holistic.Holistic(
static_image_mode=True, model_complexity=2, enable_segmentation=True, refine_face_landmarks=True) as holistic:
image = cv2.imread("/content/sample_data/alex-shaw-kh9XApwKtm0-unsplash.jpg")
下一步是改变我们图片的颜色。为此,我们使用cvtColor函数。在使用OpenCV时,我们以BGR格式接收图片,但我们希望将图像转换为RGB格式的整体模型。MediaPipe仅支持此格式的图片。
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image_recolored = holistic.process(image)
现在,让我们开始画地标。
示例
#For the facial landmarks
mp_drawing.draw_landmarks(image, image_recolored.face_landmarks, mp_holistic.FACEMESH_TESSELATION)
#For the pose landmarks
mp_drawing.draw_landmarks(image, image_recolored.pose_landmarks, mp_holistic.POSE_CONNECTIONS)
#For the left-hand landmark:
mp_drawing.draw_landmarks(image,
image_recolored.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
#For the right-hand landmark:
mp_drawing.draw_landmarks(image, image_recolored.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS)
cv2_imshow(image)
输出
结论
本教程介绍了使用MediaPipe holistic实现全身姿势估计。使用Python,我们能够创建一个全面的模型。您可以通过尝试将该模型应用于从计算机网络摄像头获得的实时视频数据来扩展此实验。