ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【AI十行代码系列】3.人脸关键点定位-MediaPipe Python

2021-12-28 21:31:47  阅读:315  来源: 互联网

标签:MediaPipe img AI self 十行 face 人脸 InputData


【TLAIP系列简介】Ten-Lines-AI-Projects

         现阶段有非常多优秀的开源的AI工程,为了有更好的可扩展性,接口往往设计得十分复杂,这需要投入一定的时间和精力来处理,对于不熟悉或者刚入门的小伙伴,这可能需要花很久。本系列设计的出发点也很纯粹,进一步降低小伙伴们挑选和使用轮子的时间,让更多小伙伴能更快地验证算法效果,算法满足效果了再扒开看看,不满意直接看下一个。有任何问题和建议欢迎随时评论,目前系列里的十行代码会按照下列方式进行:

import  关键py
1.定义好输入
2.网络初始化配置
3.开始跑并输出结果
4.可视化结果

        包含空格和一些必要的说明,估计正好十行。哈哈哈哈(不能再少了,再少我的强迫症就不能忍受了)。

        如果遇到什么很牛逼的AI工程或者自己不想跑的但是一眼看上去效果很好的工程,欢迎留言交流哈,有空可以一并整理到这个工程,一键可运行,无繁杂使用过程。


【正文】

        本文的主角依旧是谷歌大名鼎鼎的MediaPipe,相比于上一篇人体,人脸关键点定位的应用场景要多很多,除了可以直观地定位到人脸各部位外,在换脸、AR特效,甚至银行人脸认证等各个方面均有大量的应用。人脸相关的算法是目前已知算法中已落地场景最多的,同样,这个仓库入门也非常合适。惯例先放结果(完整仓库代码和测试视频、图片请直接拖到最后):

基于这套算法可以完成很多AR特效(这就需要美术资源了,图为谷歌官网示意图)

十行关键代码

正好十行,一行都不多,可以发现这个系列的这十行代码基本大同小异,蛤蛤。

from utils.face_mesh_mediapipe import InputData, InitFaceTracker, ShowResult

# 初始化输入源, file支持数字(相机)以及视频文件路径,图片路径或文件夹路径
input_data = InputData("test/face_tracking.mp4")  # input_data = InputData("test/imgs")
# 初始化人脸关键点追踪tracker
pose_track = InitFaceTracker(use_static_mode=input_data.use_img_list, faces_num=2)
# 获取图像以及结果的generator
run_pose_result = pose_track.run_face_tracking(input_data.get_next_img())
# 显示结果, ESC退出,图片模式按任意键继续
ShowResult(input_data.wait_key).show_result(run_pose_result)

下列标红的是和前几篇文章不太一样的配置。

InputData用来处理各种输入,目前兼容下列各种情况的输入(是不是很良心):

  • 系统相机,输入相机编号即可,例如 InputData(file=0)
  • 一个视频文件,输入视频路径即可,例如 InputData(file="test/hand_tracking.mp4")
  • 一张图片,输入图片路径即可,例如 InputData(file="test/imgs/0.jpg")
  • 一个包含很多图像的目录,输入目录路径即可,例如 InputData(file="test/imgs")

InitFaceTracker用来初始化网络的参数,主要参数如下:

  • use_static_mode 图片模型还是视频模式,如果是图片,会先运行检测算法,否则直接追踪
  • faces_num 用来控制人脸检测的数量
  • detect_conf 检测网络的置信度(默认0.5就行,一般不用改)
  • track_conf 追踪网络的置信度(默认0.5就行,一般不用改)

ShowResult用来可视化结果

  • waitkey_mode 默认1,会刷新显示视频;输入0的话会阻塞图像显示,按下任意键继续

 环境配置和使用说明

配置conda(可选)

conda create -n mediapipe python=3.6
conda activate mediapipe

安装必要的依赖包

pip install opencv-python
pip install mediapipe==0.8.3

配置好环境后,直接运行 “运行这个.py" 即可 

 

功能代码剖析

        Mediepipe封装地非常好了,和上一篇手部追踪的代码基本一致(可以直接跳到最后下载源码及测试视频),之前讲过的一些代码就不重复阐述了,主要讲下关键的一些配置。

网络初始化模块InitFaceTracker

        其他配置都和手部追踪一致,faces_num用来控制图片中检测人脸的上限,可以参照下这块的代码:

class InitFaceTracker:
    def __init__(self, use_static_mode=False, detect_conf=0.5, track_conf=0.5, faces_num=2):
        self.use_static_mode = use_static_mode
        self.detect_conf = detect_conf
        self.track_conf = track_conf
        self.faces_num = faces_num
        self.face = None
        self.init_network()

    def init_network(self):
        self.face = mp.solutions.face_mesh.FaceMesh(
            static_image_mode=self.use_static_mode,
            max_num_faces=self.faces_num,
            min_detection_confidence=0.5,
            min_tracking_confidence=0.5)
        print("init hand tracking down")

    def run_face_tracking(self, get_nex_img):
        while True:
            img_origin = next(get_nex_img)
            if img_origin is None:
                yield [None, None]
                break
            img = cv2.cvtColor(img_origin, cv2.COLOR_BGR2RGB)
            yield [img_origin, self.face.process(img)]

实际运行结果及简单点评

        配置下输入InputData("test/face_tracking.mp4"),直接可以看到效果:

        人脸mesh的完成度真的挺高,在相当多的开源人脸算法中算是比较好的了,实际工程落地中加一些必要的滤波,效果应该会很不错。

        复用下手部追踪里的视频看看,关键点还是挺清晰和稳定的。

 拓展阅读

如果看了效果想进一步尝试,可以仔细研究下面两个链接

写在最后

 往期TLAIP列表:

【AI十行代码系列】1.手势关键点追踪-MediaPipe Python_朱铭德的博客-CSDN博客

【AI十行代码系列】2.人体关键点定位-MediaPipe Python_朱铭德的博客-CSDN博客

         AI十行代码仓库地址(最重要的→)链接 ,后续功能也会在这里更新,欢迎提建议或需求,哈哈,本文相关所有代码和资源也可以在 这里下载

        如果文章对你稍微有些帮助的话,麻烦来个三连(疯狂暗示)。

标签:MediaPipe,img,AI,self,十行,face,人脸,InputData
来源: https://blog.csdn.net/zmdsjtu/article/details/122201229

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有