Edge 모델 내보내기

모델을 만든(학습시킨) 후에는 커스텀 모델을 내보낼 수 있습니다.

모델을 내보낸 후에는 모델을 기기에 배포할 수 있습니다.

이미지 분류 모델은 ExportModel API를 사용하여 Tensorflow Lite 형식, 일반적인 TensorFlow 형식, 웹용 TensorFlow.js 형식으로 Google Cloud Storage 위치로 내보낼 수 있습니다.

기기로 내보내기

TensorFlow Lite 모델

웹 UI

  1. AutoML Vision 객체 감지 UI를 열고 왼쪽 탐색 메뉴에 있는 전구 아이콘을 클릭하면 사용 가능한 모델이 표시됩니다.

    다른 프로젝트의 모델을 보려면 제목 표시줄 오른쪽 위에 있는 드롭다운 목록에서 프로젝트를 선택하세요.

  2. 이미지 라벨 지정에 사용할 모델의 행을 선택합니다.

  3. 테스트 및 사용 탭을 선택합니다.

  4. 모델 사용 섹션에서 TF Lite 카드를 선택합니다. 그러면 측면의 "기기 내 모델 사용" 창이 열립니다.

    TF Lite 모델 내보내기 옵션 이미지

  5. 측면 창에서 Google Cloud Storage 출력 위치를 지정합니다. 모델 출력을 위해 스토리지 위치를 선택한 후 내보내기를 선택하여 모델 내보내기 작업을 시작합니다.

    내보낸 모델 이미지의 스토리지 위치 선택

  6. 내보내기 후에는 동일한 창에서 "Google Cloud Storage에서 열기" 옵션을 선택하여 Google Cloud Storage의 내보내기 디렉터리로 직접 이동할 수 있습니다.

REST

"modelFormat" 필드에 "tflite"(기본값)를 지정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID입니다.
  • model-id: 모델을 만들 때의 응답에서 모델의 ID입니다. ID는 모델 이름의 마지막 요소입니다. 예를 들면 다음과 같습니다.
    • 모델 이름: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • 모델 ID: IOD4412217016962778756
  • output-storage-bucket: 출력 파일을 저장할 Google Cloud Storage 버킷/디렉터리이며, gs://bucket/directory/ 형식으로 표시됩니다. 요청하는 사용자에게 버킷에 대한 쓰기 권한이 있어야 합니다.

HTTP 메서드 및 URL:

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

JSON 요청 본문:

