[论文评析-CV]MediaPipe: A Framework for Building Perception Pipelines, ArXiv,2019

news2025/7/30 22:13:27

MediaPipe: A Framework for Building Perception Pipelines

  • 文章信息
  • 前言
    • 框架介绍
    • MediaPipe用于目标检测
      • (1)Detection branch:
      • (2)Tracking branch:
    • MediaPipe框架
      • 重要的概念
      • 调度
    • 其他
  • References


文章信息

论文题目:MediaPipe: A Framework for Building Perception Pipelines
发表:ArXiv,2019
作者:Camillo Lugaresi, Jiuqiang Tang, Hadon Nash, Chris McClanahan, Esha Uboweja, Michael Hays, Fan Zhang, Chuo-Ling Chang, Ming Guang Yong, Juhyun Lee, Wan-Teh Chang, Wei Hua, Manfred Georg, Matthias Grundmann
Google团队出品

前言

今天要介绍的MediaPipe是一个构建pipeline用于在任意的传感器数据上进行推理的框架。框架源码:https://github.com/google/mediapipe。该框架由于其扩展性强,实时性,跨平台等众多特点收到了广泛关注,该框架目前已经集成到Python,可以作为一个包来直接使用。

框架介绍

原文花费了很长的篇幅来介绍该框架的一些设计理念以及涉及的基本的概念,这里首先从一个简单的例子开始来介绍MediaPipe。

MediaPipe用于目标检测

下图展示了使用MediaPipe进行目标检测的示意图。其中实体框表示外部到Graph的inputs/outputs, 透明框为计算节点(被称为Calculator), 实现表示数据流向(顶部输入,底部输出)

在这里插入图片描述
该Graph总共包含两个并行的分支,其中左边的用于Tracking, 右边的用于Detection,

(1)Detection branch:

该分支用来进行目标检测, 由于视频帧率一般30FPS,如果对每一帧都进行目标检测的话,无论是时间还是资源消耗都很难满足要求,因此MediaPipie的策略是:对帧先进行采样然后对采样的帧进行目标检测,然后Tracker再把检测结果(边界框,类标记)进行传播Propagate。那么如何采样呢?MediaaPipe主要是基于极限频率和场景变化分析来采样, 这样一来只需要对开始帧以及场景变化的帧进行目标检测即可。

如上图所示, 一个Frame selection node首先被用来选择帧,然后选择出来的帧被送入目标检测模块,Object detection node 加载ML模型和label map (作为输入侧packets)构建推断引擎对送入的帧进行推断。

(2)Tracking branch:

Tracker的作用是更新早期的检测结果并将他们的位置推进到当前帧。

检测完成以后,detection merging node基于他们在帧中的位置比对,合并检测结果。这里需要说明的是:这两个Branches是并行的,比对是对同一帧进行的,因此该节点的Input strategy会自动对其两个检测结果的timestep。

最后, detection-annotation node对frame进行标注用于可视化。

MediaPipe框架

Mediapipe允许开发人员以渐进的方式来搭建pipeline, 如上图所示,一个pipeline实际上就是一个有向图Graph,有向图中的每个节点node实际上就是Calculator。 Graph是使用GraphConfig协议缓冲区指定的,然后使用Graph对象运行。 在该graph中,两个calculator通过data stream进行连接,每个stream实际上就是数据包packets的时间序列。

用户可以自定义calculator, 同时还可以对Graph中的某个node进行替换,非常灵活。

重要的概念

Packets: 数据包, Mediapipie中的基本数据单元。

Streams: 数据流,为数据包的时间序列,特别注意的是这些数据包的时间戳timestep是单调递增的,这对于同步机制非常重要。

Side packets: Side packets相比于Packets的区别是未指定timestep, 其主要用来保存一些常数值,比如ML model的file path, 上图中的目标检测模块就用到了。

Calculator: 对应Graph中的每个node, 高度可定制, 其包含4中基本方法:GetContract(), Open(), Process() , Close().

