تثبيت

التثبيت على نظامي التشغيل Debian وUbuntu

  1. تثبيت Bazelisk

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  2. الدفع في مستودع MediaPipe

    $ cd $HOME
    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. تثبيت 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",
      ],
    )
    
  4. لتشغيل أمثلة لأجهزة سطح المكتب على نظام التشغيل 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.
    
  5. شغِّل 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 هو تجريبي.

  1. تثبيت Bazelisk

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  2. الدفع في مستودع MediaPipe

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. ثبِّت 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"],
    )
    
  4. شغِّل 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

  1. التحضير المسبق:

    • ثبِّت Homebrew.
    • ثبِّت Xcode وأدوات سطر الأوامر الخاصة به بحلول xcode-select --install.
  2. تثبيت Bazelisk

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  3. الدفع في مستودع MediaPipe

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    $ cd mediapipe
    
  4. تثبيت 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"],
    )
    
  5. تأكد من تثبيت بايثون 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
    
  6. شغِّل 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 في مرحلة تجريبية.

  1. ثبِّت MSYS2 وعدِّل متغير بيئة %PATH%.

    إذا تم تثبيت MSYS2 على C:\msys64، أضِف C:\msys64\usr\bin إلى متغير بيئة %PATH%.

  2. تثبيت الحزم الضرورية.

    C:\> pacman -S git patch unzip
    
  3. ثبِّت Python واسمح للملف التنفيذي بتعديل متغير بيئة %PATH%.

    نزِّل لغة Python Windows القابلة للتنفيذ من https://www.python.org/downloads وثبِّتها.

  4. تثبيت أدوات إنشاء Visual C++ لعام 2019 وWinSDK

    انتقِل إلى موقع Visualstudio الإلكتروني، ونزِّل أدوات الإنشاء، وثبِّت Microsoft Visual C++ 2019 Redistributable وMicrosoft Build Tools 2019.

    نزِّل ملف WinSDK من موقع MicroSoft الإلكتروني الرسمي وثبِّته.

  5. ثبِّت Bazel أو Bazelisk وأضِف موقع Bazel القابل للتنفيذ إلى متغير بيئة %PATH%.

    الخيار رقم 1. اتّبِع مستندات Bazel الرسمية لتثبيت Bazel 6.1.1 أو الإصدارات الأحدث.

    الخيار رقم 2. اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  6. اضبط متغيّرات 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>
    
  7. الدفع في مستودع 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
    
  8. ثبِّت 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",
    )
    
  9. شغِّل 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)

  1. اتّبِع التعليمات لتثبيت النظام الفرعي لنظام التشغيل Windows لنظام التشغيل Linux (Ubuntu).

  2. تثبيت ADB في نظام التشغيل Windows وبدء خادم ADB في نظام التشغيل Windows

  3. إطلاق WSL.

  4. تثبيت الحزم المطلوبة.

    username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
    
  5. تثبيت Bazelisk

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  6. الدفع في مستودع MediaPipe

    username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git
    
    username@DESKTOP-TMVLBJ1:~$ cd mediapipe
    
  7. تثبيت 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"],
    )
    
  8. شغِّل 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 التي ستعزل تثبيت الوسيطة عن باقي النظام.

  1. ثبِّت Docker على نظام المضيف.

  2. أنشِئ صورة 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
    
  3. شغِّل 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!
    

إذا تعرضت لخطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.

  1. أنشئ مثالاً لـ 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