MediaPipe是一款由Google开发并开源的数据流处理机器学习应用开发框架。它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。MediaPipe是跨平台的,可以运行在嵌入式平台(树莓派等),移动设备(iOS和Android),工作站和服务器上,并支持移动端GPU加速。使用MediaPipe,可以将机器学习任务构建为一个图形的模块表示的数据流管道,可以包括推理模型和流媒体处理功能。
为什么需要MediaPipe
构建包含推理的应用程序所涉及的不仅仅是运行机器学习推理模型。开发者还需要做到以下几点:
- 利用各种设备的功能
- 平衡设备资源使用和推理结果的质量
- 通过流水线并行运行多个操作
- 确保时间序列数据同步正确
MediaPipe框架解决了这些挑战,开发者可以使用它轻松快速地将现有的或新的机器学习模型组合到以图表示的原型中,并将其跨平台实现。开发人员可以配置使用MediaPipe创建的应用程序做到如下几点:
- 有效管理资源(CPU和GPU)达到低延迟性能
- 处理诸如音频和视频帧之类的时间序列数据的同步
- 并测量性能和资源消耗
如在增强现实(AR)的应用程序中为了增强用户体验,程序会以高帧频处理诸如视频和音频之类的感官数据。由于处理过程的的过度耦合和低延时要求,很难按照常规应用程序开发方式协调数据处理步骤和推理模型。此外,为不同平台开发同样的应用程序也非常耗时,它通常涉及优化推理和处理步骤以便在目标设备上正确高效地运行。
MediaPipe通过将各个感知模型抽象为模块并将其连接到可维护的图中来解决这些问题。借助MediaPipe,可以将数据流处理管道构建为模块化组件图,包括推理处理模型和媒体处理功能。将视频和音频流数据输入到图中,通过各个功能模块构建的图模型管道处理这些数据,如物体检测或人脸点标注等最后结果数据从图输出。
这些功能使开发者可以专注于算法或模型开发,并使用MediaPipe作为迭代改进其应用程序的环境,其结果可在不同的设备和平台上重现。除了上述的特性,MediaPipe还支持TensorFlow和TF Lite的推理引擎,任何TensorFlow和TF Lite的模型都可以在MediaPipe上使用。同时在移动端和嵌入式平台,MediaPipe也支持设备本身的GPU加速。
下图是基于MediaPipe构建的的目标检测图:
![175c3acd6cbafaeeea66aef0f0074c50.png](https://i-blog.csdnimg.cn/blog_migrate/f5adf8788d3b02655d65557a6d9dbe20.jpeg)
从图中各个模块的名字可以看出个模块的功能,输入是摄像头采集的视频数据帧通过图中各个模块的处理输出到显示屏上。下图是手机运行效果:
![9bb05c830f638ef71c543e317967ad43.gif](https://i-blog.csdnimg.cn/blog_migrate/36c57345eca6329b0097cdb037565cbe.gif)
MediaPipe介绍
MediaPipe有下面三个主要部分组成:
- 用于构建基于感官数据进行机器学习推理的框架
- 用于性能评估的工具
- 可重用的推理和处理组件的集合
基本概念
MediaPipe的