Jetson 共用资料

MediaPipe开发

2023-07-21 admin

MediaPipe开发

mediapipe github:https://github.com/google/mediapipe 

mediapipe 官⽹:https://google.github.io/mediapipe/ 

dlib 官⽹:http://dlib.net/ 

dlib github:https://github.com/davisking/dlib

1.简介

MediaPipe是一款由Google开发并开源的数据流处理机器学习应用开发框架。它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。 MediaPipe是跨平台的,可以运行在嵌入式平台(树莓派等),移动设备(iOS和Android),工作站和服务器上,并支持移动端GPU加速。 MediaPipe为实时和流媒体提供跨平台、可定制的ML解决方案。

MediaPipe 的核心框架由 C++ 实现,并提供 Java 以及 Objective C 等语言的支持。MediaPipe 的主要概念包括数据包(Packet)、数据流(Stream)、计算单元(Calculator)、图(Graph)以及子图(Subgraph)。

MediaPipe的特点:

端到端加速:内置的快速ML推理和处理即使在普通硬件上也能加速。

一次构建,随时随地部署:统一解决方案适用于Android、iOS、桌面/云、web和物联网。

即用解决方案:展示框架全部功能的尖端ML解决方案。

免费开源:Apache2.0下的框架和解决方案,完全可扩展和定制。

MediaPipe中的深度学习解决方案

 

 

 

 

2.使用

这里只示范py文件的案例。

cd ~/med_test/scripts (此文件在附件里面提供)

python3 01_FaceLandmarks.py     # 人脸特效

python3 02_FaceDetection.py     # 人脸检测

python3 03_Objectron.py        # 三维物体识别

python3 04_VirtualPaint.py      # 画笔

python3 05_HandCtrl.py        # 手指控制

python3 06_GestureRecognition.py  # 手势识别

在使用过程中,需要把附件中的module下的文件复制到/home/nvidia/.local/lib/python3.8/site-packages/mediapipe/modules/objectron

手部检测、姿态检测、整体检测、面部检测均具备点云查看功能,以面部检测为例。

所有功能ctrl+c””为退出。

整体检测:包括手部、脸部、身体姿态检测。

三维物体识别:可识别的物体有:【'Shoe', 'Chair', 'Cup', 'Camera'】,一共4类;点击【f键】切换识别物体;jetson系列不可用键盘按键,切换识别物体需改源码中的【self.index】参数。

画笔:右手食指和中指合并时是选择状态,同时弹出颜色选框,两指尖移动到对应颜色位置时,选中该颜色(黑色为橡皮擦);食指和中指分开始是绘画状态,可在画板上任意绘制。

手指控制:点击【f键】切换识别效果。

手指识别:以右手为准设计的手势识别,满足特定条件时,均可以准确识别。可识别的手势有:【Zero、One、Two、Three、Four、Five、Six、Seven、Eight、Ok、Rock、Thumb_up(点赞)、Thumb_down(拇指向下)、Heart_single(单手比心)】,一共14类。

注意:这几个案例都是在CSI板载摄像头上使用的,要是想用usb摄像头可以修改程序里面的capture改成下图这样。

 

3.MediaPipe Hands

MediaPipe Hands是一款高保真的手和手指跟踪解决方案。它利用机器学习(ML)从一帧中推断出21个手的3D坐标。

在对整个图像进行手掌检测后,根据手部标记模型通过回归对检测到的手区域内的21个3D手关节坐标进行精确的关键点定位,即直接坐标预测。该模型学习一致的内部手姿势表示,甚至对部分可见的手和自我遮挡也具有鲁棒性。

为了获得地面真实数据,用了21个3D坐标手动注释了约30K幅真实世界的图像,如下所示(从图像深度图中获取Z值,如果每个对应坐标都有Z值)。为了更好地覆盖可能的手部姿势,并对手部几何体的性质提供额外的监督,还绘制了各种背景下的高质量合成手部模型,并将其映射到相应的3D坐标。

 

4.MediaPipe Pose

MediaPipe Pose是一个用于高保真身体姿势跟踪的ML解决方案,利用BlazePose研究,从RGB视频帧推断出33个3D坐标和全身背景分割遮罩,该研究也为ML Kit姿势检测API提供了动力。

MediaPipe姿势中的地标模型预测了33个姿势坐标的位置(参见下图)。

 

5.dlib

对应的案例是人脸特效。

DLIB是一个现代C++工具包,包含机器学习算法和工具,用于在C++中创建复杂的软件来解决现实世界问题。它被工业界和学术界广泛应用于机器人、嵌入式设备、移动电话和大型高性能计算环境等领域。

dlib库采用68点位置标志人脸重要部位,比如18-22点标志右眉毛,51-68标志嘴巴。使用dlib库的get_frontal_face_detector模块探测出人脸,使用shape_predictor_68_face_landmarks.dat特征数据预测人脸特征数值

 

 

 


首页
产品
案例
联系