Debian 및 Ubuntu에 설치
Bazelisk를 설치합니다.
공식 팔로우 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
를 통해 설치됩니다.OS OpenCV Debian 9 (stra분) 2.4 Debian 10 (buster) 3.2 Debian 11 (bullseye) 4.5 Ubuntu 16.04 LTS 2.4 Ubuntu 18.04 LTS 3.2 Ubuntu 20.04 LTS 4.2 Ubuntu 20.04 LTS 4.2 Ubuntu 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
참고: 다음과 함께 OpenCV 4.5가 설치된 경우 Debian 11/Ubuntu 21.04
libopencv-video-dev
,libopencv-contrib-dev
도 설치해야 합니다.$ sudo apt-get install -y libopencv-contrib-dev
MediaPipe의
opencv_linux.BUILD
및WORKSPACE
는 이미 구성되어 있습니다. 모든 아키텍처에서 올바르게 작동합니다.# 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 구성을 수정합니다. 이 옵션은 모든 단계를 수행합니다. 자동으로 옵션 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", ], )
GPU를 사용하여 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에 설치
면책 조항: CentOS에서 MediaPipe를 실행하는 것은 실험용입니다.
Bazelisk를 설치합니다.
공식 팔로우 Bazel 문서 Bazelisk를 설치합니다
MediaPipe 저장소를 확인하세요.
$ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
OpenCV를 설치합니다.
옵션 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에 설치
사전 작업:
Bazelisk를 설치합니다.
공식 팔로우 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에 설치하기
면책 조항: Windows에서 MediaPipe를 실행하는 것은 실험용입니다.
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++ Build Tools 2019 및 WinSDK 설치
이동 VisualStudio 웹사이트 빌드 도구 다운로드 및 Microsoft Visual C++ 2019 재배포 가능 패키지 설치 Microsoft Build Tools 2019)에서 지원합니다.
다음에서 WinSDK를 다운로드합니다. 공식 웹사이트인 설치할 수 있습니다
Bazel 또는 Bazelisk를 설치하고 Bazel 실행 파일의 위치를
%PATH%
환경 변수입니다.옵션 1. 팔로우 공식 Bazel 문서 Bazel 6.1.1 이상을 설치하세요.
옵션 2. 공식 팔로우 Bazel 문서 Bazelisk를 설치합니다
Bazel 변수를 설정합니다. 다음에 대해 자세히 알아보기 "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
OpenCV를 설치합니다.
다음 위치에서 Windows 실행 파일을 다운로드합니다. https://opencv.org/releases/ 설치할 수 있습니다 MediaPipe 0.10.x는 OpenCV 3.4.10을 지원합니다. 잊지 말고 수정
C:\opencv
에 OpenCV가 설치되지 않은 경우WORKSPACE
파일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!
빌드 오류가 발생하는 경우 문제 해결에서 몇 가지 일반적인 빌드 문제가 있을 수 있습니다
Linux용 Windows 하위 시스템 (WSL)에 설치
안내를 Linux (Ubuntu)용 Windows 하위 시스템 설치
Windows ADB를 설치하고 Windows에서 ADB 서버를 시작합니다.
WSL을 실행합니다.
필요한 패키지를 설치합니다.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
Bazelisk를 설치합니다.
공식 팔로우 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를 자동으로 빌드합니다. MediaPipe의 OpenCV 구성을 수정합니다.옵션 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를 사용하여 설치
이를 통해 mediapipe 설치를 나머지 시스템과 격리하는 Docker 이미지를 사용합니다.
다음 기기에 Docker를 설치합니다. 사용할 수 있습니다.
'mediapipe' 태그로 Docker 이미지를 빌드합니다.
$ 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