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ı
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"], )
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
(İ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ı
Android Studio'yu başlatın ve projenize gidin.
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/
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/
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" }
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.