التثبيت على نظامي التشغيل 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 (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
لإنشاء مكتبة 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"], )
شغِّل مثال "مرحبًا بك في 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"], )
تأكد من تثبيت مكتبة Python 3 ومكتبة 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
شغِّل مثال "مرحبًا بك في 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++ Build Tools 2019 وWinSDK
انتقِل إلى موقع Visual Studio الإلكتروني، ثم نزِّل أدوات الإنشاء وثبِّت حِزم Microsoft Visual C++ 2019 القابلة لإعادة التوزيع وحِزم Microsoft Build Tools 2019.
نزِّل WinSDK من موقع MicroSoft الإلكتروني الرسمي وثبِّته.
ثبِّت Bazel أو Bazelisk وأضِف موقع الملف التنفيذي لبرنامج Bazel إلى متغيّر البيئة
%PATH%
.الخيار رقم 1. اتّبِع المستندات الرسمية حول Bazel لتركيب الإصدار 6.5.0 من Bazel أو إصدار أحدث.
الخيار رقم 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/ وثبِّته. يتوافق الإصدار 0.10.x من MediaPipe مع الإصدار 3.4.10 من OpenCV. تذكَّر تعديلملف
WORKSPACE
إذا لم يكن OpenCV مثبّتًا فيC:\opencv
.new_local_repository( name = "windows_opencv", build_file = "@//third_party:opencv_windows.BUILD", path = "C:\\<path to opencv>\\build", )
شغِّل مثال "مرحبًا بك في 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 Subsystem for Linux (WSL)
اتّبِع التعليمات لتثبيت "النظام الفرعي لنظام التشغيل Linux (Ubuntu) في نظام التشغيل Windows".
ثبِّت برنامج 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!
إذا حدث خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.
التثبيت باستخدام Docker
سيؤدي هذا إلى استخدام صورة Docker ستعمل على عزل تثبيت mediapi عن باقي النظام.
ثبِّت 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
شغِّل مثال "مرحبًا بك في 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