ومكتبة أرشيف Android (AAR) التابع لإطار عمل MediaPipe طريقة سهلة لاستخدام إطار عمل MediaPipe مع "استوديو Android" وأداة Gradle ولا يعتمد إطار عمل MediaPipe نشر تقنية AAR عامة يمكن استخدامها في جميع المشروعات. بدلاً من ذلك، يحتاج المطورون لإنشاء هدف mediapi_aar() لإنشاء ملف AAR مخصص مماثلة. وهذا ضروري لتضمين موارد محددة مثل حاسبات MediaPipe مطلوبة لكل مشروع.
خطوات إنشاء ميزة "الاقتراحات المطبّقة تلقائيًا" لإطار عمل MediaPipe
إنشاء هدف mediapi_aar() .
في دليل MediaPipe، أنشئ هدفًا جديدًا ()mediape_aar() في BUILD الملف. تحتاج إلى معرفة الحاسبات المستخدمة في الرسم البياني توفير تبعيات الحاسبة إلى mediapi_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
(اختياري) احفظ ميزة "التطبيق التلقائي للاقتراحات" في موقعك الجغرافي المفضّل.
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 في "استوديو Android" مع Gradle
شغِّل "استوديو Android" وانتقِل إلى مشروعك.
انسخ 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/
تحويل التطبيق/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" وحالة الاستخدام. إذا كنت تبحث عن مثال، يمكنك تحديد مثال على ميزة "التعرّف على الوجوه" تم العثور على هنا يمكن العثور على مثال للتتبع متعدد اليد هنا