MediaPipe 프레임워크 Android 보관 파일

MediaPipe 프레임워크 Android 보관 파일 (AAR) 라이브러리는 Android 스튜디오 및 Gradle을 사용한 MediaPipe 프레임워크 MediaPipe 프레임워크가 모든 프로젝트에서 사용할 수 있는 일반 AAR 게시 대신 개발자는 mediapipe_aar() 타겟을 만들어 자체 맞춤 AAR 파일 생성 살펴보겠습니다 이는 다음과 같은 특정 리소스를 포함하기 위해 필요합니다. 각 프로젝트에 필요한 MediaPipe 계산기

MediaPipe 프레임워크 AAR 빌드 단계

  1. mediapipe_aar() 타겟을 만듭니다.

    MediaPipe 디렉터리에서 BUILD에 새 mediapipe_aar() 타겟을 만듭니다. 파일에서 참조됩니다. 그래프에 어떤 계산기가 사용되는지 파악해야 하고 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"],
    )
    
  2. 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
    

    1단계에서 만든 얼굴 인식 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 \
        //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. (선택사항) 원하는 위치에 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
    

Gradle을 사용하여 Android 스튜디오에서 MediaPipe 프레임워크 AAR을 사용하는 단계

  1. Android 스튜디오를 시작하고 프로젝트로 이동합니다.

  2. 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/
    

    스크린샷

  3. 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/
    

    스크린샷

  4. 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"
    }
    
  5. Android 앱 예를 따라 Android 스튜디오의 MediaPipe를 살펴보겠습니다 예를 들어 얼굴 인식 예시는 발견 여기와 여러 손으로 추적하는 예는 여기를 참고하세요.