{
  "outputConfig": {
    "modelFormat": "tflite",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

따라서 제공된 디렉터리에 폴더 구조(CLOUD_STORAGE_BUCKET/[DIRECTORY])가 표시됩니다. 생성된 폴더 구조는 다음과 같은 일반적인 형식입니다(ISO-8601 형식의 타임스탬프).

  • CLOUD_STORAGE_BUCKET/model-export/iod/MODEL_TYPE-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ

예를 들면 다음과 같습니다.

  • CLOUD_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-2019-07-22T21:25:35.135Z
  • CLOUD_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-2019-07-22T21:23:18.861Z

폴더에는 model.tflite라는 TensorFlow Lite 모델, dict.txt라는 라벨 파일, tflite_metadata.json 파일이 포함되어 있습니다.

타임스탬프 폴더 예시

내보낸 모델 사용

모델을 Google Cloud Storage 버킷에 내보낸 후에는 AutoML Vision Edge 모델을 Android 기기, iOS 기기, Raspberry Pi 3에 배포할 수 있습니다.

컨테이너로 내보내기

웹 UI

  1. AutoML Vision 객체 감지 UI를 열고 왼쪽 탐색 메뉴에 있는 전구 아이콘을 클릭하면 사용 가능한 모델이 표시됩니다.

    다른 프로젝트의 모델을 보려면 제목 표시줄 오른쪽 위에 있는 드롭다운 목록에서 프로젝트를 선택하세요.

  2. 이미지에 라벨을 지정하는 데 사용할 모델의 행을 클릭합니다.

  3. 테스트 및 사용 탭을 선택합니다.

  4. 모델 사용 섹션에서 TF Lite 카드를 선택합니다. 그러면 측면의 "기기 내 모델 사용" 창이 열립니다.

    TF Lite 모델 내보내기 옵션 이미지

  5. 측면 창에서 Google Cloud Storage 출력 위치를 지정합니다. 모델 출력을 위해 스토리지 위치를 선택한 후 내보내기를 선택하여 모델 내보내기 작업을 시작합니다.

    내보낸 모델 이미지의 스토리지 위치 선택

  6. 내보내기 후에는 동일한 창에서 "Google Cloud Storage에서 열기" 옵션을 선택하여 Google Cloud Storage의 내보내기 디렉터리로 직접 이동할 수 있습니다.

REST

"modelFormat" 필드에 "tf-saved-model"을 지정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID입니다.
  • model-id: 모델을 만들 때의 응답에서 모델의 ID입니다. ID는 모델 이름의 마지막 요소입니다. 예를 들면 다음과 같습니다.
    • 모델 이름: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • 모델 ID: IOD4412217016962778756
  • output-storage-bucket: 출력 파일을 저장할 Google Cloud Storage 버킷/디렉터리이며, gs://bucket/directory/ 형식으로 표시됩니다. 요청하는 사용자에게 버킷에 대한 쓰기 권한이 있어야 합니다.

HTTP 메서드 및 URL:

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

JSON 요청 본문:

{
  "outputConfig": {
    "modelFormat": "tf-saved-model",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

따라서 제공된 디렉터리에 폴더 구조(CLOUD_STORAGE_BUCKET/[DIRECTORY])가 표시됩니다. 생성된 폴더 구조는 다음과 같은 일반적인 형식입니다(ISO-8601 형식의 타임스탬프).

  • CLOUD_STORAGE_BUCKET/model-export/iod/MODEL_TYPE-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ

예를 들면 다음과 같습니다.

  • CLOUD_STORAGE_BUCKET/model-export/iod/tf-saved-model-DATASET_NAME-2019-07-22T21:25:35.135Z
  • CLOUD_STORAGE_BUCKET/model-export/iod/tflite-DATASET_NAME-2019-07-22T21:23:18.861Z

폴더에는 saved_model.pb라는 TensorFlow 모델이 포함되어 있습니다.

타임스탬프 폴더 예시

내보낸 모델 사용

모델을 Google Cloud Storage 버킷에 내보낸 후에는 내보낸 모델을 사용하여 Docker 이미지에서 예측을 수행할 수 있습니다. 컨테이너에 배포에 대한 자세한 내용은 컨테이너 가이드를 참조하세요.

웹용 내보내기

웹 UI

  1. Vision Dashboard을 열고 탐색 메뉴의 전구 아이콘을 선택하여 사용 가능한 모델을 표시합니다.

    다른 프로젝트의 모델을 보려면 제목 표시줄 오른쪽 위에 있는 드롭다운 목록에서 프로젝트를 선택하세요.

  2. 이미지 라벨 지정에 사용할 모델의 행을 선택합니다.

  3. 제목 표시줄 바로 아래에 있는 테스트 및 사용 탭을 선택합니다.

  4. 모델 사용 섹션에서 Tensorflow.js 옵션을 선택합니다. Tensorflow.js 옵션을 선택하고 측면 창에서 Cloud Storage의 내보내기 위치를 지정한 후 내보내기를 선택하여 웹용 TensorFlow.js 모델을 내보냅니다.

    Tensorflow.js 내보내기 옵션 Tensorflow.js 내보내기 옵션

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: GCP 프로젝트 ID입니다.
  • model-id: 모델을 만들 때의 응답에서 모델의 ID입니다. ID는 모델 이름의 마지막 요소입니다. 예를 들면 다음과 같습니다.
    • 모델 이름: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • 모델 ID: IOD4412217016962778756
  • output-storage-bucket: 출력 파일을 저장할 Google Cloud Storage 버킷/디렉터리이며, gs://bucket/directory/ 형식으로 표시됩니다. 요청하는 사용자에게 버킷에 대한 쓰기 권한이 있어야 합니다.

HTTP 메서드 및 URL:

POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export

JSON 요청 본문:

{
  "outputConfig": {
    "modelFormat": "tf_js",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_STORAGE_BUCKET/"
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:export" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

따라서 입력한 디렉터리에 폴더(USER_GCS_PATH)가 표시됩니다. 생성된 폴더 이름은 타임스탬프에 따라 /model-export/icn/tf_js-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ 형식으로 지정됩니다(예: tf_js-edge_model-2019-10-03T17:24:46.999Z).

폴더에는 바이너리 파일(.bin), dict.txt라는 이름의 라벨 파일, model.json 파일이 포함되어 있습니다.

Tensorflow.js 폴더 예시