Android용 이전

Gradle 가져오기 업데이트

새 SDK는 각 ML Kit API에 하나의 종속 항목만 필요합니다. firebase-ml-vision 또는 firebase-ml-natural-language와 같은 공통 라이브러리를 지정할 필요가 없습니다. ML Kit는 Google Play 서비스에 종속된 라이브러리에 com.google.android.gms 네임스페이스를 사용합니다.

Vision API

번들 모델은 애플리케이션의 일부로 제공됩니다. 씬 모델을 다운로드해야 합니다. 일부 API는 번들형과 씬형으로 모두 제공되며, 다른 API는 둘 중 하나의 형식으로만 제공됩니다.

API번들가늘게
텍스트 인식x (베타)x
얼굴 인식xx
바코드 스캔xx
이미지 라벨 지정xx
객체 감지 및 추적x-

다음 표에 따라 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)에서 ML Kit Android 라이브러리의 종속 항목을 업데이트합니다.

번들 모델

API이전 아티팩트새로운 아티팩트
바코드 스캔 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-barcode-model:16.0.1
com.google.mlkit:barcode-scanning:17.3.0
얼굴 윤곽 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-face-model:19.0.0
com.google.mlkit:face-detection:16.1.7
이미지 라벨 지정 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-image-label-model:19.0.0
com.google.mlkit:image-labeling:17.0.9
객체 감지 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3
com.google.mlkit:object-detection:17.0.2

얇은 모델

API이전 아티팩트새로운 아티팩트
바코드 스캔 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
얼굴 인식 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-face-detection:17.1.0
텍스트 인식 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-text-recognition:19.0.1

AutoMLVision Edge

API이전 아티팩트새로운 아티팩트
다운로드 없이 AutoML 사용 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.3
다운로드가 포함된 AutoML com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.3
com.google.mlkit:linkfirebase:17.0.0

Natural Language API

번들 모델은 애플리케이션의 일부로 제공됩니다. 얇은 모델을 다운로드해야 합니다.

API번들가늘게
언어 IDxx
스마트 답장xx (베타)

다음 표에 따라 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)에서 ML Kit Android 라이브러리의 종속 항목을 업데이트합니다.

번들 모델

API이전 아티팩트새로운 아티팩트
언어 ID com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.mlkit:language-id:17.0.6
스마트 답장 com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.mlkit:smart-reply:17.0.4

얇은 모델

API이전 아티팩트새로운 아티팩트
언어 ID com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.android.gms:play-services-mlkit-language-id:17.0.0
스마트 답장 com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1

클래스 이름 업데이트

클래스가 이 표에 표시되면 표시된 대로 변경합니다.

이전 클래스새 수업
com.google.firebase.ml.common.FirebaseMLException com.google.mlkit.common.MlKitException
com.google.firebase.ml.vision.common.FirebaseVisionImage com.google.mlkit.vision.common.InputImage
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector com.google.mlkit.vision.barcode.BarcodeScanner
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel com.google.mlkit.vision.label.ImageLabeler
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector com.google.mlkit.vision.barcode.BarcodeScanner
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel com.google.mlkit.common.model.LocalModel
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel com.google.mlkit.common.model.CustomRemoteModel
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions com.google.mlkit.vision.label.defaults.ImageLabelerOptions
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel com.google.mlkit.vision.label.ImageLabel
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions com.google.mlkit.vision.label.custom.CustomImageLabelerOptions
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions

다른 수업의 경우 다음 규칙을 따르세요.

  • 클래스 이름에서 FirebaseVision 접두사를 삭제합니다.
  • 클래스 이름에서 Firebase 접두사로 시작하는 다른 접두사를 삭제합니다.

또한 패키지 이름에서 com.google.firebase.ml 접두사를 com.google.mlkit로 바꿉니다.

메서드 이름 업데이트