Graph: 一个graph实际上由多个node组成,这些nodes直接有向连接,数据包就在这么一个driected graph中流动。

GraphConfig: GraphConfig是描述MediaPipe graph的拓扑结构和功能的一种规范。

调度

每个graph至少有一个调度器队列, 每个调度器队列正好有一个执行器executor,

graph中的每个node有一个调度状态, 取值有三种:not ready, ready, running,当node的状态变为ready后,对应的任务被添加到优先级调度队列中等待执行。

Mediapipie是去中心化的,同一时刻,不同的nodes可能处理具有不同timestep的数据, 因此如何保证同步非常重要。每个数据包携带的timestep实际上作为同步密钥来实现同步。同时Mediapipe被设计来支持确定性操作从而满足实时性。

其他

此外, Mediapipie还支持GPU, OpenGL,等

References

1.Lugaresi C, Tang J, Nash H, et al. Mediapipe: A framework for building perception pipelines[J]. arXiv preprint arXiv:1906.08172, 2019.

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

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

相关文章

mysql误删数据后 快速恢复的办法

手抖不小心把表里的数据删除或修改错误怎么办?该如何快速恢复呢?遇到这样的问题怎么办?希望下面这篇文章能够帮助到你! 第一步:保证mysql已经开启binlog,查看命令: 查看binklog是否开启 show…

运动耳机品牌排行榜前十名有哪些,2022年六款运动耳机值得入手

近几年来,运动健身潮流一直都非常火热,但一个人运动难免会感到枯燥,这个时候最需要的就是音乐的陪伴了,佩戴着运动耳机听音乐,运动的时间也会过得越来越快,不过在选购运动耳机的过程会比挑选普通蓝牙耳机还…

pycharm社区版不能使用conda

修改成cmd 本质是conda init 问题 专业版的直接在终端改成cmd就行了

(DS90UB3702TRURRQ1) LT8640SHV-2低噪声降压稳压器QFN

LT8640/LT8640-1降压稳压器采用Silent Switcher架构,设计用于最大限度地降低EMI/EMC辐射并在高达3MHz的频率下提供高效率。由于具有2.5μA的超低静态电流(当输出处于全面调节状态时),因此适用于要求在非常小负载电流条件下获得极高…

ICP算法加速优化--多线程和GPU

LZ之前的文章ICP算法实现(C) 用C实现了基础的ICP算法,由于该算法是一种迭代的优化算法,里面含有大量循环操作以及矩阵运算,可以通过使用多线程或者GPU硬件来进行加速,具体分别可以通过OpenMP和CUDA编程实现…

六、【React基础】组件实例三大核心属性之三 refs + 事件处理

文章目录1、字符串形式的ref(过时/不推荐)2、回调形式的ref(推荐!!!)● 回调ref中回调次数的问题3、createRef创建ref容器(最新最推荐)4、事件处理理解:组件内…

Web3D应用开发在线IDE【中文版】

