التثبيت على نظامي التشغيل 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 (Stretch) 2.4 Debian 10 (buster) 3.2 Debian 11 (مركز الهدف) 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 الإصدار 21.04 من نظام التشغيل Ubuntu 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.
شغِّل 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!
إذا واجهت خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
التثبيت على نظام التشغيل 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!
إذا واجهت خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
جارٍ التثبيت على نظام التشغيل 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"], )
تأكد من تثبيت بايثون 3 ومكتبة بايثون "ستة".
$ 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!
إذا واجهت خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
التثبيت على نظام التشغيل 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 Redistributable وMicrosoft Build Tools 2019.
نزِّل ملف WinSDK من موقع MicroSoft الإلكتروني الرسمي وثبِّته.
ثبِّت 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. لا تنسَ تعديل ملف
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!
إذا واجهت خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
التثبيت على نظام Windows الفرعي لنظام التشغيل Linux (WSL)
اتّبِع التعليمات لتثبيت النظام الفرعي لنظام التشغيل Windows لنظام التشغيل Linux (Ubuntu).
تثبيت ADB في نظام التشغيل Windows وبدء خادم 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.الخيار الثالث. اتّبِع وثائق 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!
إذا تعرضت لخطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
التثبيت باستخدام Docker
سيؤدي هذا إلى استخدام صورة Docker التي ستعزل تثبيت الوسيطة عن باقي النظام.
ثبِّت Docker على نظام المضيف.
أنشِئ صورة Docker باستخدام العلامة "mediaip".
$ 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!
إذا تعرضت لخطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
أنشئ مثالاً لـ 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