窝牛号

MediaPipe Face Detection可运行在移动设备上的亚毫秒级人脸检测

MediaPipe人脸检测

MediaPipe人脸检测是一种超快速的人脸检测解决方案,具有6个界标和多人脸支持。它基于BlazeFace,BlazeFace是为移动GPU推理量身定制的轻巧且性能良好的面部检测器。检测器的超实时性能使其可应用于需要准确地关注面部区域作为其他任务特定模型:

例如

1、3D面部关键点或几何估计MediaPipe Face Mesh

2、面部特征或表情分类,以及面部区域分割等

BlazeFace使用了一个轻量级的特征提取网络,该网络受MobileNetV1 / V2的启发,但与MobileNetV1 / V2不同,该网络可以有效运行在移动设备上,且速度极快,该模型是从Single Shot MultiBox Detector(SSD)修改而来的GPU友好锚定方案,以及替代非最大抑制的改进的平局分辨率策略。

下图为BlazeFace的一些框图,关于BlazeFace的详细细节,可以下载BlazeFace的官方论文进行查看

BlazeFace

MediaPipe人脸检测代码示例:

当然在进行本期文章前,首先需要安装MediaPipe,安装MediaPipe可以直接在cmd命令框中输入如下

Python –m pip install MediaPipe,等待系统自动安装即可,这里需要提醒一下由于最新的MediaPipe版本不再支持python3.7以下的版本,所以MediaPipe的代码最好运行在python3.7以上版本

import cv2 import mediapipe as mp mp_face_detction = mp.solutions.face_detection mp_drawing = mp.solutions.drawing_utils

首先我们import需要的mediapipe库,然后定义一个face人脸检测模型

mp_face_detction = mp.solutions.face_detection 其函数输入只有一个参数: 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]通过图像的宽度和高度将其标准化。

转换图片到RGB颜色空间 results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) 39;/tmp/annotated_image&39;.png&39;annotated_image& 视频人脸检测 cap = cv2.VideoCapture(0) with mp_face_detection.FaceDetection( min_detection_confidence=0.5) as face_detection: while cap.isOpened(): success, image = cap.read() if not success: continue BGR 图片转化到 RGB. image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB) 画出检测到的人脸 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) cv2.imshow(&39;, image) if cv2.waitKey(5) & 0xFF == ord(&39;): break cap.release()

代码截图

当检测到人脸后,我们设置图片的可写标签为true,以便我们更改图片,然后我们遍历检测到的人脸数据,并把人脸边框已经人脸6点检测点显示到原始图片上,然后循环检测视频帧中的人脸图片,这样便可以实现了人脸视频检测。

有关MediaPipe的其他文章

当然mediapipe不仅可以进行人脸的检测,还可以提供更加详细的人脸识别数据,更多文章,请参考:

利用机器学习,进行人体33个2D姿态检测与评估

利用机器学习,进行人手的21个3D手关节坐标检测

利用机器学习进行人脸468点的3D坐标检测,并生成3D模型

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

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1