nunuStudio 是一个Web 3D应用程序的集成开发环境,它提供用于在 3D 世界中创建和编辑对象的工具,支持JavaScript和Python对3D场景进行二次开发。nunuStudio中文版 由 BimAnt 提供。 如果你曾经使用过其他类似的框架(unity、playcanvas、godot …

Spring Boot 3.0 正式发布了!一个超重要的版本!!

首发于 JavaGuide (「Java学习面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!) 紧跟着 Spring Framework 6.0 的正式发布,就在昨天,Spring Boot 3.0 也正式发布了! 这是一…

供应多臂PEG衍生物4-Arm PEG-Azide,4-Arm PEG-N3,四臂-聚乙二醇-叠氮

1、名称 英文:4-Arm PEG-Azide,4-Arm PEG-N3 中文:四臂-聚乙二醇-叠氮 2、CAS编号:N/A 3、所属分类:Azide PEG Multi-arm PEGs 4、分子量:可定制,四臂-PEG 2000-叠氮、4-Arm PEG-N3 20000、…

深入分析序列化和反序列化原理,终于知道serialVersionUID到底有什么用了

一个问题引发的思考 下面是一个简单的socket通信demo。 通信数据类: package com.zwx.serialize.demo; public class SocketUser { public SocketUser(String id, String name) {this.id id;this.name name; }private String id; private String name;public St…

ADAU1860调试心得(2)硬件和软件的详细说明

硬件 一台64位的PC,一块ADAU1860EVB开发板,一个LARK-1860专用仿真器,音频线若干,mini USB线一根,一个到三个输入音源,可以是PC或者手机或者其他模拟音频输入设备, 一个输出音源设备,…

什么是DCS系统?DCS和SCADA的区别

如果你在工业自动化的企业环境中操作,可能听说过分布式控制系统 (DCS) 和监控和数据采集 (SCADA) 系统。 DCS系统和SCADA系统有很多共同点,因为它们都被称为受控计算机系统,接收和评估合法数据以实现远程访问监控和管理。 DCS(分布式控制系…

Python实现BP神经网络ANN单隐层分类模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一…

内外通、效益增 | 数商云•瓴犀产品3.0开启全方位精准精细化协同模式

今年以来,芯片短缺、原材料价格飙升、集装箱价格高企等现象再次将国内外供应链问题推到了聚光灯下。在这种背景下,供应链协同的重要性日益凸显,供应链协同的趋势正在加速。一方面,随着电子商务、直播等前端消费场景的多样化&#…

The Sandbox 与韩流 Web 3.0 初创企业 Modhaus 达成合作

此合作关系旨在与韩流女团「tripleS」一起开展元宇宙业务。 简要概括 创建一个粉丝参与的社交中心并举办各种活动。 发布 tripleS NFT、人物化身的可穿戴设备和数位收藏品。 Modhaus 和 The Sandbox 将创建一个社交中心,让粉丝参与在元宇宙举办的活动,以…

基于MxNet实现目标检测-FasterRCNN【附部分源码及模型】

文章目录前言目标检测发展史及意义一、数据集的准备1.标注工具的安装2.数据集的准备3.标注数据4.解释xml文件的内容二、网络结构的介绍三、代码实现0.工程目录结构如下1.导入库2.配置GPU/CPU环境3.数据加载器4.模型构建5.模型训练1.学习率设置2.优化器设置3.损失设置4.循环训练…

流程编排、如此简单-通用流程编排组件JDEasyFlow介绍

作者:李玉亮 JDEasyFlow是企业金融研发部自研的通用流程编排技术组件,适用于服务编排、工作流、审批流等场景,该组件已开源(https://github.com/JDEasyFlow/jd-easyflow),目前在部门的内部业务系统和科技输出系统中广泛应用&…

项目经理年终夜话:我的“第二年状态”

近日,网络热词“第二年状态”又引发了网友们的热议,是指最初的热情消磨后,幻想破灭,在理想与现实巨大落差面前,陷入迷茫与彷徨。 而“如何度过第二年状态?”这一话题也被大家讨论和分享。其中,贾…

分布式文件系统HDFS实践及原理详解part3

HDFS原理 说明:3.5开头目录是因为和上篇文章内容同属一章,所以开头使用了3.5 3.5 HDFS核心设计 3.5.1 心跳机制 1、 Hadoop 是 Master/Slave 结构,Master 中有 NameNode 和 ResourceManager,Slave 中有 Datanode 和 NodeManag…

Milvus 2.2 版本发布!

经过了 4 个月的打磨,Milvus 2.2.0 于 11 月 18 日正式发版!2.2 版本推出了包括基于磁盘的近似最近邻(ANN)索引算法、从文件批量导入数据、基于角色的访问控制等新特性。进一步提升了向量搜索的稳定性、搜索速度和灵活的扩缩容能力…