کتابخانه MediaPipe Framework Android Archive (AAR) یک راه راحت برای استفاده از MediaPipe Framework با Android Studio و Gradle است. MediaPipe Framework AAR عمومی را منتشر نمی کند که بتواند برای همه پروژه ها استفاده شود. در عوض، توسعه دهندگان باید یک هدف mediapipe_aar() ایجاد کنند تا یک فایل AAR سفارشی برای پروژه های خود تولید کنند. این برای گنجاندن منابع خاصی مانند ماشین حساب MediaPipe مورد نیاز برای هر پروژه ضروری است.
مراحل ساخت یک MediaPipe Framework AAR
یک هدف 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
مراحل استفاده از MediaPipe Framework AAR در Android Studio با Gradle
Android Studio را راه اندازی کنید و به پروژه خود بروید.
AAR را در برنامه/libs کپی کنید.
cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar /path/to/your/app/libs/
برنامه/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/
برای افزودن وابستگی های MediaPipe و MediaPipe AAR، app/build.gradle را تغییر دهید.
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" }
برای استفاده از MediaPipe در Android Studio برای مورد استفاده خود، مثال های برنامه اندروید ما را دنبال کنید. اگر به دنبال یک مثال هستید، یک نمونه تشخیص چهره را میتوانید در اینجا پیدا کنید و یک نمونه ردیابی چند دستی را میتوانید در اینجا پیدا کنید.