技术笔记Android应用MediaPipe(一):Windows安装MediaPipe

一、MediaPipe概述

MediaPipe提供跨平台,为实时流媒体提供自定义的机器学习解决方案的应用框架。MediaPipe的主要特点:
(1)端对端的加速:内置快速机器学习推理和处理,使得在普通硬件中也能加速使用。
(2)构建一次,部署任何地方。统一解决方案,可以在Android、iOS、桌面、云端、Web和IoT上部署运行。
(3)即用型解决方案。即用型解决方案:展示框架全部功能的尖端 ML 解决方案
(4)免费和开源。框架和解决方案满足Apache2.0,可以扩展和自行定制。
MediaPipe提供机器学习的方案包括

(1)脸部识别 Face Detection
(2)脸部网格 Face Mesh
(3)虹膜识别 Iris
(4)手势识别 Hands
(5)姿态识别 Pose
(6)全身姿态识别 Holistic
(7)头发分割 Hair Segmentation
(8)3D物品的识别 Object Detection
(9)目标追踪 Box Tracking
(10)瞬时移动追踪 Instant Motion Tracking
(11)物品检测 Objectron

二、在Windows安装MediaPipe

因为构建MediaPipe Android移动应用不能运行在原生的Windows中,因此需要安装MSYS2
从“https://github.com/msys2/msys2-installer/releases/download/2022-10-28/msys2-x86_64-20221028.exe”中下载msys32-x86_64-20221028.exe软件,选择自定义的路径:例如:C:\msys64
然后在系统/设置中设置该路径到PATH路径中。

1.安装和配置MSYS2

(1)安装MSYS2
安装成功后,显示
安装MSYS2成功

(2)设置PATH环境变量

如果MSYS2安装到D:\msys64,则将D:\mysys64\usr\bin加入到PATH环境变量中。
设置Path路径

加入到Path环境变量中

(3).msys2安装必要的工具包

安装
C:> pacman -S git patch unzip

3.安装Python


并将Python可执行编辑到Path环境变量中

4.安装Visual C++ Build Tools 2022工具和WinSDK

Visual C++ Build Tools 2022工具包的地址是:https://aka.ms/vs/17/release/vs_BuildTools.exe
安装构建工具
在安装Visual C++ Build Tools 2022工具包时,也可以直接选择WinSDK工具包,可以在Visual Studio Install可选工具包中勾选Windows 11 SDK(也可以按照自身的操作系统进行设置),如下图所示:
在这里插入图片描述
也可以单独安装WinSDK工具包,WinSDK的地址是:
https://go.microsoft.com/fwlink/p/?linkid=2196241
5.安装Bazel或者Bazelis,并将Bazel安装的位置设置到Path环境变量中。
Bazel各种版本可以通过:https://github.com/bazelbuild/bazel/releases
进行选择。
因为官方网站下载速度比较慢,可以使用国内镜像源华为云的网站https://mirrors.huaweicloud.com/bazel/进行选择对应的版本进行下载。
本文选择了:
https://mirrors.huaweicloud.com/bazel/5.3.2/

Bazelis的下载位置:https://docs.bazel.build/versions/master/install-bazelisk.html
安装Bazel成功后,设置Bazel到Path环境变量中,

# Please find the exact paths and version numbers from your local version.
C:\> set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
C:\> set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC
C:\> set BAZEL_VC_FULL_VERSION=<Your local VC version>
C:\> set BAZEL_WINSDK_FULL_VERSION=<Your local WinSDK version>

在笔者安装的Visual C++ Build Tools 2022的版本是 14.33.31629
Windows SDK 的版本是10.0.22621.0
如下列代码所示:

C:\>set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools
C:\>set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC
C:\>set BAZEL_VC_FULL_VERSION=14.33.31629
C:\>set BAZEL_WINSDK_FULL_VERSION=10.0.22621.0

5.设置JDK

JDK需要安装和配置OpenJDK,过程略

6.安装MediaPipe

(1)从git中拷贝MediaPipe到本地
直接执行:git clone https://github.com/google/mediapipe.git
会出现fatal: unable to access ‘https://github.com/google/mediapipe.git/’: OpenSSL SSL_read: Connection reset by peer, errno 104问题。
这是因为:服务器的SSL证书没有经过第三方机构的签署,所以才报错。
因此,通过解除ssl安全验证,如下所示:
git config --global http.sslVerify “false”
再执行git拷贝命令获取mediapipe
git clone https://github.com/google/mediapipe.git
执行过程如下所示:
拷贝MediaPipe到本地

7.安装OpenCV并修改MediaPipe中OpenCV的设置

下载并安装OpenCV,网址为:https://opencv.org/releases/
目前使用的OpenCV的版本是OpenCV 4.6.
编辑MediaPipe中的WORKSPACE文件中关于OpenCV构建目录的,修改为:
new_local_repository(
name = “windows_opencv”,
build_file = “@//third_party:opencv_windows.BUILD”,
path = “C:\ \build”,
)
WORKSPACE文件的位置

8.测试bazel构建MediaPipe应用

然后测试是否bazel构建MediaPipe是否成功。
从网站下载hello_world.cc文件,网址如下所示:https://github.com/google/mediapipe/blob/master/mediapipe/examples/desktop/hello_world/hello_world.cc
将hello_world.cc文件拷贝到mediapipe的example目录下,如下图所示:

hello_world.cc

进入mediapipe的安装目录,再执行
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=“D://anaconda3//python.exe” mediapipe/examples/desktop/hello_world:hello_world --sandbox_debug

如下图所示:
在这里插入图片描述
这里–action_env PYTHON_BIN_PATH需要修改为自己本机上的python.exe所在的位置。
执行bazel构建命令时,可能一些关于tensorflow的依赖不能在网站上找到,会导致404错误。类似如下内容:

WARNING: Download from http://mirror.tensorflow.org/github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz failed: class java.io.FileNotFoundException GET returned 404 Not Found
WARNING: Download from https://storage.googleapis.com/mirror.tensorflow.org/github.com/tensorflow/runtime/archive/8700849191dea2ca9c12a3d26ec41fac0814671b.tar.gz failed: class java.io.FileNotFoundException GET returned 404 Not Found

如果发生这样的问题,可以根据官方的建议增加VPN或代理来解决问题。根据参考文献4可以:
bazel --host_jvm_args “-DsocksProxyHost=192.168.0.112 -DsocksProxyPort=1080” run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world
构建成功后生成hello_world.exe文件,如下图所示:
构建成功的界面
运行hello_world.exe需要执行:

set set GLOG_logtostderr=1
hello_world.exe

运行结果如下图所示:
在这里插入图片描述

参考文献

1.MediaPipe https://google.github.io/mediapipe/

2.MSYS2 Software Distribution and Building Platform for Windows https://www.msys2.org/

3.Tool之Bazel:Bazel的简介、安装、使用方法之详细攻略 https://bbs.huaweicloud.com/blogs/detail/255296

4.Error encountered during installation https://github.com/google/mediapipe/issues/581#issuecomment-610356857

猜你喜欢

转载自blog.csdn.net/userhu2012/article/details/127697196