AutoML Vision Edge 모델을 사용하여 이미지에 라벨 지정

빠른 시작에서는 다음과 같은 과정을 안내합니다.

  • Google Cloud Storage에 이미지 세트 복사
  • 이미지와 라벨의 목록을 포함하는 CSV 작성
  • AutoML Vision을 사용하여 데이터 세트 작성, 커스텀 AutoML Vision Edge 모델(이미지 분류 또는 객체 감지) 학습, 예측 수행
  • 휴대전화, ARM 기반 기기, Coral Edge TPU 등 여러 유형의 에지 기기 중 하나에 대한 AutoML Vision Edge 모델 내보내기 및 배포

시작하기 전에

프로젝트 설정

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud CLI를 설치합니다.
  3. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  4. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. AutoML and Cloud Storage API를 사용 설정합니다.

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. Google Cloud CLI를 설치합니다.
  8. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  9. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  10. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  11. AutoML and Cloud Storage API를 사용 설정합니다.

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. PROJECT_ID 환경 변수를 프로젝트 ID로 설정합니다.
    export PROJECT_ID=PROJECT_ID
    AutoML API 호출 및 리소스 이름에는 프로젝트 ID가 포함됩니다. PROJECT_ID 환경 변수는 ID를 지정하는 편리한 방법을 제공합니다.

Cloud Storage 버킷 만들기

Google Cloud 콘솔 프로젝트에 연결된 브라우저 기반 Linux 명령줄인 Cloud Shell을 사용하여 Cloud Storage 버킷을 만듭니다.

  1. Cloud Shell을 엽니다.

  2. Google Cloud Storage 버킷을 만듭니다. 버킷 이름은 project-id-vcm 형식이어야 합니다. 다음 명령어는 project-id-vcm이라는 us-central1 리전에 스토리지 버킷을 만듭니다. 사용 가능한 지역의 전체 목록을 보려면 버킷 위치 페이지를 참조하세요.

    gsutil mb -p ${PROJECT_ID} -c regional -l us-central1 gs://${PROJECT_ID}-vcm/

  3. BUCKET 변수를 설정합니다.

    export BUCKET=${PROJECT_ID}-vcm

사용자 버킷에 샘플 이미지 복사

다음으로 이 TensorFlow 블로그 게시물에 사용된 꽃 데이터세트를 복사합니다. 이미지는 공용 Cloud Storage 버킷에 저장되어 있으므로 사용자 버킷으로 바로 복사할 수 있습니다.

  1. Cloud Shell 세션에서 다음을 입력합니다.

    gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://${BUCKET}/img/
    

    파일 복사가 완료되기까지 20분 정도 걸립니다.

CSV 파일 만들기

샘플 데이터 세트에는 모든 이미지의 위치와 각 이미지의 라벨이 포함된 CSV 파일이 들어 있습니다. 이 파일을 활용해 사용자의 CSV 파일을 만들게 됩니다.

  1. 사용자의 버킷에 있는 파일을 가리키도록 CSV 파일을 수정합니다.

    gsutil cat gs://${BUCKET}/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:${BUCKET}/img/flowers/:" > all_data.csv
    
  2. CSV 파일을 사용자의 버킷에 복사합니다.

    gsutil cp all_data.csv gs://${BUCKET}/csv/
    

데이터세트 만들기

AutoML Vision UI를 방문하여 데이터세트를 만들고 모델을 학습시키는 과정을 시작합니다.

해당 메시지가 나타나면 Cloud Storage 버킷에 사용한 프로젝트를 선택합니다.

  1. AutoML Vision 페이지에서 새 데이터 세트를 클릭합니다.

    콘솔의 새 데이터세트 버튼

  2. 이 데이터 세트의 이름을 지정하고(선택사항), 모델 목표를 선택하고, 데이터 세트 만들기를 클릭하여 데이터 세트 만들기 프로세스를 계속합니다.

    새 데이터세트 이름 필드

  3. 가져올 파일 선택 화면에서 Cloud Storage에서 CSV 파일 선택 라디오 옵션을 선택합니다. CSV 파일의 Cloud Storage URI를 지정합니다. 이 빠른 시작에서 CSV 파일은 다음 위치에 있습니다.

    • gs://${PROJECT_ID}-vcm/csv/all_data.csv

    PROJECT_ID를 특정 프로젝트 ID로 바꿉니다.

    파일 가져오기 선택 창

  4. 계속을 클릭하여 이미지 가져오기를 시작합니다. 가져오기 프로세스는 몇 분 정도 걸립니다. 완료되면 데이터 세트에서 식별된 모든 이미지(라벨이 있는 이미지 및 라벨이 없는 이미지)에 대한 세부정보를 보여주는 다음 페이지로 이동합니다.

    가져오기가 완료된 후 나열된 이미지

