MediaPipe框架解析(五):c++ face_mesh解析

MediaPipe框架解析(四):android edge_detection详解
Mediapipe作为google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning)方案。 Mediapipe实际上是一个集成的机器学习视觉算法的工具库,包含了人脸检测、人脸关键点、手势识别、头像分割和姿态识别等各种模型。我们前几章都重点在熟悉mediapipe的使用和helloworld,本章我打算研究一下face_mesh,加深一下自己对该框架的理解。

基本代码组成

face_mesh的项目构建文件在mediapipe/examples/desktop/face_mesh/BUILD,该BUILD中总共包括三个产物构建:

  • face_mesh_tflite
  • face_mesh_cpu
  • face_mesh_gpu
    我们逐一分析,先看face_mesh_tflite,如下图所示,先看注释部分提供了bazel构建脚本和执行方式的脚本,从face_mesh_tflite的执行脚本中我们可以了解到该demo的功能为通过提供一个输入视频文件,执行本程序后,输出另一个视频文件,后面我们会运行看一下效果,我们现在先继续扫一下项目构成。
    在这里插入图片描述
    face_mesh_tflite是可执行文件的名字,可看到包括了一个tensor flow lite的模型文件face_landmark_with_attention.tflite,以及simple_run_graph_main和desktop_calculators两个项目依赖。从名字上来看大概可以看出simple_run_graph_main用于提供demo的基本业务,desktop_calculators实现了mediapipe的计算节点。

simple_run_graph_main

simple_run_graph_main主要构成如下,可以看到除了一个simple_run_graph_main.cc之外其余的依赖主要是framework和absl下的内容,之前在c++ helloworld源码分析的时候也大致了解过像calculator_framework和absl_log这两个依赖,absl下应该主要是一些通用的库依赖,封装了日志打印等一些基本能力,framework中就涉及了calculator和graph等一些核心框架相关的代码。
在这里插入图片描述
待进一步分析依赖和simple_run_graph_main.cc

desktop_calculators

desktop_calculators中主要包括如下依赖
在这里插入图片描述
待进一步分析依赖

项目运行及效果展示

直接执行命令

bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 //mediapipe/examples/desktop/face_mesh:face_mesh_tflite

执行过程中碰到如下报错,原因是我没有安装opencv,这里我需要先安装opencv
在这里插入图片描述

源码分析

待分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值