一起来学MediaPipe(一)人脸及五官定位检测

简介: 一起来学MediaPipe(一)人脸及五官定位检测

image.png


前言


  在这里学习介绍一种快速完成人脸检测,实测检测FPS超越OpenCv自带 haarcascade 系列。 直接执行:


pip install mediapipe
复制代码



概述


  MediaPipe 人脸检测是一种超快的人脸检测解决方案,具有 6 个地标和多面支持。它基于BlazeFace,这是一种为移动 GPU 推理量身定制的轻量级且性能良好的人脸检测器。该探测器的超实时性能使其能够应用于任何需要准确的面部感兴趣区域作为其他特定任务模型的输入的实时取景器体验,例如 3D 面部关键点估计(例如,MediaPipe Face Mesh)、面部特征或表情分类,以及人脸区域分割。BlazeFace 使用轻量级特征提取网络,其灵感来自但不同于MobileNetV1/V2 ,这是一种由Single Shot MultiBox Detector (SSD)修改的 GPU 友好型锚方案(arxiv.org/abs/1512.02…



示例demo


  修改model_selection整数索引0或1. 用于0选择最适合距离相机 2 米以内的人脸的短距离模型,以及1最适合 5 米内人脸的全距离模型。min_detection_confidence取值在[0.0, 1.0],表示为人脸检测模型中的最小置信度值被认为是成功的检测。默认为0.5。


  检测到的人脸集合,其中每个人脸都表示为一个检测原型消息,其中包含一个边界框和 6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳和左耳)。边界框由xmin和width(均由[0.0, 1.0]图像宽度归一化)和ymin和(均由图像高度height归一化)组成。[0.0, 1.0]每个关键点由x和组成,分别由图像宽度和高度y归一化。[0.0, 1.0]


import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
# For webcam input:
cap = cv2.VideoCapture(0)
with mp_face_detection.FaceDetection(model_selection=0, 
                                     min_detection_confidence=0.5) as face_detection:
    while cap.isOpened():
        success, image = cap.read()
        if not success:
            print("Ignoring empty camera frame.")
            # If loading a video, use 'break' instead of 'continue'.
            continue
        # To improve performance, optionally mark the image as not writeable to
        # pass by reference.
        image.flags.writeable = False
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        results = face_detection.process(image)
        # Draw the face detection annotations on the image.
        image.flags.writeable = True
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        if results.detections:
            for detection in results.detections:
                mp_drawing.draw_detection(image, detection)
        # Flip the image horizontally for a selfie-view display.
        cv2.imshow('MediaPipe Face Detection', cv2.flip(image, 1))
        if cv2.waitKey(5) & 0xFF == 27:
            break
cap.release()
复制代码


使用单张图像进行检测可得如下测试效果:

image.pngimage.png

拓展


  我们可以在代码中检测到处理图像的shape=(480, 640, 3),经过归一化后检测数据映射到[0,1],在这里按照比例可以反归一化获取目标坐标在shape上的坐标,建立人脸图像及五官坐标矩阵可以辅助完成人脸识别项目,提高识别率。



相关文章
|
机器学习/深度学习 vr&ar
一起来学MediaPipe(二)人脸面网格
一起来学MediaPipe(二)人脸面网格
2474 0
一起来学MediaPipe(二)人脸面网格
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
2946 0
疲劳检测-闭眼检测(详细代码教程)
疲劳检测-闭眼检测(详细代码教程)
|
机器学习/深度学习 算法 Shell
【实操:人脸矫正】两次定位操作解决人脸矫正问题
【实操:人脸矫正】两次定位操作解决人脸矫正问题
971 0
|
小程序 数据安全/隐私保护
吐血整理的几十款小程序登陆界面【附完整代码】(一)
吐血整理的几十款小程序登陆界面【附完整代码】
14789 1
吐血整理的几十款小程序登陆界面【附完整代码】(一)
conda常用操作和配置镜像源
conda常用操作和配置镜像源
35741 0
|
8月前
|
机器学习/深度学习 人工智能 算法
首个2步LoRA!2步实现Qwen-Image-2512高质量图片生成
阿里智能引擎推出Qwen-Image-2512-Turbo,将扩散模型压缩至仅2步生成,提速40倍——5秒内输出4张2K图,效果媲美原模型。融合Reverse-KL蒸馏、热启动与对抗学习,显著提升细节与真实性。已开源,支持ModelScope、呜哩AI及ComfyUI。
2057 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
视觉语言模型(VLM)实战:让 AI 真正“看懂”图像
在多模态人工智能的浪潮中,视觉语言模型(Vision-Language Models, VLMs) 正迅速成为连接图像与文本理解的核心技术。从为视障人士描述场景,到电商智能客服识别用户上传的商品图,再到自动驾驶系统理解交通标志语义——VLM 正在模糊“看”与“说”的边界。本文将带你深入 VLM 的工作原理、典型架构,并通过一个实际案例展示如何构建一个简单的图像问答系统。
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
17130 1
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型

热门文章

最新文章