当前位置: 首页 > news >正文

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
在这里插入图片描述

源码分析

待分析

http://www.dtcms.com/a/316596.html

相关文章:

  • TDengine 中 TDgpt 的模型评估工具
  • 基于WOA鲸鱼优化的VMD-GRU时间序列预测算法matlab仿真
  • 代码随想录day57图论7
  • (ZipList入门笔记一)ZipList的节点介绍
  • 【RH124 问答题】第 6 章 管理本地用户和组
  • ⭐CVPR2025 MatAnyone:稳定且精细的视频抠图新框架
  • LLM开发——语言模型会根据你的提问方式来改变答案
  • Android与Flutter混合开发:页面跳转与通信完整指南
  • 深入剖析 RAG 检索系统中的召回方式:BM25、向量召回、混合策略全解析
  • Go语言 string
  • stm32项目(21)——基于STM32和MPU6050的体感机械臂开发
  • 跨尺度目标漏检率↓82.4%!陌讯多尺度融合算法在占道经营识别的实战优化
  • 结构化开发方法详解:软件工程的奠基性范式
  • 机器学习——贝叶斯
  • Android 之 Kotlin中的协程(Dispatchers.IO)
  • Android UI 组件系列(十一):RecyclerView 多类型布局与数据刷新实战
  • ara::log::LogStream::WithTag的概念和使用案例
  • 鸿蒙开发--web组件
  • Java技术栈/面试题合集(5)-SpringBoot篇
  • SpringBoot3.x入门到精通系列:4.1 整合 MongoDB 详解
  • 《四种姿势用Java玩转AI大模型:从原生HTTP到LangChain4j》
  • Ubuntu24.04环境下非DOCKER方式安装Mysql5.7
  • 今日行情明日机会——20250805
  • 呼叫中心系统录音管理功能的应用
  • 初学docker
  • 深度拆解Dify:开源LLM开发平台的架构密码与技术突围
  • QUdpSocket发送组播和接受组播数据
  • 【类与对象(上)】C++封装之美:类与this指针解析
  • Nginx 单一端点上高效部署多个 LLM 模型
  • ES 模块动态导入