mediapipe可以被视为谷歌版的onnx,其设计目的在于跨平台部署AI模型,并提供一系列工具来监测不同平台、不同设备运行人工智能模型时的性能表现。
尽管mediapipe已经陆续支持训练自定义模型,但博主更推荐使用Pytorch/Tensorflow训练模型,再通过mediapipei进行部署。正如前文所言,可以把mediapipe当做onnx来使用。
mediapipe支持的平台、解决方案和工具如下。
Android、iOS、Python、JavaScript、C++
(1)视觉任务
对象检测、图像分类、图像分割、交互式分割、手势识别、手部特征点检测、嵌入图片、人脸检测、面部特征检测、姿态特征点检测、人脸风格化、整体特征点检测。
(2)文本任务
文本分类、文本嵌入、语言检测。
(3)音频任务
音频分类。
针对计算图和推理管道的可视化工具、推理过程的分析与跟踪工具、模型性能基准测试工具(未推出)。
在安装和使用mediapipe之前,有必要呈现mediapipe的四个官方网站。由于网站是不断更新的,建议在安装和使用mediapipe之前仔细阅读。
Home - mediapipe( chuoling.github io/mediapipe/)
这个网站实际上就是介绍了mediapipe支持的平台、提供的解决方案和具有的工具。
MediaPipe 解决方案指南 | Google AI Edge | Google AI for Developers( ai.google dev/edge/mediapipe/solutions/guide?hl=zh-cn)
这个网站提供了在线调用AI模型的功能,可能需要科学上网。除此之外,提供了在不同平台上安装和使用mediapipe的指南。
GitHub - google-ai-edge/mediapipe: Cross-platform, customizable ML solutions for live and streaming media.( github /google-ai-edge/mediapipe)
这个网站指向mediapipe项目源,提供了在不同平台上使用mediapipe的必备资源。
GitHub - google-ai-edge/mediapipe-samples( github /google-ai-edge/mediapipe-samples/tree/main)
案例GitHub和库GitHub是两个不同的概念,案例GitHub提供了在不同平台上部署mediapipe的程序,例如提供了在树莓派平台上调用图像分类模型进行推理的程序(用户无需编程)。
根据相关报道,截止2024年12月,Python已经超过C++成为最受欢迎的编程语言。因此,本篇将以Python为例,说明如何在Windows上安装和使用mediapipe。
本博客的主要阅读对象是刚接触人工智能的新手用户,因此,将尽可能详细地介绍从miniconda的安装到mediapipe的安装。
miniconda是管理Python虚拟环境的一款软件,下载地址如下,注意只需要下载miniconda而不是Anaconda。下载完成后安装即可。
Download Now | Anaconda( anaconda 商业网/download/success)

在“开始”的搜索框中输入“miniconda”,然后打开Anaconda Prompt。

在打开的Anaconda Prompt中,输入以下指令,设置为默认镜像源下载。
conda config --add channels defaults
然后,输入以下指令,创建mediapipe环境。
conda create -n mediapipe python==3.12

如果完成mediapipe虚拟环境的创建,将显示以下画面。

使用以下指令,激活mediapipe环境。
conda activate mediapipe
使用以下指令,安装mediapipe。
pip install mediapipe

安装完成后,测试mediapipe是否可用。输入以下指令,如果没有报错,则说明mediapipe已完成安装。
python
import mediapipe as mp

如果存在依赖库冲突,请下载requirements.txt文件,并使用以下指令进行安装。
pip install -r requirements.txt
如前所述,mediapipe提供了一系列示例程序,新手用户可以直接运行这些示例程序,体验不同类型的人工智能任务。
mediapipe samples是官方提供的一系列示例程序,从案例GitHub下载或从本博客绑定资源下载。
GitHub - google-ai-edge/mediapipe-samples( github /google-ai-edge/mediapipe-samples)

由于mediapipe samples需要使用到wget工具,需要打开网站下载。
【Windows wget 下载地址】GNU Wget 1.21.4 for Windows( eternallybored 组织网/misc/wget/)
下载最新版本。

【Linux wget 下载地址】Index of /gnu/wget( ftp.gnu 组织网/gnu/wget/)
以Windows系统为例,下载完成后,将wget.exe复制粘贴到以下地址。
C:\Windows\System32
然后,按下win+R运行cmd,输入wget后,如果出现下图提示,说明wget已经可以正常使用。

对于视觉任务,mediapipe依赖opencv库,因此,还需要在mediapipe虚拟环境中安装opencv-python。【使用requirements.txt安装时可跳过】
首先,打开anaconda prompt并激活mediapipe虚拟环境。
然后,输入以下指令安装opencv-python。
pip install opencv-python
安装完成后,无需退出anaconda prompt及mediapipe虚拟环境。
至此,终于可以使用mediapipe示例程序了!
在mediapipe-samples文件夹中,examples子文件夹存放了多种任务。

接下来,以运行hand_landmarker(手部关键点检测)为例,介绍如何使用mediapipe示例程序。
进入hand_landmarke文件夹,发现一共有5个平台,其中python是在计算机上运行的,raspberry_pi是在树莓派上运行的。由于python子文件夹中使用的是.ipynb格式,配置相应的运行环境比较麻烦,所以使用raspberry_pi文件夹中的程序。

进入raspberry_pi文件夹,右键选中detect.py,选择“复制文件地址”。

在anaconda prompt中粘贴以下指令,注意示例程序的地址应该根据实际情况做修改。
python "C:\Users\71401\Desktop\mediapipe-samples\examples\hand_landmarker\raspberry_pi\detect.py"

如果程序正确运行,系统将弹出一个窗口,此时画面中将显示出手部关键点检测的实时推理结果。

如果要退出推理,在此窗口中按ESC键即可。
不同设备的摄像机默认方向不同,如果发现左右手相反,可以打开detect.py程序,将102行注释掉(或删掉)。注释某行代码,只需在改行代码的开头处添加#符号。

然后保存程序,最后再用上述指令运行,可以发现摄像头的捕捉画面反过来了,并且左右手的识别也发生调整。


