MediaPipe介绍
Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning)方案。Mediapipe实际上是一个集成的机器学习视觉算法的工具库,包含了人脸检测、人脸关键点、手势识别、头像分割和姿态识别等各种模型。
1)支持各种平台和语言,包括IOS,Android,C++,Python,JAVAScript,Coral等;
2)速度快,各种模型基本上可以做到实时运行。
MediaPipe依赖OpenCV来处理视频,FFMPEG来处理音频数据。它还有其他依赖项,如OpenGL/Metal、Tensorflow、Eigen等。
Netcom的感知系统、谷歌镜头的目标检测、增强现实广告、谷歌图片、谷歌Home、Gmail、云视觉API等。
预处理计算单元是图像和媒体处理计算单元族。上图中的ImageTransform和imagetotensor就属于这一类;
推理计算单元允许与Tensorflow和Tensorflow Lite进行ML推理的本地集成;
后处理计算单元执行ML后处理任务,如检测、分割和分类。TensorToLandmark是一个后处理计算单元;
计算单元工具是执行任务的一类计算单元。
Solutions是基于特定的预训练TensorFlow或TFLite模型的开源预构建示例。它一共提供了16个Solutions:人脸检测、Face Mesh(面网)、虹膜、手、姿态、人体、人物分割、头发分割、目标检测、Box Tracking(方格追踪)、Instant Motion Tracking(实时运动跟踪)、3D目标检测、特征匹配、AutoFlip(视频裁剪)、MediaSequence(媒体序列)、YouTube-8M(视频标签比赛)。
框架是用c++、Java和Obj-C编写的,包含以下api:
Graphs
MediaPipe感知管道称为Graph。让我们以第一个solution为例,汉兹。我们输入一串图像作为输入,然后在图像上呈现手的landmarks。
下面的流程图代表MP(简称MediaPipe)hand solution graph。
手势识别
基于mediapipe我们已经能够获取手指关键点的坐标位置了,进一步只需要判断每根手指的开合状态即可得到手势。先贴以下关键点分布图:
1.OpenCV调用摄像头(同手势识别);
2.调用Mediapipe中的pose模块;
3.demo示例。
姿态估计模型主要有三类:
1.运动学模型:它是一种基于骨骼的模型,代表人体。
2.平面模型:平面模型是一种基于轮廓的模型,它使用人体周围的轮廓来表示人体形状。
3. 体积模型:体积模型创建人体的 3d 网格,表示人体的形状和外观