코드 변경사항이 거의 없습니다.

  • 감지기/스캐너/라벨러/번역기… 인스턴스화가 변경되었습니다. 이제 각 기능에 자체 진입점이 있습니다. 예: BarcodeScanning, TextRecognition, ImageLabeling, Translation…. Firebase 서비스 getInstance() 호출이 기능 진입점의 getClient() 메서드 호출로 대체됩니다.
  • 중국어 및 한국어와 같은 다른 스크립트를 인식하기 위한 라이브러리가 추가되어 TextRecognizer의 기본 인스턴스화가 삭제되었습니다. 라틴어 스크립트 텍스트 인식 모델에서 기본 옵션을 사용하려면 com.google.android.gms:play-services-mlkit-text-recognition에 종속 항목을 선언하고 TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)를 사용하세요.
  • ImageLabeler 및 ObjectDetector에 대한 맞춤 모델 지원이 도입되어 두 기능의 기본 인스턴스화가 삭제되었습니다. 예를 들어 ImageLabeling에서 기본 모델과 함께 기본 옵션을 사용하려면 com.google.mlkit:image-labeling에 종속 항목을 선언하고 Java에서 ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)를 사용하세요.
  • 모든 핸들 (감지기/스캐너/라벨러/번역기 등)을 닫을 수 있습니다. 이러한 객체가 더 이상 사용되지 않을 때 close() 메서드가 호출되는지 확인합니다. Fragment 또는 AppCompatActivity에서 이를 사용하는 경우 Fragment 또는 AppCompatActivity에서 LifecycleOwner.getLifecycle()을 호출한 다음 Lifecycle.addObserver를 호출하는 것이 가장 쉽습니다.
  • 일관성을 위해 Vision API의 processImage()detectInImage()의 이름이 process()로 변경되었습니다.
  • 이제 Natural Language API는 '언어 코드' 대신 BCP 47 표준에 정의된 '언어 태그'라는 용어를 사용합니다.
  • xxxOptions 클래스의 getter 메서드가 삭제되었습니다.
  • InputImage 클래스의 getBitmap() 메서드(FirebaseVisionImage 대체)가 더 이상 공개 인터페이스의 일부로 지원되지 않습니다. 다양한 입력에서 변환된 비트맵을 가져오려면 ML Kit 빠른 시작 샘플BitmapUtils.java를 참고하세요.
  • FirebaseVisionImageMetadata가 삭제되었습니다. 너비, 높이, rotationDegrees, 형식과 같은 이미지 메타데이터를 InputImages의 생성 메서드에 전달하기만 하면 됩니다.

다음은 이전 Kotlin 메서드와 새 Kotlin 메서드의 예입니다.

변경 전

// Construct image labeler with base model and default options.
val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler

// Construct object detector with base model and default options.
val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector

// Construct face detector with given options
val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options)

// Construct image labeler with local AutoML model
val localModel =
    FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build()
val autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build()
    )

신규

// Construct image labeler with base model and default options.
val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
// Optional: add life cycle observer
lifecycle.addObserver(imageLabeler)

// Construct object detector with base model and default options.
val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS)

// Construct face detector with given options
val faceDetector = FaceDetection.getClient(options)

// Construct image labeler with local AutoML model
val localModel =
  LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build()
val autoMLImageLabeler =
  ImageLabeling.getClient(
    CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build())
  

다음은 이전 Java 메서드와 새 Java 메서드의 몇 가지 예입니다.

변경 전

// Construct image labeler with base model and default options.
FirebaseVisionImageLabeler imagelLabeler =
     FirebaseVision.getInstance().getOnDeviceImageLabeler();

// Construct object detector with base model and default options.
FirebaseVisionObjectDetector objectDetector =
     FirebaseVision.getInstance().getOnDeviceObjectDetector();

// Construct face detector with given options
FirebaseVisionFaceDetector faceDetector =
     FirebaseVision.getInstance().getVisionFaceDetector(options);

// Construct image labeler with local AutoML model
FirebaseAutoMLLocalModel localModel =
    new FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build();
FirebaseVisionImageLabeler autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build());

신규

// Construct image labeler with base model and default options.
ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS);
// Optional: add life cycle observer
getLifecycle().addObserver(imageLabeler);

// Construct object detector with base model and default options.
ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS);

// Construct face detector with given options
FaceDetector faceDetector = FaceDetection.getClient(options);

// Construct image labeler with local AutoML model
LocalModel localModel =
  new LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build();
ImageLabeler autoMLImageLabeler =
  ImageLabeling.getClient(
    new CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build());
  

API별 변경사항

바코드 스캔

Barcode Scanning API의 경우 이제 모델을 전송하는 두 가지 방법이 있습니다.

  • Google Play 서비스('얇은'이라고도 함)(권장)를 통해 - 이렇게 하면 앱 크기가 줄어들고 모델이 애플리케이션 간에 공유됩니다. 하지만 개발자는 모델을 처음 사용하기 전에 모델이 다운로드되었는지 확인해야 합니다.
  • 앱의 APK('번들로 묶인') 사용: 이렇게 하면 앱 크기가 늘어나지만 모델을 즉시 사용할 수 있습니다.

