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.ePICEOpenSource215.9KB其它【ePICE开源项目详解】 ePICE,全称为\"Education Platform for Interactive Classroom and Extended Learning\",是一款开源的在线教育平台。它为教师和学生提供一个全方位的课程管理和交流工具,突破传统课堂时间和地点的限制,实现24/7的持续学习与互动。这个系统不仅允许教师上传和管理课程资料,如作业、讲义和笔记,还支持https://kaledl.com/down/8560057.html
2.基于Python的在线学习平台设计与实现毕业设计源码国外关于在线学习平台的研究比较广泛,主要涉及到平台的设计与实现、学习资源的开发与利用、学习交互的设计与实现、学习成果的评价等方面。目前,国外正在研究的主要有基于Java的在线学习平台、基于Python的在线学习平台、基于Web的在线学习平台等。基于Java的在线学习平台主要采用Servlet和JSP技术实现,并采用Struts和Spring等框https://blog.csdn.net/fufulove/article/details/144319334
3.AI从零到英雄:通过开源项目开始学习别担心,你并不孤单!许多人想了解 AI 工具,但不确定如何开始。本指南将帮助你了解五种有用的 AI 工具,它们可以帮助你在使用的时候又同时学习。 Postiz 是一款开源社交媒体调度工具,利用人工智能优化跨各个平台的内容发布。它简化了管理多个社交媒体帐户和有效安排帖子的过程。 https://www.21cto.com/article/1241711259137116
4.开放式在线学习平台edX全部开源开源软件2011年底,麻省理工学院发起一项开放式在线学习项目“MITx”,用于提供该学院的免费在线课程。去年5月份,哈佛大学也加入进来,与麻省理工学院一起推出了“edX”平台,该平台也提供哈佛大学的相关课程。 在edX平台宣布之初,曾承诺以开源软件的形式发布,以 MITx 为基础,其它感兴趣的大学和机构可自行托管其平台,或者帮助改进和https://www.iteye.com/news/27883
5.WLP在线学习平台WLP在线学习平台- WLP在线学习平台-开源版 --- 通过WLP在线学习平台获得线上学习能力,可辅助企业线下培训或将企业培训课件放置在系统中,方便用户随时随地在线学习。 每个课程可包含多个课时课件,课件支持PDF和mp4视频格式。 课程分类支持多级分类,灵活组织不同类型的http://wlp.wcpknow.com/
6.完全基于Java的开源深度学习平台,亚马逊的大佬带你上手HelloGitHub 推出的《讲解开源项目》[1]系列。有幸邀请到了亚马逊 + Apache 的工程师:Lanking( https://github.com/lanking520 ),为我们讲解 DJL —— 完全由Java构建的深度学习平台。 介绍 许多年以来,一直都没有为 Java 量身定制的深度学习开发平台。用户必须要进行繁杂的项目配置,构建 class 才能最终打造出https://cloud.tencent.com/developer/article/1824152
7.飞桨PaddlePaddle飞桨首次开源文字识别模型套件PaddleOCR,目标是打造丰富、领先、实用的文本识别模型/工具库。最新开源的超轻量PP-OCRv3模型大小仅为16.2M。同时支持中英文识别;支持倾斜、竖排等多种方向文字识别;支持GPU、CPU预测;用户既可以通过PaddleHub很便捷的直接使用该超轻量模型,也可以使用PaddleOCR开源套件训练自己的超轻量模型。https://www.paddlepaddle.org.cn/hub/scene/ocr
8.开源的API学习平台「GitHub热点速览」比如这款免费的 API 学习平台 APIHub,可以为初学者提供在线学习 API 开发的支持,并附有多种编程语言的示例。ChartDB 是一键生成数据库图表的工具,使用时无需输入数据库用户名和密码。Ophiuchi-desktop 让你在 5 秒内启动本地 HTTPS 代理,便于在本机上进行开发和测试。开源的 Android 虚拟定位应用 GoGoGo,一款帮https://hellogithub.com/article/a319e3b837184993a2c3cb3fc8283a15
9.CanvasLMSCanvas在线学习管理平台是美国Instructure公司于2011年推出的开源学习管理系统,因其系统界面设计简洁、操作简单易用、代码开源、数据分析功能强大及支持移动应用等特性,受到众多高校青睐。Canvas学习管理系统可以满足课程创建、资源管理、交流互动、学习评测、学习行为数据记录与分析、移动学习等各种教学需求,可支撑课堂教学、混合https://www.canvaslms.net/
10.w3cschool编程狮,是一个专业的W3C前端开发及编程入门学习平台,提供包括HTML,CSS,Javascript,jQuery,C,PHP,Java,Python,Sql,Mysql等编程语言和开源技术的在线教程及使用手册,是类国外w3schools的W3C学习社区及菜鸟编程平台。 网站数据 目前w3cschool的浏览人数已达到846,如需查询该站的相关权重数据,请点击[爱站数据],[Chinaz数据https://www.jspoo.com/wz/524.html
11.OSCHINAOSCHINA.NET 是目前领先的中文开源技术社区。我们传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台https://www.oschina.net/
12.字节跳动破局联邦学习:开源Fedlearner框架,广告投放增效209%作为分布式的机器学习范式,联邦学习能够有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,挖掘数据价值。 近两年,联邦学习技术发展迅速,阿里、腾讯、百度、京东、蚂蚁金服、微众银行等一众互联网大厂、金融科技公司皆涉足其中。前不久,字节跳动联邦学习技术团队也开源了自研的联邦学习平台 Fedlearner 。 https://maimai.cn/article/detail?fid=1550604028&efid=zqj9rqK7Yf_Us-lu-0Wnmg
13.企业培训系统在线培训考试平台企业内训系统企业培训课程EduSoho企业大学致力于为公司定制开发企业在线培训系统,提供企业培训课程以及在线培训学习的一体化解决方案.主要业务涵盖:企业内训,企业培训系统,新员工入职培训,员工业务培训,在线学习平台,在线考试系统,在线移动学习,企业培训课程,elearning,网上学习平台https://ct.edusoho.com/
14.中国大学MOOC中国大学MOOC(慕课) 是爱课程网携手网易云课堂打造的在线学习平台,每一个有提升愿望的人,都可以在这里学习中国优质的大学课程,学完还能获得认证证书。中国大学MOOC是国内优质的中文MOOC学习平台,拥有众多985高校的大学课程,与名师零距离。http://icourse163.org/
15.java免费开源在线教育系统在线java开发java 免费开源在线教育系统 在线java开发 前言: 学成在线项目是传智燕青老师研发的JavaEE分布式微服务架构项目,采用SpringCloud框架研发,课程共20天,应广大学员的建议现将整个项目的技术点以问题的形式进行总结,方便大家学习总结。 1 学成在线是个什么样的项目?https://blog.51cto.com/u_16099279/6735784
16.首页汇学联盟IT在线学习平台汇学联盟在线学习中心是汇智动力旗下在线培训平台,开设java开发课程,软件测试课程,Python课程,自动化测试课程等IT课程。汇智动力结合多年线下教学经验,实时更新课程内容,实现线上、线下高效协同,只为给学员提供更加优质、丰富的课程内容和更专业、贴心的教学服务。https://www.hzdlstudy.com/