Mediapipe学习记录

news2024/10/2 12:20:15

学习文档

1、Google MediaPipe:设备端机器学习【完整解决方案】背后的技术实现 - 极术社区 - 连接开发者与智能计算生态

2、【转载】Google MediaPipe:设备端机器学习【完整解决方案】背后的技术实现

3、MediaPipe框架结构 - 走看看

Handtracking封装

1、Mediapipe - 将Mediapipe handtracking封装成动态链接库dll/so,实现在桌面应用中嵌入手势识别功能_HW140701的博客-CSDN博客

2、Mediapipe - 将Mediapipe handtracking封装成动态链接库dll/so,实现在桌面应用中嵌入手势识别功能 - StubbornHuang Blog

HolisticTracking封装

1、Mediapipe – 将Mediapipe HolisticTracking封装成动态链接库dll/so,实现在桌面应用中嵌入全身关节点识别、手势识别、抬手放手检测识别功能_HW140701的博客-CSDN博客

2、Mediapipe – 将Mediapipe HolisticTracking封装成动态链接库dll/so,实现在桌面应用中嵌入全身关节点识别、手势识别、抬手放手检测识别功能 - StubbornHuang Blog

Github链接:

GitHub - HW140701/GoogleMediapipePackageDll: package google mediapipe hand and holistic tracking into a dynamic link library

学习记录:

一、常见的机器学习流水线

常见的机器学习流水线:从数据流入、数据预处理、引擎推理计算、渲染结果、数据流出

1、Image Transform:视频或图像接入需要做图像变换如Resize或者裁剪到模型接受的大小,以及对图片进行旋转等;
2、Image To Tensor:处理好的图片转换到模型认识的类型,如TensorType,但如果是GPU做推理,则还需要把CPU Tensor转换为GPU Tensor,会涉及OpenGL等操作,但若是GL,则前面一步可能在Image Transform过程可能也需要考虑是在GPU上来做;
3、Inference:这部分是推理的核心,模型和输入Tensor给到,输出output tensor;
4、Tensor To Landmarks:在得到推理的output tensor后,需要将其翻译为标注点、检测点的信息如x、y轴的信息等等、也需要做很多工作;
5、Renderer:在得到Landmark坐标信息后,还需要与原图做渲染,将最终渲染后的图片放进手机屏幕或者视频中。

二、常见的机器学习流水线与mediapipe对比

 

MediaPipe已经提供了很多预设的Calculator,主要分以下四类:

1、对图像等媒体数据处理的calculator
2、TensorFlow与TFLite相关用于推理的Calculator
3、后处理Calculator
4、辅助性的Calculator
 

Calculator的实现都是C++,要用时需要定义接口类型,即输入、输出的类型
                                                               定义方法,open、Process、close

三、Mediapipe的源码结构

MediaPipe中核心源码的结构如下,BUILD为Bazel编译文件、calculators为图结构的计算单元、docs为开发文档、examples为mediapipe的应用示例、framework为框架包含计算单元属性,上下文环境,数据流管理,调度队列,线程池,时间戳等、gpu为OpenGL的依赖文件、graphs为mediapipe各项示例的图结构(边缘检测,人脸检测,姿态追踪等等)、java为安卓应用开发的依赖项、MediaPipe.tulsiproj为相关配置文件、models为各个应用的tflite模型,modules为示例组件、objc为 objective-c语言相关文件、util为工具代码。

框架的加速部分主要在framework中,源码中包括计算单元基类,计算单元数据类型定义、计算单元的状态控制、计算单元的上下文环境管理、图结构中输入流和输出流、调度器队列、线程池、时间戳同步等。下面主要分析调度器队列(scheduler_queue),线程池(thread_pool),时间戳(timestamp)怎样通过调度数据流实现时数据流时间戳同步,再GPU计算渲染,从而达到mediapipe管线的最大数据吞吐量。

四、一些对mediapipe框架的理解

(1)使用MediaPipe,可以将机器学习任务构建为一个图形的模块表示的数据流管道,可以包括推理模型和流媒体处理功能。

(2)MediaPipe通过将各个感知模型抽象为模块并将其连接到可维护的图中来解决这些问题。

(3)借助MediaPipe,可以将数据流处理管道构建为模块化组件图,包括推理处理模型和媒体处理功能。将视频和音频流数据输入到图中,通过各个功能模块构建的图模型管道处理这些数据,如物体检测或人脸点标注等最后结果数据从图输出。输入是摄像头采集的视频数据帧通过图中各个模块的处理输出到显示屏上。

(4)MediaPipe未定义神经网络的内部结构,而是指定了嵌入一个或多个模型的较大规模的处理图。

五、对mediapipe构建文件的理解


cc_binary即声明了一个构建规则,用于编译生成一个可执行文件。

*_binary 规则:指定生成相应语言的可执行程序。cc_binary表示c++可执行程序,jave_binary表示java可执行程序。

可执行文件名(目标名)由name属性指定,name属性的值的类型可以看出是string类型。
srcs属性指定了源文件,srcs属性的值的类型可以看出是list of strings。

srcs表示源文件、deps代表依赖项

cc_library 中参数 visibility = ["//visibility:public"] 表明该库对所有包可见。

在我们使用google的工程的时候,还有一个class 叫做 absl::Status。

六、mediapipe中各解决方案编译时所依赖的一些文件

1、Handtracking

 

 2、Face_detection

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt creator 设置 项目依赖关系

