MediaPipe Framework Android Arşivi

MediaPipe Framework Android Arşivi (AAR) kitaplığı, MediaPipe Framework'ü Android Studio ve Gradle ile kullanmanın rahat bir yoludur. MediaPipe Framework tüm projeler tarafından kullanılabilecek genel bir AAR yayınlamaz. Bunun yerine, geliştiricilerin kendi projeleri için özel bir AAR dosyası oluşturmak üzere bir mediapipe_aar() hedefi oluşturması gerekir. Bu, her proje için gerekli olan MediaPipe hesaplayıcıları gibi belirli kaynakları içermek amacıyla gereklidir.

MediaPipe Framework AAR oluşturma adımları

  1. Bir mediapipe_aar() hedefi oluşturun.

    MediaPipe dizininde, BUILD dosyasında yeni bir mediapipe_aar() hedefi oluşturun. Grafikte hangi hesap makinelerinin kullanıldığını bulmanız ve mediapipe_aar() işlevine hesap makinesi bağımlılıklarını sağlamanız gerekir. Örneğin, yüz algılama grafiği için AAR oluşturmak amacıyla, mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/BUILD işlevine aşağıdaki kodu yerleştirebilirsiniz.

    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. AAR'yi oluşturmak için Bazel derleme komutunu çalıştırın.

    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
    

    1. adımda oluşturduğumuz yüz algılama AAR hedefi için şu komutu çalıştırın:

    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. (İsteğe bağlı) AAR'yi tercih ettiğiniz konuma kaydedin.

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

Android Studio'da Gradle ile MediaPipe Framework AAR'sini kullanma adımları

  1. Android Studio'yu başlatın ve projenize gidin.

  2. AAR'yi uygulamaya/kitaplara kopyalayın.

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

    Ekran görüntüsü

  3. app/src/main/assets oluşturup öğeleri (grafik, model vb.) app/src/main/assets bölümüne kopyalayın.

    MediaPipe ikili grafiği oluşturun ve öğeleri app/src/main/assets klasörüne kopyalayın. Örneğin, yüz algılama grafiği için ikili program grafiği ve yüz algılama tflite modelini oluşturup kopyalamanız gerekir.

    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/
    

    Ekran görüntüsü

  4. MediaPipe bağımlılıkları ve MediaPipe AAR'si eklemek için app/build.gradle dosyasını değiştirin.

    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. Kullanım alanınıza yönelik olarak Android Studio'da MediaPipe'i kullanmak için Android uygulaması örneklerimizi takip edin. Örnek arıyorsanız yüz algılama örneğini burada, birden çok elle takip örneğini ise burada bulabilirsiniz.