问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 25 人浏览分享

开启左侧

MediaPipe 21点手部关键点介绍

[复制链接]
25 0
AI视觉模型
视觉模型: 1-视觉模型介绍 » X
MediaPipe介绍
MediaPipe的简介
MediaPipe是一个跨平台的机器学习框架,专注于实时流式数据处理,特别适用于计算机视觉任务。它为研究人员和开发者提供了一种简单的方式,用于创建适用于移动设备、边缘计算和云端的机器学习解决方案及应用程序。MediaPipe支持实时处理图像和视频数据,可以进行诸如物体检测、手部追踪、面部识别等多种任务。其特点包括:
高效实时处理:基于图计算设计,支持低延迟处理。
跨平台支持:可运行于 Python、C++、Android、iOS、Web(JavaScript) 等多种环境。
预训练模型库:提供手势检测、姿势估计、面部识别、物体检测等多种即用型模型,显著降低开发门槛。
硬件加速优化‌:在移动端和嵌入式平台(如Jetson设备)上支持GPU加速,提升推理效率。

MediaPipe核心概念
MediaPipe 的核心框架由 C++ 实现。

MediaPipe 的主要概念包括:

1. 计算单元(Calculator)
预置计算单元‌:由谷歌团队开源实现,涵盖图像处理、音频分析、模型推理等通用功能,可直接复用。
定制计算单元‌:用户通过实现 Open()(初始化资源)、Process()(处理数据包)、Close()(释放资源)三个核心方法,快速构建专用处理逻辑。
2. 图(Graph)以及子图(Subgraph):
有向图‌:数据包从数据源(Source Calculator或者 Graph Input Stream)流入图直至在汇聚结点(Sink Calculator 或者 Graph Output Stream) 离开。                                    
子图复用机制‌:为解决通用功能(如图像预处理、模型推理、渲染)的重复开发问题,MediaPipe 引入子图(Subgraph)的概念。子图可封装为独立模块,在不同图中直接调用,显著提升开发效率。
3. 数据包(Packet)
基本单位‌:数据包是 MediaPipe 中数据的最小载体,代表某一时间点的具体数据(如单帧图像、音频片段或模型输出)。
4. 数据流(Stream)
数据流是由按时间顺序升序排列的多个数据包组成,一个数据流的某一特定时间戳(Timestamp)只允许至多一个数据包的存在。而数据流则是在多个计算单元构成的图中流动。

MediaPipe手部关键点检测介绍
手指关键点检测技术原理解析
1. 手掌检测阶段:使用BlazePalm单阶段检测器定位手部区域,通过特征金字塔网络(FPN)增强小目标检测能力。
2. 关键点回归阶段:基于热力图回归的架构,对21个三维关键点进行空间定位,包含指尖、指节等精细点位。模型输出包含x/y/z坐标及可见性分数,z坐标通过相对深度估算实现空间感知。
架构
1.      手掌检测器:通过扫描全图,用一个有方向的手部定位框来定位手掌的位置。
2.      手部坐标模型:通过在手掌检测器裁剪的手部定位框上做操作,返回高保真的2.5D坐标。

提供给手部坐标模型的是精确裁剪的手掌图片,极大的降低数据增强(例如旋转,平移和缩放)操作,可以使模型的性能都用来提高坐标定位的精度。

手部坐标预测模型
手部坐标预测模型有三个输出:
1. 手部21个关键点坐标
2. 手存在的置信度
3. 左右手的二分类

(1)手部关键点坐标包含x、y、z三个值,其中x和y坐标可以直接映射到图像平面,通过乘以图像的宽度和高度即可获得关键点在图像中的具体位置。z坐标代表相对深度信息,以手腕处的深度为原点。值越小,表示距离相机越近。该模型共输出21个关键点,涵盖手腕、拇指、食指、中指、无名指和小指等部位。

image.jpg

(2)手存在的置信度反映了手掌检测模型识别到手部存在的概率。
(3)左右手的二分类通过内置分类器实现,该分类器会分析手部关键点的空间分布特征,明确返回"Left"或"Right"标签来区分检测到的是左手还是右手。

TensorFlow介绍
TensorFlow是一个基于数据流图的机器学习框架。数据流图是由节点和边组成的网络,其中节点代表数学运算,边代表张量传递的数据。
1. 张量
它可以看作是一个多维数组,可以存储各种类型的数据,如整数、浮点数和布尔值等。在TensorFlow中,所有的数据都是以张量的形式进行操作和处理的。
2. 计算图
在这个图中,节点代表数学运算(如加法、乘法、神经网络层等),而边则代表张量,即在节点间传递的数据。TensorFlow中的计算图可以是静态的,也可以是动态的。通过构建计算图,我们可以将复杂的机器学习算法简化为一系列简单的数学运算。
3. 会话
会话是TensorFlow中执行计算图的接口。在会话中,可以创建张量、定义运算,并最终触发计算图的执行以获取计算结果。会话负责管理计算资源(如GPU内存),并协调图中各节点的执行顺序,确保计算过程的高效与正确。

MediaPipe 手势识别的模型组成
MediaPipe 的 gesture_recognizer.task  是一个任务包(Task Bundle),里面打包了多个 .tflite 模型和任务配置文件。解压后,其核心组件及功能如下:

1.  hand_landmarker.task
hand_detector.tflite:手部检测模型,负责定位图像或视频帧中的手部区域‌。
hand_landmarks_detector.tflite:手部关键点检测模型,输出21个手部关键点的三维坐标‌。

2.  hand_gesture_recognizer.task
gesture_embedder.tflite:将手部关键点坐标转换为固定长度的特征向量(embedding)。
canned_gesture_classifier.tflite:手势分类器(输出具体手势类别)。

这四个模型构成了完整的 pipeline:
手部检测 → 关键点定位 → 特征嵌入 → 手势分类




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

7

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版