Mediapipe学习记录
创始人
2024-03-12 14:03:25
0

学习文档

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

 

 

相关内容

热门资讯

公安部打掉黑灰产犯罪团伙200... 12月25日,公安部在京召开专题新闻发布会,通报公安部和国家金融监督管理总局联合部署开展金融领域“黑...
公安机关打掉金融领域“黑灰产”... 新华社北京12月25日电(记者任沁沁、熊丰)公安部12月25日在京召开新闻发布会,通报今年6月至11...
老年婚介服务引纠纷 成都金牛区... 追求爱情从来不是年轻人的专利,老年人也有权利去追求真爱。不过,不可只抱有美好期许,也要擦亮眼睛。近日...
国家医保局:长护险制度将从试点... 本报讯(中青报·中青网记者 刘昶荣)在日前浙江宁波召开的2025年全国长期护理保险高质量发展大会上,...
公安部发布金融领域“黑灰产”违... 12月25日,公安部在京召开专题新闻发布会,通报公安部和国家金融监督管理总局联合部署开展金融领域“黑...
国家发展改革委:加快推动交通运... 12月25日,国家发展改革委基础设施发展司刊发题为《加快构建现代化基础设施体系》的署名文章。文章指出...
国家发改委:优化收费公路政策 ... 每经AI快讯,据国家发改委官微消息,12月25日,国家发展改革委基础设施发展司发文称,深化重点领域改...
清华大学开展招生宣讲,发布招生... 红星新闻网12月25日讯12月24日,清华大学招生办公室发布声明。 声明称,近日,清华大学招生办接到...
公安部:立案查处金融领域“黑灰... 北京商报讯(记者 岳品瑜 董晗萱)12月25日,公安部召开新闻发布会,通报公安部和国家金融监督管理总...
感知山东| 胶州市开展“法律护... 为不断深化“陪伴成长”全环境立德树人品牌建设,近日,胶州市司法局李哥庄司法所联合镇宣传办,邀请市“蓝...