在Wsl安装Mediapipe环境

1,000 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

Mediapipe介绍

Mediapipe是google的一个开源项目,它用于构建机器学习管道的框架,用于处理视频、音频等时间序列数据。(个人觉得类似与百度的飞桨,但谷歌的文档很不完善,对新手极度不友好)。其适用于Web、C++、Android、iOS、嵌入式等平台,提供了人脸检测、面部检查、虹膜检测、手部检测、整体检测、头发分割、物体检测、即时运动追踪等解决方案。

image.png

安装wsl

由于在原生 Windows 上构建 MediaPipe Android 应用程序仍然是不可能的。因此手持windows开发的同学(比如我)就只能借助wsl(windows子系统)来构建mediapip程序。

1. 安装适用于 Linux (Ubuntu) 的 Windows Sysystem

在*Microsoft Stor搜索关键词ubuntu**,下载相应版本的安装包。

image.png

2. 安装ADB

进入wsl命令行界面,执行sudo apt install adb命令安装adb,如果windows已经有adb工具包,需要将windows中adb与wsl中adb版本保持一致,否则会出现无法连接现象。

3. 安装所需的软件包

sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk

4. 安装bazel

bazel是谷歌用于构建mediapipe的工具,其作用类似与安卓中的gradle。 可以使用以下任意方法在 Ubuntu 上安装 Bazel(我用的第二种):

5. 下载mediapipe存储库

在命令行中执行clone命令,并进入mediapipe目录

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

cd mediapipe

6. 安装 OpenCV 和 FFmpeg。

使用包管理器工具安装预编译的 OpenCV 库。FFmpeg 将通过 libopencv-video-dev 安装。

sudo apt-get install libopencv-core-dev libopencv-highgui-dev \
                       libopencv-calib3d-dev libopencv-features2d-dev \
                       libopencv-imgproc-dev libopencv-video-dev

注:可能需要修改WORKSPACE并将opencv_linux.BUILDMediaPipe 指向本机的 OpenCV 库,例如,如果 OpenCV 4 安装在“/usr/local/”中,则需要更新“linux_opencv”new_local_repository 规则WORKSPACE和“opencv”cc_library 规则opencv_linux.BUILD如下所示:

new_local_repository(
    name = "linux_opencv",
    build_file = "@//third_party:opencv_linux.BUILD",
    path = "/usr/local",
)

cc_library(
    name = "opencv",
    srcs = glob(
        [
            "lib/libopencv_core.so",
            "lib/libopencv_highgui.so",
            "lib/libopencv_imgcodecs.so",
            "lib/libopencv_imgproc.so",
            "lib/libopencv_video.so",
            "lib/libopencv_videoio.so",
        ],
    ),
    hdrs = glob(["include/opencv4/**/*.h*"]),
    includes = ["include/opencv4/"],
    linkstatic = 1,
    visibility = ["//visibility:public"],
)

7. 运行Hello World!在 C++ 示例中。

执行以下命令,打印出hello World即代表环境安装成功

username@DESKTOP-TMVLBJ1:~/mediapipe$ export GLOG_logtostderr=1

# Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported
username@DESKTOP-TMVLBJ1:~/mediapipe$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
    mediapipe/examples/desktop/hello_world:hello_world

# Should print:
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!

8. 构建一个 MediaPipe Android 示例

在环境安装无误后,执行以下命令,bazel将会帮我们构建apk应用。在经历漫长的构建后......通过adb命令将签名好的apk运行到手机即可。也可以通过cp命令将apk拷贝到windows系统当中进行其他操作。

注:可能会出现无权限等问题。需要执行sudo su命令给超级管理员权限并进入mediapipe目录,再执行bazel命令。

bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu
adb install bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu.apk

9. 效果

image.png

总结

本文主要带大家安装wsl mediapipe环境并编译了一个手部检测apk,但是apk是无法直接用到项目中的,下篇文章将带大家构建一个aar。用于集成自己的项目。