Arsip Android MediaPipe Framework

Library MediaPipe Framework Android Archive (AAR) adalah cara yang mudah untuk digunakan Framework MediaPipe dengan Android Studio dan Gradle. Framework MediaPipe tidak memublikasikan AAR umum yang dapat digunakan oleh semua project. Sebagai gantinya, developer butuh untuk membuat target mediapipe_aar() guna menghasilkan file AAR kustom untuk project secara terprogram. Hal ini diperlukan untuk menyertakan sumber daya khusus seperti Kalkulator MediaPipe yang diperlukan untuk setiap project.

Langkah-langkah untuk mem-build AAR Framework MediaPipe

  1. Buat target mediapipe_aar().

    Dalam direktori MediaPipe, buat target mediapipe_aar() baru dalam BUILD . Anda perlu mencari tahu kalkulator apa yang digunakan dalam grafik dan memberikan dependensi kalkulator ke mediapipe_aar(). Misalnya, untuk membangun AAR untuk grafik deteksi wajah, Anda dapat memasukkan kode berikut ke 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. Jalankan perintah build Bazel untuk menghasilkan 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
    

    Untuk target AAR deteksi wajah yang kita buat pada langkah 1, jalankan:

    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. (Opsional) Simpan AAR ke lokasi yang Anda pilih.

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

Langkah-langkah untuk menggunakan AAR Framework MediaPipe di Android Studio dengan Gradle

  1. Mulai Android Studio dan buka project Anda.

  2. Salin AAR ke 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/
    

    Screenshot

  3. Membuat app/src/main/assets dan menyalin aset (grafik, model, dan lainnya) ke dalam app/src/main/assets.

    Buat grafik biner MediaPipe dan salin aset ke dalam app/src/main/assets, mis., untuk grafik deteksi wajah, Anda perlu membangun dan menyalin kode biner grafik dan model tflite deteksi wajah.

    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/
    

    Screenshot

  4. Ubah app/build.gradle untuk menambahkan dependensi MediaPipe dan AAR MediaPipe.

    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. Ikuti contoh aplikasi Android kami untuk menggunakan MediaPipe di Android Studio untuk kasus penggunaan. Jika Anda mencari contoh, contoh deteksi wajah dapat ditemukan di sini dan contoh pelacakan multi-tangan dapat ditemukan di sini.