使用 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)
输出
图片可以在这里找到 这里 你也可以使用你自己的照片。
检测标志点
我们首先使用 `segment` 来初始化 holistic 模型。我们使用 `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 格式将图片传递给 holistic 模型。这是 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 创建了一个完整的模型。您可以通过尝试将模型应用于从计算机网络摄像头获取的实时视频数据来扩展此实验。
广告