Edge 모델 내보내기

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

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

이미지 분류 모델을 다음 형식으로 내보낼 수 있습니다.

기기로 내보내기

TensorFlow Lite 모델

웹 UI

  1. Vision Dashboard를 열고 왼쪽 탐색 메뉴에서 전구 아이콘을 클릭하여 사용 가능한 모델을 표시합니다.

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

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

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

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

    업데이트된 TF Lite 내보내기 모델 옵션 업데이트된 TF Lite 내보내기 모델 옵션

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/icn/tflite-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

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

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

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

  • CLOUD_STORAGE_BUCKET/model-export/icn/tf-saved-model-DATASET_NAME-2019-07-22T21:25:35.135Z
  • CLOUD_STORAGE_BUCKET/model-export/icn/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에 배포할 수 있습니다.

Core ML 모델

웹 UI

  1. Vision Dashboard를 열고 왼쪽 탐색 메뉴에서 전구 아이콘을 클릭하여 사용 가능한 모델을 표시합니다.

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

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

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

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

    Core ML 모델 내보내기 옵션 Core ML 모델 내보내기 옵션

REST

"modelFormat" 필드에 "core_ml"을 지정합니다.

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

  • 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": "core_ml",
    "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-11-12T22:53:55.290584Z",
    "updateTime": "2019-11-12T22:53:55.290584Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/icn/core_ml-DATASET_NAME_YYYY-MM-DDThh:mm:ss.sssZ/"
      }
    }
  }
}

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

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

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

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

폴더에는 model.mlmodel이라는 Core ML 모델과 dict.txt 라벨 파일이 포함되어 있습니다.

내보낸 모델 사용

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

컨테이너로 내보내기

웹 UI

  1. Vision Dashboard를 열고 왼쪽 탐색 메뉴에서 전구 아이콘을 클릭하여 사용 가능한 모델을 표시합니다.

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

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

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

  4. 모델 사용 섹션에서 컨테이너 옵션을 선택합니다. 컨테이너 옵션을 선택하고 측면 창에서 Cloud Storage의 내보내기 위치를 지정한 후 내보내기를 클릭하여 Edge 모델을 내보냅니다.

    컨테이너 옵션으로 내보내기 컨테이너 옵션으로 내보내기

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/icn/tf-saved-model-DATASET_NAME-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

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

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

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

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

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

내보낸 모델 사용

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

Edge TPU로 내보내기

웹 UI

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

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

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

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

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

    Coral(edgetpu tflite) 옵션 내보내기 Coral(edgetpu tflite) 옵션 내보내기

REST

"modelFormat" 필드에 "edgetpu_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": "edgetpu_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-11-12T22:55:03.554806Z",
    "updateTime": "2019-11-12T22:55:03.554806Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "OUTPUT_STORAGE_BUCKET/model-export/icn/edgetpu_tflite-DATASET_NAME_YYYY-MM-DDThh:mm:ss.sssZ/"
      }
    }
  }
}

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

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

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

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

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

내보낸 모델 사용

Edge TPU에 배포 방법에 대한 자세한 내용은 Edge TPU에서 유추 실행 방법에 대한 Coral 공식 문서를 참조하세요.

웹용 내보내기

웹 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 폴더 예시