MediaPipe跨平台机器学习应用开发框架MediaPipe是一款由Google开发并开源的数据流处理机器学习应

构建包含推理的应用程序所涉及的不仅仅是运行机器学习推理模型。开发者还需要做到以下几点:

MediaPipe框架解决了这些挑战,开发者可以使用它轻松快速地将现有的或新的机器学习模型组合到以图表示的原型中,并将其跨平台实现。开发人员可以配置使用MediaPipe创建的应用程序做到如下几点:

如在增强现实(AR)的应用程序中为了增强用户体验,程序会以高帧频处理诸如视频和音频之类的感官数据。由于处理过程的的过度耦合和低延时要求,很难按照常规应用程序开发方式协调数据处理步骤和推理模型。此外,为不同平台开发同样的应用程序也非常耗时,它通常涉及优化推理和处理步骤以便在目标设备上正确高效地运行。

MediaPipe通过将各个感知模型抽象为模块并将其连接到可维护的图中来解决这些问题。借助MediaPipe,可以将数据流处理管道构建为模块化组件图,包括推理处理模型和媒体处理功能。将视频和音频流数据输入到图中,通过各个功能模块构建的图模型管道处理这些数据,如物体检测或人脸点标注等最后结果数据从图输出。

这些功能使开发者可以专注于算法或模型开发,并使用MediaPipe作为迭代改进其应用程序的环境,其结果可在不同的设备和平台上重现。除了上述的特性,MediaPipe还支持TensorFlow和TFLite的推理引擎,任何TensorFlow和TFLite的模型都可以在MediaPipe上使用。同时在移动端和嵌入式平台,MediaPipe也支持设备本身的GPU加速。

下图是基于MediaPipe构建的的目标检测图:

从图中各个模块的名字可以看出个模块的功能,输入是摄像头采集的视频数据帧通过图中各个模块的处理输出到显示屏上。下图是手机运行效果:

MediaPipe有下面三个主要部分组成:

MediaPipe的核心框架由C++实现,并提供Java以及Objective-C等语言的支持。MediaPipe的主要概念包括:

这些概念中主要是图和计算单元,它们是MediaPipe运行的核心,下面会重点说明它们。

MediaPipe已经包含了多个由Google实现的计算单元,也向用户提供定制新计算单元的基类。并且子图的概念是为了方便用户在多个图中复用已有的通用组件,例如图像数据的预处理、模型的推理以及图像的渲染等,因此一个MediaPipe图中的节点既可以是计算单元,亦可以是子图。子图在不同图内的复用,方便了大规模模块化的应用搭建。

可以看出图是一个有向的数据流管线,一个数据包从数据源进入,然后按照数据流线路流经各个节点直到输出结点完成。

图结构描述通过GraphConfig指定,它通过一个文件的形式存在可以被Graph加载运行,我们可以通过更新GraphConfig配置文件来添加,删除或更改组件的连接。我们还可以在这个文件里配置全局级别设置,以修改图的执行和资源消耗,这对于调整不同平台(例如台式机和移动设备)上的性能非常有用。

另外在TensorFlow,PyTorch,CNTK或MXNet等项目中使用图来定义神经网络模型。但MediaPipe的图起到了补充作用,MediaPipe未定义神经网络的内部结构,而是指定了嵌入一个或多个模型的较大规模的处理图。

计算单元是一个C++类,创建一个计算单元需要用户继承于CalculatorBase类并实现GetContract,Open,Process,Close方法去分别定义计算单元的初始化,数据流的处理,以及在计算单元完成所有运算后的关闭步骤。

假设有一个场景,里面有摄像机,麦克风和光传感器在采集数据并要处理。每个传感器都独立运行,并且按照各自的采样率采集数据,由于各个传感器的采样率不同它们收集并发送数据就不会同步。假如每个传感器的采集输出为:

PacketClonerCalculator的完整代码:

可以看到图显示在左边区域它是一个只读区域,通过鼠标可以缩放并拖动图但不能编辑。右边是文本编辑区可以添加或编辑图描述代码来修改图,这里的代码就是GraphConfig,它可以被保存为一个文本文件然后通过Graph的API来加载这个图。下面的代码是我们又添加一个视频反转(VideoFlip)的计算单元。更新后的图如下所示:

input_stream:"input"output_stream:"output"node{calculator:"VideoClipCalculator"input_stream:"IN:input"output_stream:"clippedVideoOutput"}node{calculator:"VideoFlipCalculator"input_stream:"clippedVideoOutput"output_stream:"OUT:output"}

图配置代码简单说明如下:

可以看到VideoClipCalculator节点使用input作为输入,然后输出clippedVideoOutput,VideoFlipCalculator节点使用clippedVideoOutput作为输入,最后输出output。另外图配置还有另外一些参数配置和命名规则这里就不再说了。

下面这些都是Google利用MediaPipe框架实现的移动端应用示例,当然整个基于MediaPipe的开源项目还有桌面应用示例,浏览器应用示例和GoogleCoral应用示例。

