Библиотека MediaPipe Framework Android Archive (AAR) — это удобный способ использования MediaPipe Framework с Android Studio и Gradle. MediaPipe Framework не публикует общий AAR, который может использоваться всеми проектами. Вместо этого разработчикам необходимо создать цель mediapipe_aar() для создания собственного файла AAR для своих собственных проектов. Это необходимо для включения конкретных ресурсов, таких как калькуляторы MediaPipe, необходимых для каждого проекта.
Шаги по созданию AAR MediaPipe Framework
Создайте цель 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"], )
Запустите команду сборки 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
(Необязательно) Сохраните 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
Запустите Android Studio и перейдите к своему проекту.
Скопируйте 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/
Создайте 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/
Измените 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" }
Следуйте нашим примерам приложений для Android, чтобы использовать MediaPipe в Android Studio для вашего случая. Если вы ищете пример, пример распознавания лиц можно найти здесь , а пример отслеживания нескольких рук — здесь .