התקנה ב-Debian וב-Ubuntu
- מתקינים את Bazelisk. - כדי להתקין את Bazelisk, פועלים לפי המסמכים הרשמיים של Bazel. 
- בודקים את המאגר של 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 (stretch) - 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- הערה ב-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כדי ליצור build של 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) עם האצה של 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 # 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.
- מריצים את הדוגמה Hello World! ב-C++. - $ 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
התקנה ב-CentOS
כתב ויתור: הפעלת MediaPipe ב-CentOS היא ניסיונית.
- מתקינים את Bazelisk. - כדי להתקין את Bazelisk, פועלים לפי המסמכים הרשמיים של Bazel. 
- בודקים את המאגר של 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"], )
- מריצים את הדוגמה Hello World! ב-C++. - $ 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
התקנה ב-macOS
- עבודה מוקדמת: 
- מתקינים את Bazelisk. - כדי להתקין את Bazelisk, פועלים לפי המסמכים הרשמיים של Bazel. 
- בודקים את המאגר של MediaPipe. - $ git clone --depth 1 https://github.com/google/mediapipe.git $ cd mediapipe
- מתקינים את OpenCV ואת FFmpeg. - אפשרות 1. משתמשים בכלי של מנהל החבילות HomeBrew כדי להתקין את ספריות OpenCV 3 שהומרו מראש לקובצי object. 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
- מריצים את הדוגמה Hello World! ב-C++. - $ 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
התקנה ב-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++ Build Tools ו-WinSDK - עוברים אל אתר Visual Studio, מורידים את כלי ה-build ומתקינים את Microsoft Visual C++ 2022 Redistributable ואת Microsoft Build Tools 2022. - מורידים את WinSDK מהאתר הרשמי של Microsoft ומתקינים אותו. 
- מתקינים את Bazel או Bazelisk ומוסיפים את המיקום של קובץ ההפעלה של Bazel למשתנה הסביבה - %PATH%.- אפשרות 1. כדי להתקין את Bazel בגרסה 6.5.0 ואילך, פועלים לפי המסמכים הרשמיים של Bazel. - אפשרות 2. כדי להתקין את Bazelisk, פועלים לפי המסמכים הרשמיים של Bazel. 
- מגדירים משתני Bazel. מידע נוסף על יצירת גרסאות build ב-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\<version>\BuildTools C:\> set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\<version>\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. חשוב לערוך את הקובץ - WORKSPACEאם OpenCV לא מותקן ב-- C:\opencv.- new_local_repository( name = "windows_opencv", build_file = "@//third_party:opencv_windows.BUILD", path = "C:\\<path to opencv>\\build", )
- מריצים את הדוגמה Hello World! ב-C++. - 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
התקנה ב-Windows Subsystem for Linux (WSL)
- פועלים לפי ההוראות כדי להתקין את Windows Subsystem for Linux (Ubuntu). 
- מתקינים את Windows ADB ומפעילים את שרת ה-ADB ב-Windows. 
- פותחים את WSL. 
- מתקינים את החבילות הנדרשות. - username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
- מתקינים את Bazelisk. - כדי להתקין את Bazelisk, פועלים לפי המסמכים הרשמיים של Bazel. 
- בודקים את המאגר של 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כדי ליצור build של 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"], )
- מריצים את הדוגמה Hello World! ב-C++. - 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
התקנה באמצעות Docker
לשם כך, נעשה שימוש בקובץ אימג' של Docker שיבודד את התקנת Mediapipe משאר המערכת.
- מתקינים את Docker במערכת המארחת. 
- יוצרים קובץ אימג' של 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
- מריצים את הדוגמה Hello World! ב-C++. - $ 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!
אם נתקלתם בשגיאה ב-build, תוכלו לקרוא את המאמר פתרון בעיות כדי למצוא פתרונות לבעיות נפוצות ב-build.
- פיתוח דוגמה ל-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