Android MediaPipe人脸特征侦测

前言

前一偏博文“MediaPipe基本介绍”,MediaPipe提供了多种预训练的模型和工具,可以用于实现人脸侦测、手势辨识、姿势估计等应用。本文将介绍如何使用 MediaPipe在 Android Studio 中开发一个 face_landmarker 的范例,即利用 MediaPipe的人脸模型在相机画面中标记出人脸的特征点。

 

人脸特征范例

MediaPipe face landmarker 是一个用于侦测人脸特征点的工具,它可以在实时或静态图像中识别出 468 个人脸特征点,并提供三维座标讯息进行图像标注。

Android最低支援版本SDK 24也就是Android7.0以上,所以版本过低的装置无法使用,在Build.gradle的部分需要增加implementation 'com.google.mediapipe:tasks-vision:0.10.0',然后点选右上出现的Sync按钮进行同步,这样就可以使用MediaPipe SDK的指令。

在官方提供的MediaPipe Github 有提供不少范例可以参考,本篇博文使用face_landmarker范例,在终端机上输入指令git clone或Github网页上下载zip到电脑上,开启Example 点选 face_landmarker 档案夹,点进去后可以看到android、js及python,点开Android资料夹,使用Android Studio开起资料夹,开启后Android Studio会自动下载档案模型,等待资料下载即可执行APP。

 
内部可以配置参数:

num_faces:最多检测的人脸数
min_face_detection_confidence:人脸检测最小可信度
min_face_presence_confidence:人脸显示最小可信度
min_tracking_confidence:人脸追踪最小可信度
outout_face_blendshapes:是否输出混合形状(用于30人脸模型)
outout_facial_transformation_matrixes:是否输出变换矩阵
result_callback:异步回调结果

 


CameraFragment:取得相机的图片资料并显示在萤幕上。
FaceLandmarkerHelper:透过FaceLandmarker将脸部特征点取出,程式内提供图片及串流推论方式,将脸谱座标取出后,使用OverlayView进行图像标注,如下图所示。





透过人脸特征就可以获取正确的人脸,也可以替换其他种图示,例如卡通头套等等,也可以新增其他滤镜达到不一样的效果。整体上使用MediaPipe Face Landmarker执行速度满快,在小米11手机芯片为QUALCOMM Snapdragon 888执行速度约在20~40 ms的推论速度,已经非常方便使用。

小结

本文介绍了如何使用 MediaPipe在 Android Studio 中使用一个 face_landmarker 的范例,在相机画面中标记出人脸的特征点,希望MediaPipe可以帮助到你。期待下一篇博文吧!

参考资料

MediaPipe GitHub

 

► Q&A

问:mediapipe face_landmarker 适用于哪些平台?
答:mediapipe face_landmarker 支持 Android、iOS、Web 和桌面平台,并提供了相应的 SDK 和 API。

问:Mediapipe face_landmarker 如何处理多人脸场景?
答:可以同时处理多个人脸,但需要先使用 Mediapipe face_detection 模块来检测出每个人脸的位置和大小,然后将每个人脸的裁剪区域作为输入传递给 Mediapipe face_landmarker。

问:Mediapipe face_landmarker 的输出格式是什么?
答:输出格式是一个包含 468 个 landmarks 的列表,每个 landmark 是一个包含 x、y、z 和 visibility 四个字段的对象。x、y、z 分别表示 landmark 在图像坐标系中的水平、垂直和深度位置,取值范围为 -0.5 到 0.5。visibility 表示 landmark 的可见性,取值范围为 0 到 1。

问:Mediapipe face_landmarker 如何处理遮挡和表情变化?
答:使用了一种基于深度学习的方法,它可以根据训练数据集中的人脸形状和姿势变化来推测出遮挡或表情变化下的 landmark 位置。但是,如果遮挡程度过高或表情变化过于剧烈,则可能导致 landmark 的精度下降或不可见。

问:Mediapipe face_landmarker 有哪些应用场景?
答:可以用于各种需要人脸特征点信息的应用场景,例如人脸美化、人脸动画、人脸追踪、人脸识别、人脸表情分析等。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论