두 구현은 약간 다르며 '번들' 버전은 '얇은' 버전보다 여러 가지 개선사항이 있습니다. 이러한 차이점에 관한 자세한 내용은 Barcode Scanning API 가이드라인을 참고하세요.

얼굴 인식

Face Detection API의 경우 모델을 전송하는 방법에는 두 가지가 있습니다.

  • Google Play 서비스('얇은'이라고도 함)(권장)를 통해 - 이렇게 하면 앱 크기가 줄어들고 모델이 애플리케이션 간에 공유됩니다. 하지만 개발자는 모델을 처음 사용하기 전에 모델이 다운로드되었는지 확인해야 합니다.
  • 앱의 APK('번들'이라고도 함) 사용: 이렇게 하면 앱 다운로드 크기가 증가하지만 모델을 즉시 사용할 수 있습니다.

구현의 동작은 동일합니다.

번역과

  • 이제 TranslateLanguage는 언어 태그 (EN) 대신 읽기 쉬운 이름 (예: ENGLISH)을 상수에 사용합니다. 또한 이제 @IntDef 대신 @StringDef이며 상수 값은 일치하는 BCP 47 언어 태그입니다.

  • 앱에서 '기기 유휴 상태' 다운로드 조건 옵션을 사용하는 경우 이 옵션이 삭제되어 더 이상 사용할 수 없음을 유의하세요. '기기 충전' 옵션은 계속 사용할 수 있습니다. 더 복잡한 동작을 원한다면 자체 로직 뒤에서 RemoteModelManager.download 호출을 지연할 수 있습니다.

AutoML 이미지 라벨링

앱에서 '기기 유휴 상태' 다운로드 조건 옵션을 사용하는 경우 이 옵션은 삭제되어 더 이상 사용할 수 없습니다. '기기 충전' 옵션은 계속 사용할 수 있습니다.

더 복잡한 동작을 원한다면 자체 로직 뒤에서 RemoteModelManager.download 호출을 지연할 수 있습니다.

객체 감지 및 추적

앱에서 대략적인 분류와 함께 객체 감지를 사용하는 경우 새 SDK에서 감지된 객체의 분류 카테고리를 반환하는 방식이 변경되었음을 유의하세요.

분류 카테고리는 정수 대신 DetectedObject.Label의 인스턴스로 반환됩니다. 대략적인 분류기에 가능한 모든 카테고리는 PredefinedCategory 클래스에 포함되어 있습니다.

다음은 이전 Kotlin 코드와 새 Kotlin 코드의 예입니다.

변경 전

if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

신규

if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) {
    ...
}
// or
if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) {
    ...
}

다음은 이전 Java 코드와 새 Java 코드의 예입니다.

변경 전

if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

신규

if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) {
    ...
}
// or
if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) {
    ...
}

'알 수 없음' 카테고리가 삭제되었습니다. 객체 분류의 신뢰도가 낮으면 라벨이 반환되지 않습니다.

Firebase 종속 항목 삭제 (선택사항)

이 단계는 다음 조건이 충족될 때만 적용됩니다.

  • Firebase ML Kit만 Firebase 구성요소로 사용합니다.
  • 온디바이스 API만 사용합니다.
  • 모델 게재를 사용하지 않습니다.

이 경우 이전 후 Firebase 종속 항목을 삭제할 수 있습니다. 다음 단계를 따르세요.

  • 앱의 모듈 (앱 수준) 디렉터리에서 google-services.json 구성 파일을 삭제하여 Firebase 구성 파일을 삭제합니다.
  • 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)에서 Google 서비스 Gradle 플러그인을 엄격한 버전 매처 플러그인으로 교체합니다.

이전

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

android {
  // …
}

이후

apply plugin: 'com.android.application'
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'

android {
  // …
}
  • 프로젝트 (루트 수준) Gradle 파일 (build.gradle)의 Google 서비스 Gradle 플러그인 클래스 경로를 엄격한 버전 일치 플러그인의 클래스 경로로 바꿉니다.

이전

buildscript {
  dependencies {
    // ...

    classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
  }
}

이후

buildscript {
  dependencies {
    // ...

    classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1'
  }
}

Firebase 지원 사이트의 안내에 따라 Firebase Console에서 Firebase 앱을 삭제합니다.

도움말 보기

문제가 발생하면 Google에 문의할 수 있는 채널이 설명된 커뮤니티 페이지를 확인하세요.