이미지 라벨 지정 모델을 학습시키려면 AutoML Vision Edge에 이미지와 해당 라벨의 세트를 제공하세요. AutoML Vision Edge는 이 데이터 세트를 사용하여 클라우드의 새 모델을 학습시키고 앱에서 기기별 이미지 라벨을 지정하는 데 이 모델을 사용할 수 있습니다. 이 기능에 대한 일반적인 정보는 개요를 참조하세요.
AutoML Vision Edge는 Google Cloud 서비스입니다. 서비스 사용에는 Google Cloud Platform 라이선스 계약 및 서비스별 약관이 적용되며 이에 따라 요금이 청구됩니다. 결제 정보는 AutoML 가격 책정 페이지를 참조하세요.
시작하기 전에
- Firebase 또는 Google Cloud 프로젝트가 없으면 Firebase Console에서 프로젝트를 만듭니다. 
- 포괄적인 ML 가이드 - AutoML에 있는 가이드라인을 숙지하세요. 
- AutoML Vision Edge를 사용해 보고 싶지만 자체 학습 데이터가 없다면 다음과 같은 샘플 데이터 세트를 다운로드하세요. - TensorFlow의 공식 꽃 이미지 데이터 세트 예시
- 미국식수화(ASL) 알파벳 데이터 세트
 - Kaggle에 호스팅된 데이터 세트도 사용할 수 있습니다. 
1. 학습 데이터 취합
먼저 라벨이 지정된 이미지의 학습 데이터 세트를 준비해야 합니다. 다음 가이드라인을 참고하세요.
- 이미지 형식은 JPEG, PNG, GIF, BMP, ICO 중 하나여야 합니다. 
- 각 이미지는 30MB 이하여야 합니다. AutoML Vision Edge는 사전 처리 중에 대부분의 이미지를 축소하므로 매우 높은 해상도 이미지를 제공해도 일반적으로 정확도 향상에 도움이 되지 않습니다. 
- 각 라벨의 예시를 최소 10개, 가급적 100개 이상 포함합니다. 
- 각 라벨에 다양한 각도, 해상도, 배경을 포함합니다. 
- 학습 데이터는 예측을 수행할 데이터와 최대한 유사해야 합니다. 예를 들어 사용 사례에 보안 카메라 영상처럼 흐릿한 저해상도 이미지가 포함되는 경우 흐릿한 저해상도 이미지로 학습 데이터를 구성해야 합니다. 
- AutoML Vision Edge가 생성하는 모델은 실제 물체를 찍은 사진에 맞게 최적화되어 있습니다. X레이, 회화, 스캔한 문서, 영수증 등에는 잘 작동하지 않을 수 있습니다. - 또한 모델의 라벨 예측 능력은 일반적으로 사람의 한계를 넘지 못합니다. 따라서 사람이 특정 이미지를 1~2초 동안 보고 라벨을 지정할 수 없다면 모델도 그렇게 하도록 학습시키기 어렵습니다. 
학습 이미지가 준비되었으면 Firebase로 가져올 준비를 합니다. 아래의 3가지 옵션이 있습니다.
옵션 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 Console에서 학습 이미지에 라벨을 지정합니다. 다음 단계를 참조하세요.
2. 모델 학습
이제 이미지를 사용하여 모델을 학습시킵니다.
- Google Cloud 콘솔에서 Vision 데이터 세트 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다. 
- 새 데이터 세트를 클릭하고 데이터 세트 이름을 입력하고 학습시킬 모델 유형을 선택한 다음 데이터 세트 만들기를 클릭합니다. 
- 데이터 세트의 가져오기 탭에서 학습 이미지의 zip 보관 파일 또는 학습 이미지를 업로드한 Cloud Storage 위치가 포함된 CSV 파일을 업로드합니다. 학습 데이터 취합을 참조하세요. 
- 가져오기 작업이 완료되면 이미지 탭을 사용하여 학습 데이터를 확인하고 라벨이 지정되지 않은 이미지에 라벨을 지정합니다. 
- 학습 탭에서 학습 시작을 클릭합니다. - 모델 이름을 지정하고 Edge 모델 유형을 선택합니다. 
- 생성된 모델의 성능을 제어하는 다음과 같은 학습 설정을 구성합니다. - 모델 최적화 옵션 - 사용할 모델 구성입니다. 짧은 지연 시간 또는 작은 패키지 크기가 중요한 경우 작은 모델을 빠르게 학습시킬 수 있고, 정확성이 가장 중요한 경우에는 더 큰 모델을 느리게 학습시킬 수 있습니다. - 노드 시간 예산 - 모델 학습에 소비할 최대 시간(컴퓨팅 시간)입니다. 일반적으로 학습 시간이 길수록 모델이 정확해집니다. - 시스템에서 모델이 최적화되었으며 추가 학습이 정확성 향상에 기여하지 못한다고 판단할 경우 학습이 지정된 시간보다 일찍 완료될 수 있습니다. 요금은 실제로 사용한 시간에 대해서만 청구됩니다. - 일반적인 학습 소요 시간 - 아주 작은 세트 - 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에 게시하면 앱 버전을 새롭게 출시하지 않고 모델을 업데이트할 수 있고, Remote Config과 A/B Testing을 사용하여 다양한 사용자 집합에 다른 모델을 동적으로 제공할 수 있습니다.
모델을 앱과 번들로 묶지 않고 Firebase에서 모델을 호스팅하여 제공하는 방법만 선택한 경우 앱의 초기 다운로드 크기를 줄일 수 있습니다. 다만 모델을 앱과 번들로 묶지 않을 경우 앱이 처음으로 모델을 다운로드하기 전까지 모든 모델 관련 기능을 사용할 수 없다는 점에 유의하세요.
다음 두 가지 방법 중 하나를 사용하여 모델을 게시할 수 있습니다.
- Google Cloud 콘솔에 있는 데이터 세트의 테스트 및 사용 페이지에서 TF Lite 모델을 다운로드한 다음 Firebase Console의 커스텀 모델 페이지에서 모델을 업로드합니다. 일반적으로 단일 모델을 게시하는 가장 쉬운 방법입니다.
- Admin SDK를 사용하여 Google Cloud 프로젝트에서 Firebase로 직접 모델을 게시합니다. 이 방법을 사용하여 여러 모델을 일괄 게시하거나 자동 게시 파이프라인을 만들 수 있습니다.
Admin SDK Model Management API로 모델을 게시하려면 다음 단계를 따르세요.
- 모델을 게시합니다. - 다음 예시와 유사한 문자열로 모델의 리소스 식별자를 지정해야 합니다. - projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID - PROJECT_NUMBER- 모델이 포함된 Cloud Storage 버킷의 프로젝트 번호입니다. Firebase 프로젝트 또는 다른 Google Cloud 프로젝트일 수 있습니다. Firebase Console 또는 Google Cloud 콘솔 대시보드의 설정 페이지에서 이 값을 찾을 수 있습니다. - MODEL_ID- AutoML Cloud API에서 가져온 모델의 ID입니다. - Python- # 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 앱에서 모델을 사용하는 방법을 알아보세요.