一起来学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整数索引01. 用于0选择最适合距离相机 2 米以内的人脸的短距离模型,以及1最适合 5 米内人脸的全距离模型。min_detection_confidence取值在[0.0, 1.0],表示为人脸检测模型中的最小置信度值被认为是成功的检测。默认为0.5。


  检测到的人脸集合,其中每个人脸都表示为一个检测原型消息,其中包含一个边界框和 6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳和左耳)。边界框由xminwidth(均由[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上的坐标,建立人脸图像及五官坐标矩阵可以辅助完成人脸识别项目,提高识别率。



相关文章
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
2708 0
|
机器学习/深度学习 vr&ar
一起来学MediaPipe(二)人脸面网格
一起来学MediaPipe(二)人脸面网格
2241 0
一起来学MediaPipe(二)人脸面网格
疲劳检测-闭眼检测(详细代码教程)
疲劳检测-闭眼检测(详细代码教程)
|
机器学习/深度学习 算法 Shell
【实操:人脸矫正】两次定位操作解决人脸矫正问题
【实操:人脸矫正】两次定位操作解决人脸矫正问题
842 0
|
机器学习/深度学习 编解码 人工智能
Reading Notes: Human-Computer Interaction System: A Survey of Talking-Head Generation
由于人工智能的快速发展,虚拟人被广泛应用于各种行业,包括个人辅助、智能客户服务和在线教育。拟人化的数字人可以快速与人接触,并在人机交互中增强用户体验。因此,我们设计了人机交互系统框架,包括语音识别、文本到语音、对话系统和虚拟人生成。接下来,我们通过虚拟人深度生成框架对Talking-Head Generation视频生成模型进行了分类。同时,我们系统地回顾了过去五年来在有声头部视频生成方面的技术进步和趋势,强调了关键工作并总结了数据集。 对于有关于Talking-Head Generation的方法,这是一篇比较好的综述,我想着整理一下里面比较重要的部分,大概了解近几年对虚拟人工作的一些发展和
|
机器学习/深度学习 算法 计算机视觉
yolov8人脸识别-脸部关键点检测(代码+原理)
yolov8人脸识别-脸部关键点检测(代码+原理)
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
视觉语言模型(VLM)实战:让 AI 真正“看懂”图像
在多模态人工智能的浪潮中,视觉语言模型(Vision-Language Models, VLMs) 正迅速成为连接图像与文本理解的核心技术。从为视障人士描述场景,到电商智能客服识别用户上传的商品图,再到自动驾驶系统理解交通标志语义——VLM 正在模糊“看”与“说”的边界。本文将带你深入 VLM 的工作原理、典型架构,并通过一个实际案例展示如何构建一个简单的图像问答系统。
|
人工智能 达摩院 计算机视觉
SHMT:体验 AI 虚拟化妆!阿里巴巴达摩院推出自监督化妆转移技术
SHMT 是阿里达摩院与武汉理工等机构联合研发的自监督化妆转移技术,支持高效妆容迁移与动态对齐,适用于图像处理、虚拟试妆等多个领域。
694 9
SHMT:体验 AI 虚拟化妆!阿里巴巴达摩院推出自监督化妆转移技术
|
机器学习/深度学习 人工智能 数据处理
AI计算机视觉笔记六:mediapipe测试
MediaPipe是由Google Research开发并开源的多媒体机器学习框架,已被集成到YouTube、Google Lens等重要产品中。该框架支持多种功能,如物体检测、自拍分割、头发分割、人脸检测、手部检测及运动追踪等。本文档将指导你通过Python环境搭建与测试MediaPipe,包括创建虚拟环境、安装依赖库,并进行手指骨骼识别测试。具体步骤涵盖环境配置、摄像头数据处理及结果显示。
2030 3
|
机器学习/深度学习 算法 vr&ar
深度学习之人脸关键点检测
人脸关键点检测的主要任务是识别并定位人脸图像中的特定关键点,例如眼睛的角点、眉毛的顶点、鼻子的底端、嘴角等。这些关键点不仅能提供面部结构的几何信息,还可以用于分析表情、识别个体,甚至检测面部姿势。
578 2