모델 학습

  1. 데이터 세트가 생성 및 처리되었으면 학습 탭을 선택하여 모델 학습을 시작합니다.

    학습 탭 선택

  2. 계속하려면 학습 시작을 선택합니다. 그러면 학습 옵션이 있는 새 모델 학습 창이 열립니다.

  3. 새 모델 학습 창의 모델 정의 섹션에서 모델 이름을 변경하고(선택 사항) Edge 모델 라디오 옵션을 선택합니다. 계속을 선택하여 다음 섹션으로 이동합니다.

    학습을 위한 모델 정의 섹션

  4. 모델 최적화 옵션 섹션에서 최적의 균형 옵션을 수락하고 계속을 선택합니다.

  5. 노드 시간 예산 설정 섹션에서 제안된 노드 예산(4 노드 시간)을 수락합니다.

    Edge 모델 학습

  6. 학습 시작을 선택하여 모델 학습을 시작합니다.

    모델 학습이 시작되고 약 1시간 정도 걸립니다. 선택한 노드 시간보다 일찍 학습이 중지될 수 있습니다. 학습이 완료되거나 오류가 발생하는 경우에는 이메일이 발송됩니다.

모델 배포

모델을 내보내려면 먼저 배포해야 합니다.

  1. 모델을 배포하려면 테스트 및 사용 탭을 선택합니다. 탭에서 모델 이름 근처의 모델 배포 옵션을 클릭합니다.

  2. 다음 창에서 배포할 노드 1개를 지정하고 배포를 선택하여 모델 배포 프로세스를 시작합니다.

    배포할 노드 시간 선택

모델 배포가 완료되면 알림이 전송됩니다.

모델 내보내기

AutoML Vision Edge 모델 사용의 마지막 단계는 모델을 내보내고(최적화 및 다운로드) 배포(사용)하는 것입니다.

Edge 기기에서 예측에 사용하기 위해 모델을 내보내고 배포하는 방법은 여러 가지입니다.

이 빠른 시작에서는 Tensorflow Lite(TF Lite)를 예시로 사용합니다. TF Lite 모델은 사용하기 쉽고 다양한 사용 사례를 지원합니다.

  1. 테스트 및 사용 탭의 모델 사용 섹션에서 TF Lite 옵션을 선택합니다.

    TF Lite 모델 내보내기

  2. TF Lite 패키지 내보내기 창에서 TF Lite 패키지를 내보낼 Cloud Storage 버킷 위치를 지정하고 내보내기를 선택합니다. 일반적으로 내보내기 프로세스는 몇 분 정도 걸립니다.

    TF Lite 모델 측면 창 내보내기

Google Cloud Storage 대상 위치에서 타임스탬프 및 모델 형식으로 이름이 지정된 폴더를 찾습니다. 여기에서 다음과 같은 파일을 찾을 수 있습니다.

  • tflite 파일(model.tflite)
  • 사전 파일(dict.txt)
  • 메타데이터 파일(tflite_metadata.json)

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 Google Cloud 프로젝트를 삭제하면 됩니다.

다음 단계

이러한 파일을 사용해서 가이드에 따라 Android 기기, iOS 기기, Raspberry Pi 3, 에 배포할 수 있습니다.

다른 모델 사용 옵션

  • 모델을 CoreML(iOS/macOS) 지원 모델로 내보낼 수 있습니다. 학습 후에 테스트 및 사용 탭에서 CoreML 옵션을 선택하고 CoreML 튜토리얼을 따라 모델을 내보낼 수 있습니다.
  • Coral Edge TPU에서 실행할 모델을 내보낼 수 있습니다. 학습 후에 테스트 및 사용 탭에서 Coral 옵션을 선택하여 모델을 내보냅니다. 하지만 객체 감지 모델과의 현재 비호환성으로 인해 Edge TPU에 대해 이미지 분류 모델만 내보내는 것이 좋습니다(Edge TPU에 대해 객체 감지 모델을 학습시키려면 대신 Google Colab 튜토리얼 중 하나 사용). 모델을 내보낸 후 Edge TPU에서 추론을 실행하는 방법에 대한 Coral 공식 문서를 따릅니다.
  • 모델을 TensorFlow 저장된 모델로 내보내고 Docker 컨테이너와 함께 사용할 수 있습니다. 학습 후에 테스트 및 사용 탭의 컨테이너 옵션을 선택하여 모델을 내보내고 컨테이너로 내보내는 방법에 대한 Edge 컨테이너 가이드를 따릅니다.
  • 브라우저 또는 Node.js에서 Tensorflow.js 모델로 사용할 모델을 내보낼 수 있습니다. 학습 후에 테스트 및 사용 탭에서 Tensorflow.js 옵션을 선택하여 모델을 내보내고 Edge TensorFlow.js 가이드를 따릅니다.

삭제

커스텀 모델이나 데이터세트가 필요 없다면 삭제해도 됩니다.

불필요한 Google Cloud Platform 요금을 막으려면 GCP Console을 사용하여 필요하지 않은 프로젝트를 삭제해야 합니다.

모델 배포 취소

모델 배포 중에는 비용이 발생합니다.

  1. 제목 표시줄 바로 아래에 있는 테스트 및 사용 탭을 선택합니다.
  2. 모델 이름 아래의 배너에서 배포 삭제를 선택하여 배포 취소 옵션 창을 엽니다.

    배포 취소 팝업 메뉴

  3. 배포 삭제를 선택하여 모델을 배포 취소합니다.

    모델 배포

  4. 모델 배포 취소가 완료되면 이메일이 전송됩니다.

프로젝트 삭제(선택사항)

불필요한 Google Cloud Platform 요금이 부과되지 않도록 하려면 Google Cloud Console에서 필요하지 않은 프로젝트를 삭제해야 합니다.