MediaPipe Framework Android Архив

Библиотека MediaPipe Framework Android Archive (AAR) — это удобный способ использования MediaPipe Framework с Android Studio и Gradle. MediaPipe Framework не публикует общий AAR, который может использоваться всеми проектами. Вместо этого разработчикам необходимо создать цель mediapipe_aar() для создания собственного файла AAR для своих собственных проектов. Это необходимо для включения конкретных ресурсов, таких как калькуляторы MediaPipe, необходимых для каждого проекта.

Шаги по созданию AAR MediaPipe Framework

  1. Создайте цель mediapipe_aar().

    В каталоге MediaPipe создайте новую цель mediapipe_aar() в файле BUILD. Вам необходимо выяснить, какие калькуляторы используются в графике, и предоставить зависимости калькуляторов в функцию mediapipe_aar(). Например, чтобы построить AAR для графика обнаружения лиц, вы можете поместить следующий код в mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/BUILD.

    load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
    
    mediapipe_aar(
        name = "mediapipe_face_detection",
        calculators = ["//mediapipe/graphs/face_detection:mobile_calculators"],
    )
    
  2. Запустите команду сборки Bazel, чтобы создать AAR.

    bazel build -c opt --strip=ALWAYS \
        --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
        --fat_apk_cpu=arm64-v8a,armeabi-v7a \
        --legacy_whole_archive=0 \
        --features=-legacy_whole_archive \
        --copt=-fvisibility=hidden \
        --copt=-ffunction-sections \
        --copt=-fdata-sections \
        --copt=-fstack-protector \
        --copt=-Oz \
        --copt=-fomit-frame-pointer \
        --copt=-DABSL_MIN_LOG_LEVEL=2 \
        --linkopt=-Wl,--gc-sections,--strip-all \
        //path/to/the/aar/build/file:aar_name.aar
    

    Для цели AAR для обнаружения лиц, которую мы создали на шаге 1, выполните:

    bazel build -c opt --strip=ALWAYS \
        --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
        --fat_apk_cpu=arm64-v8a,armeabi-v7a \
        --legacy_whole_archive=0 \
        --features=-legacy_whole_archive \
        --copt=-fvisibility=hidden \
        --copt=-ffunction-sections \
        --copt=-fdata-sections \
        --copt=-fstack-protector \
        --copt=-Oz \
        --copt=-fomit-frame-pointer \
        --copt=-DABSL_MIN_LOG_LEVEL=2 \
        --linkopt=-Wl,--gc-sections,--strip-all \
        //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mediapipe_face_detection.aar
    
    # It should print:
    # Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mediapipe_face_detection.aar up-to-date:
    # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar
    
  3. (Необязательно) Сохраните AAR в нужном вам месте.

    cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar
    /absolute/path/to/your/preferred/location
    

Действия по использованию AAR MediaPipe Framework в Android Studio с Gradle

  1. Запустите Android Studio и перейдите к своему проекту.

  2. Скопируйте AAR в app/libs.

    cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar
    /path/to/your/app/libs/
    

    Скриншот

  3. Создайте app/src/main/assets и скопируйте ресурсы (график, модель и т. д.) в app/src/main/assets.

    Создайте двоичный граф MediaPipe и скопируйте ресурсы в app/src/main/assets, например, для графа обнаружения лиц вам необходимо построить и скопировать двоичный граф и модель tflite обнаружения лиц.

    bazel build -c opt mediapipe/graphs/face_detection:face_detection_mobile_gpu_binary_graph
    cp bazel-bin/mediapipe/graphs/face_detection/face_detection_mobile_gpu.binarypb /path/to/your/app/src/main/assets/
    cp mediapipe/modules/face_detection/face_detection_short_range.tflite /path/to/your/app/src/main/assets/
    

    Скриншот

  4. Измените app/build.gradle, чтобы добавить зависимости MediaPipe и MediaPipe AAR.

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
        implementation 'androidx.appcompat:appcompat:1.0.2'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
        // MediaPipe deps
        implementation 'com.google.flogger:flogger:latest.release'
        implementation 'com.google.flogger:flogger-system-backend:latest.release'
        implementation 'com.google.code.findbugs:jsr305:latest.release'
        implementation 'com.google.guava:guava:27.0.1-android'
        implementation 'com.google.protobuf:protobuf-javalite:3.19.1'
        // CameraX core library
        def camerax_version = "1.0.0-beta10"
        implementation "androidx.camera:camera-core:$camerax_version"
        implementation "androidx.camera:camera-camera2:$camerax_version"
        implementation "androidx.camera:camera-lifecycle:$camerax_version"
        // AutoValue
        def auto_value_version = "1.8.1"
        implementation "com.google.auto.value:auto-value-annotations:$auto_value_version"
        annotationProcessor "com.google.auto.value:auto-value:$auto_value_version"
    }
    
  5. Следуйте нашим примерам приложений для Android, чтобы использовать MediaPipe в Android Studio для вашего случая. Если вы ищете пример, пример распознавания лиц можно найти здесь , а пример отслеживания нескольких рук — здесь .