下图就是物体检测的MeidaPipe图,可以看出从上面的视频输入到下面的视频输出整个过程还是有不少计算单元的,其中仅TfLiteInference计算单元基于TensorFlowLite完成推理。

我们从上而下说明一下每个计算单元的作用:

MediaPipe里还有边数据包(Sidepackets),输入策略(Inputpolicies),运行时行为(Runtimebehavior)等等概念就不再说明了,有兴趣可以看官方文档。

可以说是MediaPipe是一个利用“有序管线”图的应用程序开发框架,甚至可以基于它开发一个完全没有机器学习推理的应用程序,但是由于它基于图的这样一个架构使其很适合开发含有推理模型的应用。

MediaPipe用Bazel构建工具来构建应用,库和测试工具,MediaPipe框架及里面的所有示例包括iOS端的都是用这个工具构建的,所有要会使用这个跨平台构建工具。

THE END
1.proccesson数据流向图mob64ca14137e4f的技术博客依据新版大纲,近期几年的软件设计师水平考试来看,数据流图的设计已成为下午题中必考的知识点。常出题型为:补充数据流图,解释设计原则,偶尔也会考数据字典的内容,可是都非常easy。 考点分析 依据近期几年的出题趋势看,本题分值为15分,共分为4小题。前3小题的题型都是比較固定的,比較简单,而第4小题考的则比較https://blog.51cto.com/u_16213697/12803414
2.海量数据处理中的高效数据流管理策略探究我爱制作网AI积聚下的深厚图片,仅为参考 本站观点,海量数据处理中的数据流管理在实时处理、高并发处理、容错性和可扩展性等方面具有显著优势。随着大数据技术的不断发展,数据流管理将在海量数据处理中发挥越来越重要的作用,为企业和组织提供更好的数据处理和分析能力。https://www.024zz.cn/html/shuju/2024-12-17/391855.html
3.数据流图学习数据流图学习 技术标签: UML 数据流图 数据流程图数据流图或数据流程图(Data Flow Diagram),缩写为DFD 是什么: 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,标志了一个系统的逻辑输入和逻辑输出,以及把逻辑https://www.pianshen.com/article/42091514364/
4.数据流图学习学习系统的数据流图数据流图学习 数据流图或数据流程图(Data Flow Diagram),缩写为DFD 是什么: 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。https://blog.csdn.net/bird_tp/article/details/103559953
5.数据流机器学习:MOA实例《数据流机器学习:MOA实例》,作者:数据流机器学习:MOA实例阿尔伯特·比费特,理查德·戈华达,杰弗里·福尔摩斯,伯恩哈德·普法林格 著,出版社:机械工业出版社,ISBN:9787111641391。1)介绍大数据挖掘和实时分析中使用的算法和技术,并用热门的免费开源软件框架MOAhttp://product.m.dangdang.com/product.php?pid=28493303
6.在线深度学习:在数据流中实时学习深度神经网络机器之心在线深度学习的主要困难是模型的容量、复杂度等设置很不灵活,即模型是静态的,而数据流是动态的。本论文提出了一种适应性的网络框架,结合 HBP 算法,使网络结构能随着数据的流入而逐渐扩展、复杂化。这使得模型同时拥有在线学习和深度学习的优点,并在多种在线学习模型和数据集的对比实验中都取得了当前最佳结果。 https://www.jiqizhixin.com/articles/2017-12-30
7.概念漂移数据流增量学习算法及其应用研究尽管已经有研究工作致力于概念漂移数据流的学习,但仍存在一些亟待解决的问题:第一,相关研究工作通常致力于特定演变类型的概念漂移,对于多种演变方式混合出现的概念漂移数据流适应不足;第二,数据流往往会存在特征空间变化型概念漂移,动态变化的特征空间导致决策边界形式不断变化,而现有方法在计算效率以及对动态决策边界形式https://cdmd.cnki.com.cn/Article/CDMD-10004-1020442513.htm
8.主动学习(ActiveLearning)简介综述汇总以及主流技术方案2.1.1基于数据流的主动学习方法 基于流(stream-based)的主动学习中,未标记的样例按先后顺序逐个提交给选择引擎,由选择引擎决定是否标注当前提交的样例,如果不标注,则将其丢弃。 在基于流的主动学习中,所有训练样本的集合以流的形式呈现给算法。每个样本都被单独发送给算法。算法必须立即决定是否标记这个示例。从这个池https://cloud.tencent.com/developer/article/2197125
9.定义数据流用例Power BI 数据流使你能够使用 Power Query Online 在工作区中生成可重用的数据表,并与其他用户共享,以便在其他报表中使用和在其他工作区中重用。 数据流是工作区中与数据集、仪表板、报表和工作簿并列的对象。 刷新 Power BI 数据流时,它会在后台将其数据加载到位于数据湖的文件中,即 Azure Data Lake Storage https://docs.microsoft.com/zh-cn/learn/modules/create-manage-scalable-power-bi-dataflows/2-define-use-cases-for-dataflows/
10.Flink源码分析——Task数据交互之数据读在《Flink源码分析——Task数据交互之数据写》中我们分析了上游任务/Map端的数据写过程,也知道了数据写主要采用的是ResultPartition模型。ResultPartition中有多个ResultSubPartition,数据以buffer的形式存放在ResultSubPartition中的buffer队列里,等待被发送到下游,或者说reduce端 https://zhuanlan.zhihu.com/p/424093505
11.《学生成绩管理系统数据流图》.doc顶层数据流图 0层数据流图 1层数据流图继续组织两周一次的专题学习沙龙和互动式评课沙龙,结合教研活动的主题组织好教师学习、交流。听展示课的教师对听课内容进行精心、系统的评点,写成评课稿,在两周一次的互动式教学研讨沙龙中进行交流、探讨。与往年不同的是,在保证互动评课活动开展同时,不影响正常教学,本学期安排https://max.book118.com/html/2020/0117/7200054111002113.shtm
12.Zabbix监控深度学习平台中的实时数据流处理问答在监控深度学习平台中的实时数据流处理方面,Zabbix可以发挥重要作用。 首先,Zabbix可以监控深度学习平台中的各种关键指标,如CPU使用率、内存使用率、磁盘IO等。通过监控这些指标,可以及时发现系统性能问题并进行调整优化,确保系统正常运行。 其次,Zabbix可以监控深度学习平台中的实时数据流处理任务的运行状态。可以监控任务的https://www.yisu.com/ask/602175.html
13.课程国家高等教育智慧教育平台是由教育部委托、高等教育出版社有限公司建设和运行维护、北京理工大学提供技术支持的全国性、综合性在线开放课程平台。本网站致力于汇聚优质高等教育在线课程等资源,并推进广泛传播与共享,面向高校师生和社会学习者提供全面、优质、便利的课程搜https://higher.smartedu.cn/course/62354c969906eace048cc724
14.SSIS学习(3):数据流任务(下).docx1、In tegrati on Services学习3:数据流任务下前一篇文章SSIS学习2:数据流任务上,介绍了如何创建一个简单的 ETL包,如何 通过一个简单的数据流任务, 将一个文本文件的数据导入到数据库中去。这些数据都保持了它原有的本色,一个字符不多,一个字符地少导入,但是在实际应用过程中,可能很少有这种情况,就拿lisLoghttps://www.renrendoc.com/paper/219226116.html
15.TensorFlow之数据流图概念学习这一篇,我们主要讨论学习TensorFlow中的数据流图,数据流图(Data Flow Graph),我们简称dfg,dfg中包含3个术语:节点、边和节点依赖关系,简单理解如下:数据流图的作用,主要是描述数据的计算方式和计算顺序https://www.jianshu.com/p/a2c474c4765d
16.软测教程知识点精讲之指令流数据流和计算机的分类软件评测师我们先学习两个定义。 (1)指令流:机器执行的指令序列。 (2)数据流:由指令流调用的数据序列,包括输入数据和中间结果。 1.根据多倍性的分类 按照计算机同时处于一个执行阶段的指令或数据的最大可能个数,人们把计算机分成4种,如表1-4所示。 表1-4指令流的分类 https://www.educity.cn/rk/1778752.html
17.第四范式先知平台的整体架构和实现细节架构胡时伟对于研究并实现机器学习算法的专家而言,算法的核心就是数据的各种变换和计算。GDBT 框架为了让机器学习专家更容易、更快速地开发出不同的机器学习算法提供了数据流的抽象,使得机器学习专家通过描述数据流 DAG 图的方式编写机器学习算法。机器学习专家只需要关注数据的核心变换和计算逻辑,GDBT 计算框架将机器学习专家描述的https://www.infoq.cn/article/the-fourth-paradigm-prophet-platform
18.Python机器学习(原书第3版)(豆瓣)第1章 赋予计算机从数据中学习的能力1 1.1 构建能把数据转换为知识的智能机器1 ··· (更多) 丛书信息· ··· 智能科学与技术丛书(共77册), 这套丛书还有 《现代决策树模型及其编程实践》《卷积神经网络与视觉计算》《基于深度学习的自然语言处理》《数据流机器学习》《神经网络与深度学习》 等。 我要写书https://book.douban.com/subject/35485398/
19.轻量级持续学习:0.6%额外参数把旧模型重编程到新任务在持续学习中,对于每一个新任务都可以训练得到一个轻量级模型;这种轻量级的模型需要训练的参数很少,即使任务很多,总共需要训练的参数相对于大模型来说也很小,并且每一个轻量级模型都可以达到很好的效果。 研究动机 持续学习关注于从数据流中学习的问题,即通过特定的顺序学习新任务,不断扩展其已获得的知识,同时避免遗忘https://www.thepaper.cn/newsDetail_forward_24920870