Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

AutoML Vision Edge로 이미지 라벨링 모델 학습

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이미지 라벨 지정 모델을 학습시키려면 AutoML Vision Edge에 이미지 세트와 해당 라벨을 제공합니다. AutoML Vision Edge는 이 데이터 세트를 사용하여 클라우드에서 새 모델을 교육합니다. 이 모델은 앱에서 온디바이스 이미지 라벨 지정에 사용할 수 있습니다. (이 기능에 대한 일반 정보는 개요 를 참조하십시오.)

AutoML Vision Edge 는 Google Cloud 서비스입니다. 서비스 사용에는 Google Cloud Platform 라이선스 계약서비스별 약관 이 적용되며 이에 따라 요금이 청구됩니다. 결제 정보는 AutoML 가격 책정 페이지를 참조하세요.

시작하기 전에

1. 학습 데이터 수집

먼저 레이블이 지정된 이미지의 훈련 데이터 세트를 모아야 합니다. 다음 지침을 염두에 두십시오.

  • 이미지는 JPEG, PNG, GIF, BMP, ICO 형식 중 하나여야 합니다.

  • 각 이미지는 30MB 이하여야 합니다. AutoML Vision Edge는 전처리 중에 대부분의 이미지를 축소하므로 일반적으로 매우 높은 해상도의 이미지를 제공해도 정확도 이점이 없습니다.

  • 각 라벨의 예를 최소 10개, 바람직하게는 100개 이상 포함합니다.

  • 각 레이블에 여러 각도, 해상도 및 배경을 포함합니다.

  • 학습 데이터는 예측할 데이터와 최대한 가까워야 합니다. 예를 들어 사용 사례에 흐릿하고 저해상도 이미지(예: 보안 카메라)가 포함된 경우 훈련 데이터는 흐릿하고 저해상도 이미지로 구성되어야 합니다.

  • AutoML Vision Edge에서 생성된 모델은 실제 사물의 사진에 최적화되어 있습니다. X-레이, 손으로 그린 ​​그림, 스캔한 문서, 영수증 등에 적합하지 않을 수 있습니다.

    또한 모델은 일반적으로 인간이 할당할 수 없는 레이블을 예측할 수 없습니다. 따라서 사람이 1-2초 동안 이미지를 보고 레이블을 할당할 수 없다면 모델도 그렇게 하도록 훈련될 수 없습니다.

학습 이미지가 준비되었으면 Firebase로 가져올 준비를 합니다. 세 가지 옵션이 있습니다.

옵션 1: 구조화된 zip 아카이브

훈련 이미지를 디렉토리로 구성하십시오. 각 디렉토리는 레이블의 이름을 따서 명명되고 해당 레이블의 예인 이미지를 포함합니다. 그런 다음 디렉터리 구조를 zip 아카이브로 압축합니다.

이 zip 아카이브의 디렉토리 이름은 최대 32 ASCII 문자까지 가능하며 영숫자와 밑줄 문자( _ )만 포함할 수 있습니다.

예를 들어:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

옵션 2: CSV 색인이 포함된 Cloud Storage

학습 이미지를 Google Cloud Storage 에 업로드하고 각 이미지의 URL과 선택적으로 각 이미지의 올바른 라벨을 나열하는 CSV 파일을 준비합니다. 이 옵션은 매우 큰 데이터 세트를 사용할 때 유용합니다.

예를 들어 Cloud Storage에 이미지를 업로드하고 다음과 같은 CSV 파일을 준비합니다.

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

이미지는 Firebase 프로젝트의 해당 Google Cloud 프로젝트에 속하는 버킷에 저장해야 합니다.

CSV 파일 준비에 대한 자세한 내용은 Cloud AutoML Vision 문서에서 학습 데이터 준비를 참조하세요 .

옵션 3: 라벨이 지정되지 않은 이미지

개별적으로 또는 구조화되지 않은 zip 파일로 교육 이미지를 업로드한 후 Firebase 콘솔에서 교육 이미지에 라벨을 지정합니다. 다음 단계를 참조하십시오.

2. 모델 학습

다음으로 이미지를 사용하여 모델을 교육합니다.

  1. Google Cloud Console에서 Vision Datasets 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.

  2. 새 데이터세트 를 클릭하고 데이터세트 이름을 제공하고 훈련하려는 모델 유형을 선택한 다음 데이터세트 만들기 를 클릭합니다.

  3. 데이터세트의 가져오기 탭에서 교육 이미지의 zip 아카이브 또는 업로드한 Cloud Storage 위치가 포함된 CSV 파일을 업로드합니다. 학습 데이터 수집을 참조하십시오.

  4. 가져오기 작업이 완료되면 이미지 탭을 사용하여 교육 데이터를 확인하고 레이블이 지정되지 않은 이미지에 레이블을 지정합니다.

  5. 훈련 탭에서 훈련 시작 을 클릭합니다.

    1. 모델 이름을 지정하고 Edge 모델 유형을 선택합니다.

    2. 생성된 모델의 성능을 제어하는 ​​다음 교육 설정을 구성합니다.

      모델 최적화... 사용할 모델 구성입니다. 짧은 대기 시간이나 작은 패키지 크기가 중요한 경우에는 더 빠르고 작은 모델을 학습하고 정확도가 가장 중요한 경우에는 더 느리고 큰 모델을 학습할 수 있습니다.
      노드 시간 예산

      모델 학습에 소요되는 최대 시간(계산 시간)입니다. 훈련 시간이 길수록 일반적으로 모델이 더 정확해집니다.

      시스템에서 모델이 최적화되었다고 판단하고 추가 교육으로 정확도가 향상되지 않는 경우 교육은 지정된 시간 미만으로 완료될 수 있습니다. 실제로 사용한 시간에 대해서만 요금이 청구됩니다.

      일반적인 교육 시간
      아주 작은 세트 1 시간
      이미지 500개 2시간
      1,000개의 이미지 3 시간
      5,000개의 이미지 6 시간
      10,000개의 이미지 7시간
      50,000개의 이미지 11시간
      100,000개의 이미지 13시간
      1,000,000개의 이미지 18시간

