Установка на Debian и Ubuntu
Установите Базелиск.
Следуйте официальной документации Bazel для установки Bazelisk.
Оформить заказ репозитория MediaPipe.
$ cd $HOME
$ git clone --depth 1 https://github.com/google/mediapipe.git
# Change directory into MediaPipe root directory
$ cd mediapipeУстановите OpenCV и FFmpeg.
Вариант 1 . Используйте инструмент диспетчера пакетов для установки предварительно скомпилированных библиотек OpenCV. FFmpeg будет установлен через
libopencv-video-dev
.ОС OpenCV Debian 9 (расширенная версия) 2.4 Debian 10 (разрушитель) 3.2 Debian 11 (яблочко) 4,5 Убунту 16.04 ЛТС 2.4 Убунту 18.04 ЛТС 3.2 Убунту 20.04 ЛТС 4.2 Убунту 20.04 ЛТС 4.2 Убунту 21.04 4,5 $ 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-video-dev
, также следует установитьlibopencv-contrib-dev
.$ sudo apt-get install -y libopencv-contrib-dev
opencv_linux.BUILD
иWORKSPACE
MediaPipe уже настроены для 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 из исходного кода и изменить конфигурацию OpenCV MediaPipe. Этот параметр автоматически выполнит все шаги, определенные в Варианте 3.Вариант 3 . Следуйте документации OpenCV, чтобы вручную собрать OpenCV из исходного кода.
Возможно, вам придется изменить
WORKSPACE
иopencv_linux.BUILD
, чтобы указать MediaPipe на ваши собственные библиотеки OpenCV. Предположим, OpenCV будет установлен в/usr/local/
, что рекомендуется по умолчанию.Настройка OpenCV 2/3:
# WORKSPACE
new_local_repository(
name = "linux_opencv",
build_file = "@//third_party:opencv_linux.BUILD",
path = "/usr/local",
)
# opencv_linux.BUILD for OpenCV 2/3 installed to /usr/local
cc_library(
name = "opencv",
linkopts = [
"-L/usr/local/lib",
"-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:
# WORKSPACE
new_local_repository(
name = "linux_opencv",
build_file = "@//third_party:opencv_linux.BUILD",
path = "/usr/local",
)
# opencv_linux.BUILD for OpenCV 4 installed to /usr/local
cc_library(
name = "opencv",
hdrs = glob([
"include/opencv4/opencv2/**/*.h*",
]),
includes = [
"include/opencv4/",
],
linkopts = [
"-L/usr/local/lib",
"-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",
],
)Текущая настройка FFmpeg определена в
ffmpeg_linux.BUILD
и должна работать для любой архитектуры:# WORKSPACE
new_local_repository(
name = "linux_ffmpeg",
build_file = "@//third_party:ffmpeg_linux.BUILD",
path = "/usr"
)
# ffmpeg_linux.BUILD for FFmpeg installed from Debian package
cc_library(
name = "libffmpeg",
linkopts = [
"-l:libavcodec.so",
"-l:libavformat.so",
"-l:libavutil.so",
],
)Для запуска примеров рабочего стола только в Linux (не в OS X) с ускорением графического процессора.
# 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
# To compile with GPU support, replace
--define MEDIAPIPE_DISABLE_GPU=1
# with
--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11
# when building GPU examples.Запустите Привет, мир! в примере С++ .
$ export GLOG_logtostderr=1
# if you are running on Linux desktop with CPU only
$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
mediapipe/examples/desktop/hello_world:hello_world
# If you are running on Linux desktop with GPU support enabled (via mesa drivers)
$ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \
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!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Установка на CentOS
Отказ от ответственности : запуск MediaPipe в CentOS является экспериментальным.
Установите Базелиск.
Следуйте официальной документации Bazel для установки Bazelisk.
Оформить заказ репозитория MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git
# Change directory into MediaPipe root directory
$ cd mediapipeУстановите ОпенКВ.
Вариант 1. Используйте менеджер пакетов для установки предварительно скомпилированной версии.
$ sudo yum install opencv-devel
Вариант 2. Собрать OpenCV из исходного кода.
new_local_repository(
name = "linux_opencv",
build_file = "@//third_party:opencv_linux.BUILD",
path = "/usr/local",
)
new_local_repository(
name = "linux_ffmpeg",
build_file = "@//third_party:ffmpeg_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([
# For OpenCV 3.x
"include/opencv2/**/*.h*",
# For OpenCV 4.x
# "include/opencv4/opencv2/**/*.h*",
]),
includes = [
# For OpenCV 3.x
"include/",
# For OpenCV 4.x
# "include/opencv4/",
],
linkstatic = 1,
visibility = ["//visibility:public"],
)
cc_library(
name = "libffmpeg",
srcs = glob(
[
"lib/libav*.so",
],
),
hdrs = glob(["include/libav*/*.h"]),
includes = ["include"],
linkopts = [
"-lavcodec",
"-lavformat",
"-lavutil",
],
linkstatic = 1,
visibility = ["//visibility:public"],
)Запустите Привет, мир! в примере С++ .
$ export GLOG_logtostderr=1
# Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' if you are running on Linux desktop with CPU only
$ 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!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Установка на macOS
Предварительная работа:
- Установите Доморощенный .
- Установите Xcode и его инструменты командной строки с помощью
xcode-select --install
.
Установите Базелиск.
Следуйте официальной документации Bazel для установки Bazelisk.
Оформить заказ репозитория MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git
$ cd mediapipeУстановите OpenCV и FFmpeg.
Вариант 1. Используйте менеджер пакетов HomeBrew для установки предварительно скомпилированных библиотек OpenCV 3. FFmpeg будет установлен через OpenCV.
$ brew install opencv@3
# There is a known issue caused by the glog dependency. Uninstall glog.
$ brew uninstall --ignore-dependencies glogВариант 2. Используйте инструмент диспетчера пакетов MacPorts для установки библиотек OpenCV.
$ port install opencv
new_local_repository(
name = "macos_opencv",
build_file = "@//third_party:opencv_macos.BUILD",
path = "/opt",
)
new_local_repository(
name = "macos_ffmpeg",
build_file = "@//third_party:ffmpeg_macos.BUILD",
path = "/opt",
)
cc_library(
name = "opencv",
srcs = glob(
[
"local/lib/libopencv_core.dylib",
"local/lib/libopencv_highgui.dylib",
"local/lib/libopencv_imgcodecs.dylib",
"local/lib/libopencv_imgproc.dylib",
"local/lib/libopencv_video.dylib",
"local/lib/libopencv_videoio.dylib",
],
),
hdrs = glob(["local/include/opencv2/**/*.h*"]),
includes = ["local/include/"],
linkstatic = 1,
visibility = ["//visibility:public"],
)
cc_library(
name = "libffmpeg",
srcs = glob(
[
"local/lib/libav*.dylib",
],
),
hdrs = glob(["local/include/libav*/*.h"]),
includes = ["local/include/"],
linkopts = [
"-lavcodec",
"-lavformat",
"-lavutil",
],
linkstatic = 1,
visibility = ["//visibility:public"],
)Убедитесь, что установлены Python 3 и библиотека Python «six».
$ brew install python
$ sudo ln -s -f /usr/local/bin/python3.7 /usr/local/bin/python
$ python --version
Python 3.7.4
$ pip3 install --user sixЗапустите Привет, мир! в примере С++ .
$ export GLOG_logtostderr=1
# Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported
$ 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!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Установка в Windows
Отказ от ответственности : запуск MediaPipe в Windows является экспериментальным.
Установите MSYS2 и отредактируйте переменную среды
%PATH%
.Если MSYS2 установлен в
C:\msys64
, добавьтеC:\msys64\usr\bin
в переменную среды%PATH%
.Установите необходимые пакеты.
C:\> pacman -S git patch unzip
Установите Python и разрешите исполняемому файлу редактировать переменную среды
%PATH%
.Загрузите исполняемый файл Python для Windows с https://www.python.org/downloads и установите.
Установите инструменты сборки Visual C++ 2019 и WinSDK.
Перейдите на веб-сайт VisualStudio , загрузите инструменты сборки и установите распространяемый пакет Microsoft Visual C++ 2019 и Microsoft Build Tools 2019.
Загрузите WinSDK с официального сайта Microsoft и установите.
Установите Bazel или Bazelisk и добавьте расположение исполняемого файла Bazel в переменную среды
%PATH%
.Вариант 1. Следуйте официальной документации Bazel для установки Bazel 6.1.1 или более поздней версии.
Вариант 2. Следуйте официальной документации Bazel для установки Bazelisk.
Установите переменные Bazel. Более подробную информацию о «Build on Windows» можно найти в официальной документации Bazel.
# 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>Оформить заказ репозитория MediaPipe.
C:\Users\Username\mediapipe_repo> git clone --depth 1 https://github.com/google/mediapipe.git
# Change directory into MediaPipe root directory
C:\Users\Username\mediapipe_repo> cd mediapipeУстановите ОпенКВ.
Загрузите исполняемый файл Windows с https://opencv.org/releases/ и установите. MediaPipe 0.10.x поддерживает OpenCV 3.4.10. Не забудьте отредактировать файл
WORKSPACE
, если OpenCV не установлен вC:\opencv
.new_local_repository(
name = "windows_opencv",
build_file = "@//third_party:opencv_windows.BUILD",
path = "C:\\<path to opencv>\\build",
)Запустите Привет, мир! в примере С++ .
C:\Users\Username\mediapipe_repo>bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python_36//python.exe" mediapipe/examples/desktop/hello_world
C:\Users\Username\mediapipe_repo>set GLOG_logtostderr=1
C:\Users\Username\mediapipe_repo>bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe
# should print:
# I20200514 20:43:12.277598 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.278597 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.279618 1200 hello_world.cc:56] Hello World!
# I20200514 20:43:12.280613 1200 hello_world.cc:56] Hello World!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Установка в подсистеме Windows для Linux (WSL)
Следуйте инструкциям по установке подсистемы Windows для Linux (Ubuntu).
Установите Windows ADB и запустите сервер ADB в Windows.
Запустите ВСЛ.
Установите необходимые пакеты.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
Установите Базелиск.
Следуйте официальной документации Bazel для установки Bazelisk.
Оформить заказ репозитория MediaPipe.
username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git
username@DESKTOP-TMVLBJ1:~$ cd mediapipeУстановите OpenCV и FFmpeg.
Вариант 1. Используйте менеджер пакетов для установки предварительно скомпилированных библиотек OpenCV. FFmpeg будет установлен через libopencv-video-dev.
username@DESKTOP-TMVLBJ1:~/mediapipe$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \
libopencv-calib3d-dev libopencv-features2d-dev \
libopencv-imgproc-dev libopencv-video-devВариант 2. Запустите
setup_opencv.sh
, чтобы автоматически собрать OpenCV из исходного кода и изменить конфигурацию OpenCV MediaPipe.Вариант 3. Следуйте документации OpenCV, чтобы вручную собрать OpenCV из исходного кода.
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"],
)Запустите Привет, мир! в примере С++ .
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!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Установка с помощью Docker
При этом будет использоваться образ Docker, который изолирует установку mediapipe от остальной системы.
Установите Docker в вашей хост-системе.
Создайте образ докера с тегом «mediapipe».
$ git clone --depth 1 https://github.com/google/mediapipe.git
$ cd mediapipe
$ docker build --tag=mediapipe .
# Should print:
# Sending build context to Docker daemon 147.8MB
# Step 1/9 : FROM ubuntu:latest
# latest: Pulling from library/ubuntu
# 6abc03819f3e: Pull complete
# 05731e63f211: Pull complete
# ........
# See http://bazel.build/docs/getting-started.html to start a new project!
# Removing intermediate container 82901b5e79fa
# ---> f5d5f402071b
# Step 9/9 : COPY . /edge/mediapipe/
# ---> a95c212089c5
# Successfully built a95c212089c5
# Successfully tagged mediapipe:latestЗапустите Привет, мир! в примере С++ .
$ docker run -it --name mediapipe mediapipe:latest
root@bca08b91ff63:/mediapipe# GLOG_logtostderr=1 bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world
# Should print:
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
# Hello World!
Если вы столкнулись с ошибкой сборки, прочтите раздел «Устранение неполадок» , чтобы найти решения некоторых распространенных проблем сборки.
Создайте пример MediaPipe для Android.
$ docker run -it --name mediapipe mediapipe:latest
root@bca08b91ff63:/mediapipe# bash ./setup_android_sdk_and_ndk.sh
# Should print:
# Android NDK is now installed. Consider setting $ANDROID_NDK_HOME environment variable to be /root/Android/Sdk/ndk-bundle/android-ndk-r19c
# Set android_ndk_repository and android_sdk_repository in WORKSPACE
# Done
root@bca08b91ff63:/mediapipe# bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu
# Should print:
# Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu up-to-date:
# bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_deploy.jar
# bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_unsigned.apk
# bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu.apk
# INFO: Elapsed time: 144.462s, Critical Path: 79.47s
# INFO: 1958 processes: 1 local, 1863 processwrapper-sandbox, 94 worker.
# INFO: Build completed successfully, 2028 total actions