Tệp lưu trữ Android MediaPipe Framework

Thư viện Lưu trữ Android MediaPipe (AAR) là một cách thuận tiện để sử dụng Khung MediaPipe với Android Studio và Gradle. MediaPipe Framework không phát hành AAR chung có thể dùng cho mọi dự án. Thay vào đó, nhà phát triển cần tạo mục tiêu mediapipe_aar() để tạo tệp AAR tuỳ chỉnh cho dự án của riêng họ. Điều này là cần thiết để có thể đưa các tài nguyên cụ thể vào, chẳng hạn như các công cụ tính MediaPipe cần thiết cho mỗi dự án.

Các bước xây dựng một Khung MediaPipe AAR

  1. Tạo mục tiêu mediapipe_aar().

    Trong thư mục MediaPipe, hãy tạo một mục tiêu mediapipe_aar() mới trong tệp BUILD. Bạn cần tìm ra những máy tính nào được dùng trong biểu đồ và cung cấp các phần phụ thuộc của công cụ tính toán cho mediapipe_aar(). Ví dụ: để tạo AAR cho biểu đồ phát hiện khuôn mặt, bạn có thể đặt mã sau vào 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"],
    )
    
  2. Chạy lệnh tạo Bazel để tạo 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
    

    Đối với mục tiêu phát hiện khuôn mặt AAR mà chúng ta đã tạo ở bước 1, hãy chạy:

    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. (Không bắt buộc) Lưu AAR vào vị trí bạn muốn.

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

Các bước sử dụng MediaPipe Framework AAR trong Android Studio bằng Gradle

  1. Khởi động Android Studio rồi chuyển đến dự án của bạn.

  2. Sao chép AAR vào 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/
    

    Ảnh chụp màn hình

  3. Tạo app/src/main/Assets và sao chép các thành phần (biểu đồ, mô hình, v.v.) vào app/src/main/Assets.

    Tạo biểu đồ nhị phân MediaPipe và sao chép các thành phần vào app/src/main/Assets, ví dụ: đối với biểu đồ phát hiện khuôn mặt, bạn cần tạo và sao chép biểu đồ nhị phân và mô hình tflite phát hiện khuôn mặt.

    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/
    

    Ảnh chụp màn hình

  4. Sửa đổi app/build.gradle để thêm các phần phụ thuộc MediaPipe và 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"
    }
    
  5. Hãy làm theo các ví dụ về ứng dụng Android của chúng tôi để sử dụng MediaPipe trong Android Studio cho trường hợp sử dụng của bạn. Nếu đang tìm ví dụ, bạn có thể xem ví dụ về tính năng phát hiện khuôn mặt tại đây và ví dụ về tính năng theo dõi bằng nhiều tay tại đây.