Döşeme

Debian ve Ubuntu'da yükleme

  1. Bazelisk'i yükleyin.

    Bazelisk'i yüklemek için resmi Bazel dokümanlarındaki talimatları uygulayın.

  2. Checkout MediaPipe deposu.

    $ cd $HOME
    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. OpenCV ve FFmpeg dosyalarını yükleyin.

    1. Seçenek. Önceden derlenmiş OpenCV kitaplıklarını yüklemek için paket yöneticisi aracını kullanın. FFmpeg, libopencv-video-dev aracılığıyla yüklenecek.

    OS OpenCV
    Debian 9 (esnek) 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
    

    Not. OpenCV 4.5 libopencv-video-dev ile birlikte yüklendiğinde, Debian 11/Ubuntu 21.04'te libopencv-contrib-dev de yüklü olmalıdır.

    $ sudo apt-get install -y libopencv-contrib-dev
    

    MediaPipe opencv_linux.BUILD ve WORKSPACE zaten OpenCV 2/3 için yapılandırılmıştır ve tüm mimarilerde doğru şekilde çalışır:

    # 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 için opencv_linux.BUILD'i mevcut mimariyi dikkate alarak değiştirmeniz gerekir:

    # 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. Seçenek. Kaynaktan OpenCV'yi otomatik olarak derlemek için setup_opencv.sh aracını çalıştırın ve MediaPipe'in OpenCV yapılandırmasını değiştirin. Bu seçenek 3. Seçenek'te tanımlanan tüm adımları otomatik olarak uygular.

    3. Seçenek. Kaynak koddan manuel olarak OpenCV oluşturmak için OpenCV'nin belgelerini takip edin.

    WORKSPACE ve opencv_linux.BUILD öğelerini, MediaPipe'i kendi OpenCV kitaplıklarınıza yönlendirecek şekilde değiştirmeniz gerekebilir. OpenCV'nin varsayılan olarak /usr/local/ ürününe yükleneceğini varsayalım.

    OpenCV 2/3 kurulumu:

    # 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 kurulumu:

    # 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",
      ],
    )
    

    Mevcut FFmpeg kurulumu, ffmpeg_linux.BUILD içinde tanımlanmıştır ve tüm mimarilerde çalışması gerekir:

    # 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. Masaüstü örneklerini yalnızca Linux'ta (OS X'te değil) GPU hızlandırmalı çalıştırmak için kullanabilirsiniz.

    # 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! in C++ example komutunu çalıştırın.

    $ 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!
    

Bir yapı hatasıyla karşılaşırsanız sık karşılaşılan bazı derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

CentOS'te yükleme

Sorumluluk reddi beyanı: CentOS'te MediaPipe çalıştırmak deneme aşamasındadır.

  1. Bazelisk'i yükleyin.

    Bazelisk'i yüklemek için resmi Bazel dokümanlarındaki talimatları uygulayın.

  2. Checkout MediaPipe deposu.

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. OpenCV'yi yükleyin.

    1. Seçenek: Önceden derlenmiş sürümü yüklemek için paket yöneticisi aracını kullanın.

    $ sudo yum install opencv-devel
    

    2. Seçenek Kaynak kodundan OpenCV oluşturun.

    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! in C++ example komutunu çalıştırın.

    $ 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!
    

Bir yapı hatasıyla karşılaşırsanız sık karşılaşılan bazı derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

macOS'te yükleme

  1. Ön çalışma:

    • Homebrew'u yükleyin.
    • Xcode'u ve Komut Satırı Araçlarını xcode-select --install tarihine kadar yükleyin.
  2. Bazelisk'i yükleyin.

    Bazelisk'i yüklemek için resmi Bazel dokümanlarındaki talimatları uygulayın.

  3. Checkout MediaPipe deposu.

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    $ cd mediapipe
    
  4. OpenCV ve FFmpeg dosyalarını yükleyin.

    1. Seçenek: Önceden derlenmiş OpenCV 3 kitaplıklarını yüklemek için HomeBrew paket yöneticisi aracını kullanın. FFmpeg, OpenCV aracılığıyla yüklenir.

    $ brew install opencv@3
    
    # There is a known issue caused by the glog dependency. Uninstall glog.
    $ brew uninstall --ignore-dependencies glog
    

    2. Seçenek OpenCV kitaplıklarını yüklemek için MacPorts paket yöneticisi aracını kullanın.

    $ 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. Python 3 ve Python "six" kitaplığının yüklü olduğundan emin olun.

    $ 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! in C++ example komutunu çalıştırın.

    $ 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!
    

Bir yapı hatasıyla karşılaşırsanız sık karşılaşılan bazı derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

Windows'da yükleme