3. 모델 평가

교육이 완료되면 평가 탭을 클릭하여 모델의 성능 지표를 볼 수 있습니다.

이 페이지의 한 가지 중요한 용도는 모델에 가장 적합한 신뢰 임계값을 결정하는 것입니다. 신뢰 임계값은 모델이 이미지에 레이블을 지정하기 위해 가져야 하는 최소 신뢰도입니다. 신뢰도 임계값 슬라이더를 이동하여 다양한 임계값이 모델 성능에 미치는 영향을 확인할 수 있습니다. 모델 성능은 정밀도재현율 이라는 두 가지 메트릭을 사용하여 측정됩니다.

이미지 분류의 맥락에서 정밀도 는 선택한 임계값을 기준으로 모델이 레이블을 지정한 이미지 수에 대한 올바르게 레이블이 지정된 이미지 수의 비율입니다. 모델의 정밀도가 높으면 레이블을 잘못 지정하는 빈도가 줄어듭니다(가양성이 적음).

재현율 은 모델이 레이블을 지정할 수 있어야 하는 콘텐츠가 있는 이미지 수에 대한 레이블이 올바르게 지정된 이미지 수의 비율입니다. 모델의 재현율이 높으면 라벨 할당에 실패하는 빈도가 줄어듭니다(거짓 음성이 적음).

정밀도를 최적화할지 재현율을 최적화할지 여부는 사용 사례에 따라 다릅니다. 자세한 내용은 AutoML Vision 초보자 가이드포괄적인 ML 가이드 - AutoML 을 참조하세요.

편안하게 사용할 수 있는 메트릭을 생성하는 신뢰도 임계값을 찾으면 기록해 두십시오. 신뢰 임계값을 사용하여 앱에서 모델을 구성합니다. (언제든지 이 도구를 사용하여 적절한 임계값을 얻을 수 있습니다.)

4. 모델 게시 또는 다운로드

모델의 성능에 만족하고 앱에서 사용하려는 경우 온라인 예측용 모델 배포, 모델을 Firebase에 게시 또는 모델 다운로드 및 번들의 세 가지 옵션 중에서 조합을 선택할 수 있습니다. 당신의 앱으로.

모델 배포

데이터 세트의 테스트 및 사용 탭에서 클라우드에서 모델을 실행하는 온라인 예측을 위해 모델을 배포할 수 있습니다. 이 옵션은 Cloud AutoML 문서 에서 다룹니다. 이 사이트의 문서는 나머지 두 가지 옵션을 다룹니다.

모델 게시

모델을 Firebase에 게시하면 새 앱 버전을 출시하지 않고도 모델을 업데이트할 수 있으며 원격 구성 및 A/B 테스팅을 사용하여 다양한 사용자 집합에 다양한 모델을 동적으로 제공할 수 있습니다.

모델을 Firebase에 호스팅하여 제공하고 앱과 번들로 묶지 않는 경우 앱의 초기 다운로드 크기를 줄일 수 있습니다. 그러나 모델이 앱과 함께 번들로 제공되지 않는 경우 앱이 처음으로 모델을 다운로드할 때까지 모델 관련 기능을 사용할 수 없다는 점에 유의하십시오.

모델을 게시하려면 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  • Google Cloud Console에 있는 데이터세트의 테스트 및 사용 페이지에서 TF Lite 모델을 다운로드한 다음 Firebase 콘솔의 커스텀 모델 페이지에서 모델을 업로드합니다. 이것은 일반적으로 단일 모델을 게시하는 가장 쉬운 방법입니다.
  • Admin SDK를 사용하여 Google Cloud 프로젝트에서 Firebase로 직접 모델을 게시합니다. 이 방법을 사용하여 여러 모델을 일괄 게시하거나 자동화된 게시 파이프라인을 만들 수 있습니다.

Admin SDK 모델 관리 API 로 모델을 게시하려면:

  1. SDK를 설치하고 초기화합니다 .

  2. 모델을 게시합니다.

    다음 예제와 같은 문자열인 모델의 리소스 식별자를 지정해야 합니다.

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER 모델이 포함된 Cloud Storage 버킷의 프로젝트 번호입니다. Firebase 프로젝트 또는 다른 Google Cloud 프로젝트일 수 있습니다. Firebase 콘솔의 설정 페이지 또는 Google Cloud Console 대시보드에서 이 값을 찾을 수 있습니다.
    MODEL_ID AutoML Cloud API에서 가져온 모델의 ID입니다.

    파이썬

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

앱과 함께 모델 다운로드 및 번들

모델을 앱과 번들로 묶으면 Firebase 호스팅 모델을 사용할 수 없을 때에도 앱의 ML 기능이 계속 작동하도록 할 수 있습니다.

모델을 게시하고 앱과 번들로 묶는 경우 앱은 사용 가능한 최신 버전을 사용합니다.

모델을 다운로드하려면 데이터 세트의 테스트 및 사용 페이지에서 TF Lite 를 클릭하십시오.

다음 단계

이제 모델을 게시하거나 다운로드 했으므로 iOS+Android 앱에서 모델을 사용하는 방법을 알아봅니다.