mediapipe github:https://github.com/google/mediapipe
mediapipe 官网:https://google.github.io/mediapipe/
dlib 官网:http://dlib.net/
dlib github:https://github.com/davisking/dlib
MediaPipe是一款由Google开发并开源的数据流处理机器学习应用开发框架。它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。 MediaPipe是跨平台的,可以运行在嵌入式平台(树莓派等),移动设备(iOS和Android),工作站和服务器上,并支持移动端GPU加速。 MediaPipe为实时和流媒体提供跨平台、可定制的ML解决方案。
MediaPipe 的核心框架由 C++ 实现,并提供 Java 以及 Objective C 等语言的支持。MediaPipe 的主要概念包括数据包(Packet)、数据流(Stream)、计算单元(Calculator)、图(Graph)以及子图(Subgraph)。
MediaPipe的特点:
MediaPipe中的深度学习解决方案
Face Detection | Face Mesh | Iris | Hands | Pose | Holistic |
---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Hair Segmentation | Object Detection | Box Tracking | Instant Motion Tracking | Objectron | KNIFT |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Android | iOS | C++ | Python | JS | Coral | |
---|---|---|---|---|---|---|
Face Detection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Face Mesh | ✅ | ✅ | ✅ | ✅ | ✅ | |
Iris | ✅ | ✅ | ✅ | |||
Hands | ✅ | ✅ | ✅ | ✅ | ✅ | |
Pose | ✅ | ✅ | ✅ | ✅ | ✅ | |
Holistic | ✅ | ✅ | ✅ | ✅ | ✅ | |
Selfie Segmentation | ✅ | ✅ | ✅ | ✅ | ✅ | |
Hair Segmentation | ✅ | ✅ | ||||
Object Detection | ✅ | ✅ | ✅ | ✅ | ||
Box Tracking | ✅ | ✅ | ✅ | |||
Instant Motion Tracking | ✅ | |||||
Objectron | ✅ | ✅ | ✅ | ✅ | ||
KNIFT | ✅ | |||||
AutoFlip | ✅ | |||||
MediaSequence | ✅ | |||||
YouTube 8M | ✅ |
----------------------------------- ROS --------------------------------------------
roslaunch yahboomcar_mediapipe cloud_Viewer.launch # 点云查看:支持01~04
roslaunch yahboomcar_mediapipe 01_HandDetector.launch # 手部检测
roslaunch yahboomcar_mediapipe 02_PoseDetector.launch # 姿态检测
roslaunch yahboomcar_mediapipe 03_Holistic.launch # 整体检测
roslaunch yahboomcar_mediapipe 04_FaceMesh.launch # 面部检测
roslaunch yahboomcar_mediapipe 05_FaceEyeDetection.launch # 人脸识别
如果使用的是单目相机或者树莓派CSI相机则分别需要将
01_HandDetector_usb.py、02_PoseDetector_usb.py、03_Holistic_usb.py、04_FaceMesh_usb.py、05_FaceEyeDetection_usb.py名称改成01_HandDetector.py、02_PoseDetector.py、03_Holistic.py、04_FaceMesh.py、05_FaceEyeDetection.py
如果使用的是jetson CSI相机则分别需要将
01_HandDetector_csi.py、02_PoseDetector_csi.py、03_Holistic_csi.py、04_FaceMesh_csi.py、05_FaceEyeDetection_csi.py名称改成01_HandDetector.py、02_PoseDetector.py、03_Holistic.py、04_FaceMesh.py、05_FaceEyeDetection.py
xxxxxxxxxx
--------------------------------- not ROS ------------------------------------------
cd ~/yahboomcar_ws/src/yahboomcar_mediapipe/scripts # 进入源码所在目录
python3 06_FaceLandmarks.py # 人脸特效
python3 07_FaceDetection.py # 人脸检测
python3 08_Objectron.py # 三维物体识别
python3 09_VirtualPaint.py # 画笔
python3 10_HandCtrl.py # 手指控制
python3 11_GestureRecognition.py # 手势识别
在使用过程中,需注意的有
01、手部检测 | ![]() |
---|---|
02、姿态检测 | ![]() |
03、整体检测 | ![]() |
04、面部检测 | ![]() |
---|
05、人脸识别 | 06、人脸特效 | 07、人脸检测 |
---|---|---|
![]() | ![]() | ![]() |
08、三维物体识别 | 09、画笔 | |
![]() | ![]() |
10、手指控制 | ![]() |
---|---|
11、手势识别 | ![]() |
MediaPipe Hands是一款高保真的手和手指跟踪解决方案。它利用机器学习(ML)从一帧中推断出21个手的3D坐标。
在对整个图像进行手掌检测后,根据手部标记模型通过回归对检测到的手区域内的21个3D手关节坐标进行精确的关键点定位,即直接坐标预测。该模型学习一致的内部手姿势表示,甚至对部分可见的手和自我遮挡也具有鲁棒性。
为了获得地面真实数据,用了21个3D坐标手动注释了约30K幅真实世界的图像,如下所示(从图像深度图中获取Z值,如果每个对应坐标都有Z值)。为了更好地覆盖可能的手部姿势,并对手部几何体的性质提供额外的监督,还绘制了各种背景下的高质量合成手部模型,并将其映射到相应的3D坐标。
MediaPipe Pose是一个用于高保真身体姿势跟踪的ML解决方案,利用BlazePose研究,从RGB视频帧推断出33个3D坐标和全身背景分割遮罩,该研究也为ML Kit姿势检测API提供了动力。
MediaPipe姿势中的地标模型预测了33个姿势坐标的位置(参见下图)。
对应的案例是人脸特效。
DLIB是一个现代C++工具包,包含机器学习算法和工具,用于在C++中创建复杂的软件来解决现实世界问题。它被工业界和学术界广泛应用于机器人、嵌入式设备、移动电话和大型高性能计算环境等领域。
dlib库采用68点位置标志人脸重要部位,比如18-22点标志右眉毛,51-68标志嘴巴。使用dlib库的get_frontal_face_detector模块探测出人脸,使用shape_predictor_68_face_landmarks.dat特征数据预测人脸特征数值