התקנה ב-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
.מערכת ההפעלה OpenCV Debian 9 (מתוח) 2.4 Debian 10 (buster) 3.2 Debian 11 (bullseye) 4.5 LTS Ubuntu 16.04 2.4 LTS Ubuntu 18.04 3.2 LTS Ubuntu 20.04 4.2 LTS Ubuntu 20.04 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
כדי ליצור 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.
עליך לעקוב אחר הרשמי מסמכי תיעוד של 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"], )
להפעיל את 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.
עליך לעקוב אחר הרשמי מסמכי תיעוד של 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 והקוד 6 של Python הספרייה מותקנות.
$ 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 2019 ו-WinSDK
מעבר אל באתר של VisualStudio, הורדת כלי build והתקנה של Microsoft Visual C++ 2019 Redistributable ו-Microsoft Build Tools 2019.
הורדת ה-WinSDK מ: האתר הרשמי של MicroSoft ולהתקין.
מתקינים את Bazel או Bazelisk ומוסיפים את מיקום קובץ ההפעלה של Bazel אל משתנה הסביבה
%PATH%
.אפשרות 1. הוספה למעקב מסמכי התיעוד הרשמיים של Bazel להתקנה של Bazel מגרסה 6.1.1 ואילך.
אפשרות 2. עליך לעקוב אחר הרשמי מסמכי תיעוד של Bazel להתקין את Bazelisk.
מגדירים את המשתנים של 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\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. לזכור לערוך הקובץ
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 עבור Linux (WSL)
פועלים לפי הוראה ל- להתקין את מערכת המשנה של Windows עבור 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.
עליך לעקוב אחר הרשמי מסמכי תיעוד של 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"], )
להפעיל את 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