携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
Mediapipe介绍
Mediapipe是google的一个开源项目,它用于构建机器学习管道的框架,用于处理视频、音频等时间序列数据。(个人觉得类似与百度的飞桨,但谷歌的文档很不完善,对新手极度不友好)。其适用于Web、C++、Android、iOS、嵌入式等平台,提供了人脸检测、面部检查、虹膜检测、手部检测、整体检测、头发分割、物体检测、即时运动追踪等解决方案。
安装wsl
由于在原生 Windows 上构建 MediaPipe Android 应用程序仍然是不可能的。因此手持windows开发的同学(比如我)就只能借助wsl(windows子系统)来构建mediapip程序。
1. 安装适用于 Linux (Ubuntu) 的 Windows Sysystem
在*Microsoft Stor搜索关键词ubuntu**,下载相应版本的安装包。
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. 效果
总结
本文主要带大家安装wsl mediapipe环境并编译了一个手部检测apk,但是apk是无法直接用到项目中的,下篇文章将带大家构建一个aar。用于集成自己的项目。