Sorumluluk reddi beyanı: Windows'da MediaPipe'in çalıştırılması deneysel bir çalışmadır.

  1. MSYS2'yi yükleyin ve %PATH% ortam değişkenini düzenleyin.

    C:\msys64 hizmetine MSYS2 yüklüyse %PATH% ortam değişkeninize C:\msys64\usr\bin ekleyin.

  2. Gerekli paketleri yükleyin.

    C:\> pacman -S git patch unzip
    
  3. Python'u yükleyin ve yürütülebilir dosyanın %PATH% ortam değişkenini düzenlemesine izin verin.

    https://www.python.org/downloads adresinden Python Windows yürütülebilir dosyasını indirip yükleyin.

  4. Visual C++ Derleme Araçları 2019 ve WinSDK Yükleme

    VisualStudio web sitesine gidin, derleme araçlarını indirin, ardından Microsoft Visual C++ 2019 Yeniden Dağıtılabilir ve Microsoft Derleme Araçları 2019'u yükleyin.

    Resmi MicroSoft web sitesinden WinSDK'yı indirip yükleyin.

  5. Bazel veya Bazelisk'i yükleyin ve Bazel yürütülebilir dosyasının konumunu %PATH% ortam değişkenine ekleyin.

    1. Seçenek: Bazel 6.1.1 veya sonraki sürümleri yüklemek için resmi Bazel belgelerini uygulayın.

    2. Seçenek Bazelisk'i yüklemek için resmi Bazel dokümanlarındaki talimatları uygulayın.

  6. Bazel değişkenlerini ayarlayın. Bazel resmi belgelerinde "Windows'da Derleme" hakkında daha fazla bilgiye ulaşabilirsiniz.

    # 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. Checkout MediaPipe deposu.

    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'yi yükleyin.

    https://opencv.org/releases/ adresinden Windows yürütülebilir dosyasını indirin ve yükleyin. MediaPipe 0.10.x, OpenCV 3.4.10'u destekler. C:\opencv adresinde OpenCV yüklü değilse WORKSPACE dosyasını düzenlemeyi unutmayın.

    new_local_repository(
        name = "windows_opencv",
        build_file = "@//third_party:opencv_windows.BUILD",
        path = "C:\\<path to opencv>\\build",
    )
    
  9. Hello World! in C++ example komutunu çalıştırın.

    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!
    

Bir yapı hatasıyla karşılaşırsanız sık karşılaşılan bazı derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

Linux (WSL) için Windows Alt Sistemi'ne Yükleme

  1. Linux (Ubuntu) için Windows Alt Sistemi'ni yüklemek üzere talimatları uygulayın.

  2. Windows ADB'yi yükleyin ve ADB sunucusunu Windows'da başlatın.

  3. WSL'yi başlatın.

  4. Gerekli paketleri yükleyin.

    username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
    
  5. Bazelisk'i yükleyin.

    Bazelisk'i yüklemek için resmi Bazel dokümanlarındaki talimatları uygulayın.

  6. Checkout MediaPipe deposu.

    username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git
    
    username@DESKTOP-TMVLBJ1:~$ cd mediapipe
    
  7. OpenCV ve FFmpeg dosyalarını yükleyin.

    1. Seçenek: Önceden derlenmiş OpenCV kitaplıklarını yüklemek için paket yöneticisi aracını kullanın. FFmpeg, libopencv-video-dev aracılığıyla yüklenir.

    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. Seçenek Kaynaktan OpenCV'yi otomatik olarak oluşturmak için setup_opencv.sh aracını çalıştırın ve MediaPipe'in OpenCV yapılandırmasını değiştirin.

    Seçenek 3. Kaynak koddan manuel olarak OpenCV oluşturmak için OpenCV'nin belgelerini takip edin.

    WORKSPACEiçin WORKSPACE11için aşağıdaki {cc_opencv} kuralında "linux_opencv" kuralındaki "linux_opencv"opencv_linux.BUILD
    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! in C++ example komutunu çalıştırın.

    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!
    

Bir yapı hatasıyla karşılaşırsanız yaygın olarak karşılaşılan çeşitli derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

Docker kullanarak yükleme

Bu işlem, mediapipe yüklemesini sistemin geri kalanından ayıracak bir Docker görüntüsü kullanır.

  1. Ana makine sisteminize Docker'ı yükleyin.

  2. "mediapipe" etiketine sahip bir docker görüntüsü oluşturun.

    $ 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! in C++ example komutunu çalıştırın.

    $ 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!
    

Bir yapı hatasıyla karşılaşırsanız yaygın olarak karşılaşılan çeşitli derleme sorunlarının çözümlerini bulmak için lütfen Sorun Giderme bölümünü okuyun.

  1. MediaPipe Android örneği oluşturun.

    $ 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