在arm板Ubuntu系统上安装mediapipe简单记录

  • 简单记录一下在arm架构的linux ubuntu系统上安装mediapipe的过程
  • 安装过程参考mediapipe官网,链接:

Installation  |  MediaPipe  |  Google for Developershttps://developers.google.com/mediapipe/framework/getting_started/install.md

注意事项:

  • 与OpenCV进行相互操作。最好选择OpenCV 3.X到4.1版本,OpenCV 2.X目前可以工作,但其相互操作性支持可能在将来被弃用;
  • 如果你打算使用TensorFlow计算器和示例应用程序,gcc和g++的6.3和7.3版本有一个已知的问题。官网上建议安装gcc和g++版本8.x;
  • 若要使Mediapipe与TensorFlow一起工作,请将Python 3.7设置为默认Python版本,并通过运行pip3 install --user six安装Python "six"库。
$ pip3 install --user six

一、安装Bazel

  • Mediapipe使用Bazel进行编译,关于Bazel的使用请自行查阅资料或在安装完成后输入bazel --help查看。
$ bazel --help
  • 以下为安装过程:
  • Bazel安装过程参考Bazel官网,链接:

https://bazel.build/install?hl=zh-cnhttps://bazel.build/install?hl=zh-cn

  • 选择从源代码编译Bazel
  • 选择从头开始构建Bazel,而无需使用现有的 Bazel 二进制文件

1、安装Bazel前提条件:

  • Bash

  • zip、unzip

  • C++ 构建工具链

  • JDK:必须提供版本 11。

  • Python。版本 2 和版本 3 受支持,安装其中一个版本就足够了。

2、从github获取需要的 Bazel 版本

  • 请注意,Mediapipe基本是和特定版本的Bazel是绑定的,在安装Bazel之前,建议去看看需要使用的mediapipe版本所依赖的Bazel版本是多少。
  • 下载分发归档包:bazel-<version>-district.zip,其<version>是对应版本号。

https://github.com/bazelbuild/bazel/releaseshttps://github.com/bazelbuild/bazel/releases

3、将此分发归档解压到磁盘上某个位置

  •  使用unzip解压即可。

4、引导Bazel

  • 进入到解压的目录,运行编译脚本:
$ env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh
  • 编译后的输出会被放入 output/bazel。这是一个独立的 Bazel 二进制文件,没有嵌入式 JDK。您可以将其复制到任何位置或直接使用。为方便起见,请将此二进制文件复制到PATH上的目录中(例如 /usr/local/bin)。
  • 如需以可重现的方式构建 bazel 二进制文件,还要在“运行编译脚本”步骤中设置 SOURCE_DATE_EPOCH

二、下载mediapipe

1、进入用户目录(或其他目录),下载源码

$ cd $HOME
$ git clone --depth 1 https://github.com/google/mediapipe.git

2、进入下载完成的目录

# Change directory into MediaPipe root directory
$ cd mediapipe
  • 注:若不使用git命令,也可直接去github下载,将下载后的文件解压到磁盘上某个位置:

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

三、安装opencv和FFmpeg

  • 官网上有三种方式安装,这里列出前两种:

方案1、使用包管理器工具安装预编译的OpenCV库与FFmpeg

$ sudo apt-get install -y \
    libopencv-core-dev \
    libopencv-highgui-dev \
    libopencv-calib3d-dev \
    libopencv-features2d-dev \
    libopencv-imgproc-dev \
    libopencv-video-dev
  • 注意:在Debian 11/Ubuntu 21.04上安装OpenCV 4.5时,也应该安装libopencv
$ sudo apt-get install -y libopencv-contrib-dev

MediaPipe的opencv_linux.BUILDWORKSPACE已经为OpenCV 2/3配置完成,应该可以在任何架构上正确工作:

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

# opencv_linux.BUILD for OpenCV 2/3 installed from Debian package
cc_library(
  name = "opencv",
  linkopts = [
    "-l:libopencv_core.so",
    "-l:libopencv_calib3d.so",
    "-l:libopencv_features2d.so",
    "-l:libopencv_highgui.so",
    "-l:libopencv_imgcodecs.so",
    "-l:libopencv_imgproc.so",
    "-l:libopencv_video.so",
    "-l:libopencv_videoio.so",
  ],
)

对于OpenCV 4,考虑当前架构,需要修改opencv_linux.BUILD:

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

# opencv_linux.BUILD for OpenCV 4 installed from Debian package
cc_library(
  name = "opencv",
  hdrs = glob([
    # Uncomment according to your multiarch value (gcc -print-multiarch):
    #  "include/aarch64-linux-gnu/opencv4/opencv2/cvconfig.h",
    #  "include/arm-linux-gnueabihf/opencv4/opencv2/cvconfig.h",
    #  "include/x86_64-linux-gnu/opencv4/opencv2/cvconfig.h",
    "include/opencv4/opencv2/**/*.h*",
  ]),
  includes = [
    # Uncomment according to your multiarch value (gcc -print-multiarch):
    #  "include/aarch64-linux-gnu/opencv4/",
    #  "include/arm-linux-gnueabihf/opencv4/",
    #  "include/x86_64-linux-gnu/opencv4/",
    "include/opencv4/",
  ],
  linkopts = [
    "-l:libopencv_core.so",
    "-l:libopencv_calib3d.so",
    "-l:libopencv_features2d.so",
    "-l:libopencv_highgui.so",
    "-l:libopencv_imgcodecs.so",
    "-l:libopencv_imgproc.so",
    "-l:libopencv_video.so",
    "-l:libopencv_videoio.so",
  ],
)

方案2、运行主路径下的setup_opencv.sh脚本从源代码自动构建OpenCV,并自动修改MediaPipe的OpenCV配置

$ ./setup_opencv.sh

四、在Linux(不是OS X)上运行桌面示例与GPU加速

# Requires a GPU with EGL driver support.
# Can use mesa GPU libraries for desktop, (or Nvidia/AMD equivalent).
$ sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev
  • 注:若要使用GPU支持编译,请将选项
--define MEDIAPIPE_DISABLE_GPU=1

        替换为:

--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11

五、示例程序hello world

$ export GLOG_logtostderr=1

  • 如果在只有CPU的Linux桌面上运行:
$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
mediapipe/examples/desktop/hello_world:hello_world
  • 如果在启用了支持GPU的Linux桌面上运行(通过mesa驱动程序):
$ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \
mediapipe/examples/desktop/hello_world:hello_world
  • 打印结果如下:
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!

  • 如果遇到构建错误,请阅读“ Troubleshooting”以查找解决方案。

Troubleshooting  |  MediaPipe  |  Google for Developershttps://developers.google.com/mediapipe/framework/getting_started/troubleshooting.md

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值