qt creator中有两种设置项目依赖关系的方式。 1、对于有依赖的项目,如果工程比较简单,可以将所有项目放到一个空的项目下,然后显示地指定从属关系,参考:qmake TEMPLATE subdirs_丘上人的博客-CSDN博客 2、通过qt cre…

leecode#Excel表列序号#组合两个表

题目描述: 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 分析: 法1,进制转换 这道题要求将Excel 表中的列名称转换成相对应的列序号。由于Excel 表的列名称由大写字母组成&#xff…

vue学习53~60(Vue组件化编程)

2 Vue组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一 个js文件为什么: js 文件很多很复杂作用:复用js,简化js的编写,提高js运行效率 2.1.2 组件 理解:用来实现局部(特定)功能效果的代码集合(html/css/js/image…)为什么…

正大国际期货:外盘期货交易中常见的五类技术分析方法

外盘期货交易中,技术分析是必不可少的,技术分析是指以市场行为为研究对象,以判断市场趋势并跟随趋势的周期性变化来进行一切金融衍生物交易决策的方法的总和。常用的技术方法大体上可以分五大类:指标类、切线类、形态类、波浪类、…

安卓程序逆向与防护

安卓程序逆向与防护实际用处代码打包生成apk的步骤程序基础逆向步骤程序基础防御代码混淆针对逆向工具的防御手段ProguardSO文件防止二次打包程序进阶逆向攻击实战练习逆向简易安卓程序实际用处 1.当想要获得一款前后端分离的安卓程序的数据时,一般会考虑抓包后端传…

Kanzi:关于kanzi的一点杂谈

概述: 做过开发的小伙伴在初次接触Kanzi Studio 这个开发工具时,可能有点摸不着头脑,由于 它不像Android studio 也 不像QT ,而且最大的一个区别是:kanzi基本不用写代码逻辑来控制程序显示UI,但是Android …

做外贸一定要知道的20条经验教训

做外贸你必须知道的20课,由米贸搜为你整理如下: 1.在工厂里,客人抱怨价格太高的时候,我总是说一分钱一分货,质量好的回复。进入一家贸易公司后,我知道价格才是硬道理,尤其是大客人。对价格的考虑肯定高于对…

1776年美国才建国,那一年中国在干什么?

时代淘汰你,都不会跟你打一声招呼。时代的残酷性,对人如此,对国家也是这般。美国的历史是太嫩了,在1776年才得以建国。但在这年,美国踏上了工业化革命的节奏,走上了扬帆起航之旅,逐步成为了超级…

JavaIO流处理笔记(万字总结)

学习视频561-JavaSE进阶-IO流概述_哔哩哔哩_bilibili 目录 IO流概述 IO流的分类 IO流四大家族 FileInputStream初步(并非最终方法) FileInputStream循环读(并非最终方法) 往byte数组中读 FileInputStream最终版 FileInputStream的其他常用方法 FileOutputStream的使用…

Kamiya丨Kamiya艾美捷抗冷休克结构域蛋白E1说明书

Kamiya艾美捷抗冷休克结构域蛋白E1化学性质: 物种反应性:人类其他未知物种。 Ig同种型:正常兔全血抗体 免疫原:表达重组CSDE1(Met1~Val245)在大肠杆菌中 格式:500g/mL多克隆抗体在0.01M PBS…

【Redis】List类型和底层原理

文章目录List类型1.List介绍1.1常用命令2.List底层实现3.ziplist剖析3.1ziplist结构3.2创建一个空的ziplist3.3ziplist的元素节点结构3.4ziplisqt的连锁更新3.5ziplist的缺陷4.quicklist剖析4.1quicklist表头结构5.List的应用场景----消息队列5.1保证消息保序5.2处理重复的消息…

Ubuntu搭建本地web站点,并内网穿透实现公网访问

本次教程我们通过搭建Apache服务,部署一个简单的静态样例站点,并使用cpolar内网穿透将内网样例站点发布到公网来进行演示。 1. 设置 Apache Web 服务器 1.1 安装Apache Web sudo apt-get install apache2 -y1.2 启动Apache Web sudo service apache2…

[附源码]计算机毕业设计springboot校园招聘微信小程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]计算机毕业设计自行车租赁管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

CSS盒子模型

🍓个人主页:bit.. 🍒系列专栏:Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 HTML和CSS3 目录 1.盒子模型 1.2盒子模型(Box Model)组成 1.3边框(border) 1.4 表格的…

异常概述、常见异常 、自定义异常 、重载重写的异常区别

1.异常概述 程序运行过程中任何打断程序正常流程的情况称为异常或错误。比如:文件打不开、网络中断、操作符越界、类加载找不到等。 Java程序在执行过程中所发生的异常事件可分为两类: public class Test {public static void main (string [] args){stri…

靶向嵌合体PEG-ethoxycarbonyl-propanoic/Dodecaethylene glycol

蛋白水解靶向嵌合体(proteolysis targeting chimeras,PROTACs)通过连接基团将靶蛋白配体与E3连接酶配体利用化学键连接,将E3连接酶“募集”到靶蛋白附近,并利用细胞内的泛素-蛋白酶体系统,实现靶蛋白的泛素化标记和蛋白降解。靶蛋白一旦被降解,PROTACs分子便游离出来,参与到下一…

[附源码]JAVA毕业设计基于vue技术的汽车维修检测系统设计与实现(系统+LW)

[附源码]JAVA毕业设计基于vue技术的汽车维修检测系统设计与实现(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&…

【水光互补优化调度】基于非支配排序遗传算法的多目标水光互补优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

太厉害,Redis+Nginx+设计模式+Spring全家桶+Dubbo技术精选合集

最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方…