AutoML API 사용

시작하기 전에

AutoML API를 사용하려면 우선 시작하기 전에의 단계에 따라 Google Cloud Platform(GCP) 프로젝트를 설정하고 AutoML Vision 알파 액세스 권한을 확보해야 합니다.

AutoML Vision 알파 액세스를 설정했으면 GCP 프로젝트에서 AutoML API에 액세스하는 데 사용할 서비스 계정을 만들어야 합니다. API 키는 지원되지 않습니다. 서비스 계정을 만드는 방법은 다음과 같습니다.

  1. gcloud 명령줄 도구를 설치합니다.

  2. 서비스 계정 만들기 및 키 파일 다운로드의 안내에 따릅니다.

  3. 다음 명령을 사용하여 AutoML 편집자 IAM 역할에 새 서비스 계정을 추가합니다. project-id를 GCP 프로젝트의 이름으로, service-account-name을 새 서비스 계정의 이름(예: service-account1@myproject.iam.gserviceaccount.com)으로 바꿉니다.

     gcloud auth login
     gcloud config set project project-id
     gcloud projects add-iam-policy-binding project-id \
       --member=serviceAccount:service-account-name \
       --role='roles/automl.editor'

  4. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 서비스 계정을 만들 때 다운로드한 서비스 계정 키 파일의 경로로 설정합니다. 예:

     export GOOGLE_APPLICATION_CREDENTIALS=key-file

Python 클라이언트 라이브러리 사용

Python 클라이언트 라이브러리를 다운로드하고 설치하는 방법은 다음과 같습니다.

  1. 라이브러리를 다운로드하고 .tar 파일의 압축을 풉니다.

  2. [선택사항]: virtualenv를 설정하여 Python 코드를 테스트합니다. virtualenv를 사용하면 알파 코드가 시스템의 Python 환경에 영향을 주지 않습니다.

  3. 파일의 압축을 푼 곳에서 "library" 폴더로 이동하고 다음 명령을 실행합니다.

    pip install -e .
    
  4. automl_sample_code.zip을 다운로드하고 "sample.py" 파일의 압축을 풉니다. "sample.py" 파일에 GCP 프로젝트 ID를 추가하고 파일을 실행하여 Python 클라이언트 라이브러리가 올바르게 설치되었는지 확인합니다.

    python sample.py
    

    명령이 정상적으로 실행되면 GCP 프로젝트의 모델 목록이 표시됩니다.

  5. Python 클라이언트 라이브러리를 코드에 가져옵니다. 예:

    import sys
    
    from google.cloud import automl_v1alpha1
    from google.cloud.automl_v1alpha1.proto import service_pb2
    from google.cloud.automl_v1alpha1.gapic import enums
    

curl 사용

이 항목의 curl 샘플을 더 편리하게 실행하려면 다음 환경 변수를 설정합니다. project-id를 GCP 프로젝트의 이름으로 바꿉니다.

export PROJECT_ID="project-id"

AutoML API 예시

다음 예제에서는 REST 명령(curl 명령 사용) 또는 Python 클라이언트 라이브러리를 통해 AutoML API를 사용하는 방법을 보여줍니다. 데이터세트를 만드는 등의 특정 작업을 먼저 수행해야 데이터세트에 이미지 URL 및 해당 라벨을 포함하는 CSV 파일 로드 등의 다른 작업을 실행할 수 있으므로 각 예제를 순서대로 실행해야 합니다.

데이터세트 만들기

커스텀 모델을 직접 만드는 첫 단계는 데이터세트 만들기입니다.

다음 예제에서는 이미지 하나에 여러 라벨을 지원하는 test_dataset라는 데이터세트를 만듭니다(MULTILABEL 참조).

명령줄

curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/datasets \
  -d '{
    "displayName": "test_dataset",
    "imageClassificationDatasetSpec": {
      "classificationType": "MULTICLASS"
    },
  }'

다음과 비슷한 출력이 표시됩니다.

{
  "name": "projects/434039606874/locations/us-central1/datasets/356587829854924648",
  "displayName": "test_dataset",
  "createTime": "2018-04-26T18:02:59.825060Z",
  "imageClassificationDatasetSpec": {
    "classificationType": "MULTICLASS"
  }
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.

새 데이터세트의 전체 이름은 데이터세트에 이미지를 가져오는 등의 다른 작업에 사용되므로 저장해 두어야 합니다.

def automl_create_dataset(dataset_name):
  """ Create a dataset"""
  dataset_spec = {
    "classification_type" :  enums.ClassificationType.MULTILABEL
  }
  my_dataset = {
    "display_name" : dataset_name,
    "image_classification_dataset_spec" : dataset_spec
  }
  response = client.create_dataset( parent, my_dataset)
  print("\nDataset creation: {}", response)
  dataset_full_id = response.name

다음과 비슷한 출력이 표시됩니다.

display_name: "sample_dataset"
image_classification_dataset_spec {
  classification_type: MULTILABEL
}
create_time {
  seconds: 1525398440
  nanos: 185980000
}

데이터세트 나열

다음 예제에서는 프로젝트의 현재 데이터세트를 나열합니다.

명령줄

curl \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/datasets

다음과 비슷한 출력이 표시됩니다.

{
  "datasets": [
    {
      "name": "projects/434039606874/locations/us-central1/datasets/356587829854924648",
      "displayName": "test_dataset",
      "createTime": "2018-04-26T18:02:59.825060Z",
      "imageClassificationDatasetSpec": {
        "classificationType": "MULTICLASS"
      }
    },
    {
      "name": "projects/434039606874/locations/us-central1/datasets/3104518874390609379",
      "displayName": "test",
      "createTime": "2017-12-16T01:10:38.328280Z",
      "imageClassificationDatasetSpec": {
        "classificationType": "MULTICLASS"
      }
    }
  ]
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_list_datasets():
  """ list all datasets"""
  filter_ = ''
  response = client.list_datasets(parent, filter_)
  print("\nList of datasets:")
  for element in response:
    print(element)

다음과 비슷한 출력이 표시됩니다.

List of datasets:
name: "projects/434039606874/locations/us-central1/datasets/5518493835572039226"
display_name: "sample_dataset"
image_classification_dataset_spec {
  classification_type: MULTILABEL
}
create_time {
  seconds: 1525398440
  nanos: 185980000
}

name: "projects/434039606874/locations/us-central1/datasets/1089191110950722747"
display_name: "New_testing"
image_classification_dataset_spec {
  classification_type: MULTICLASS
}
examples_count: 2
create_time {
  seconds: 1525380871
  nanos: 174890000
}

데이터세트에 이미지 가져오기

데이터세트를 만들었으면 이제 Google Cloud Storage 버킷에 저장된 CSV 파일에서 이미지 URI 및 해당 라벨을 가져올 수 있습니다. 데이터 준비 및 가져올 CSV 파일 만들기에 대한 자세한 내용은 이미지 준비를 참조하세요.

다음 예제에서는 CSV 파일을 데이터세트로 가져옵니다.

명령줄

* dataset-id를 데이터세트의 ID로 바꿉니다. ID는 데이터세트 이름의 마지막 요소입니다. 예를 들어 데이터세트의 이름이 projects/434039606874/locations/us-central1/datasets/3104518874390609379인 경우 데이터세트의 ID는 3104518874390609379입니다.

  • bucket-name을 CSV 파일이 저장된 Google Cloud Storage 버킷의 이름으로 바꿉니다.

  • csv-file-name을 CSV 파일의 이름으로 바꿉니다.

    curl \
      -X POST \
      -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type: application/json" \
      https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/datasets/dataset-id:import \
      -d '{
        "inputUris": "gs://bucket-name-vcm/csv/csv-file-name.csv",
      }'
    

    다음과 비슷한 출력이 표시됩니다. 작업 ID를 사용하여 작업 상태를 가져올 수 있습니다. 예제를 보려면 작업 상태 가져오기를 참조하세요.

    {
      "name": "projects/434039606874/locations/us-central1/operations/1979469554520650937",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
        "createTime": "2018-04-27T01:28:36.128120Z",
        "updateTime": "2018-04-27T01:28:36.128150Z",
        "cancellable": true
      }
    }
    

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.

데이터세트의 전체 이름은 projects/{project-id}/locations/us-central1/datasets/{dataset-id} 형식입니다. 예: projects/434039606874/locations/us-central1/datasets/3104518874390609379

def automl_import(path, dataset_full_id):
  """ import labeled images """
  input_uris = [ path]
  operation = client.import_dataset(dataset_full_id, input_uris)
  print('\nProcessing import')
  #synchronous check of operation status
  result = operation.result()
  print("\nImages imported: {} ", result)

모델 만들기(학습)

데이터세트에 이미지 URI 및 라벨을 가져왔으면 이제 모델을 학습시키는 작업을 시작할 수 있습니다.

다음 예제에서는 데이터세트로 기본적인 커스텀 모델을 학습시키는 작업을 시작합니다.

명령줄

  • dataset-id를 데이터세트의 ID로 바꿉니다. ID는 데이터세트 이름의 마지막 요소입니다. 예를 들어 데이터세트의 이름이 projects/434039606874/locations/us-central1/datasets/3104518874390609379인 경우 데이터세트의 ID는 3104518874390609379입니다.
curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models \
  -d '{
    "displayName": "test_model",
    "dataset_id": "dataset-id",
    "imageClassificationModelSpec": {
      "modelType": "BASIC_MODEL"
    },
  }'

다음과 비슷한 출력이 표시됩니다. 작업 ID를 사용하여 작업 상태를 가져올 수 있습니다. 예제를 보려면 작업 상태 가져오기를 참조하세요.

{
  "name": "projects/434039606874/locations/us-central1/operations/1979469554520652445",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
    "createTime": "2018-04-27T01:28:41.338120Z",
    "updateTime": "2018-04-27T01:28:41.338120Z",
    "cancellable": true
  }
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_create_model(dataset_id, model_name):
  """ start training """
  #dataset_id = dataset_full_id.split('/')[-1]
  my_model = {
    "display_name" : model_name,
    "dataset_id" : dataset_id,
    "image_classification_model_spec": { "model_type": "BASIC_MODEL" }
  }
  print(my_model)
  operation = client.create_model(parent, my_model)
  print('\nTraining started')
  #synchronous check of operation status
  print('\nTraining started')
  result = operation.result()
  model_full_id = result.name
  print("Model id: {}", model_id)

작업 상태 가져오기

CSV를 가져오거나 모델을 만들려는 원래 요청의 응답에서 얻은 작업 ID를 사용하여 데이터세트에 CSV 파일을 가져오거나 모델을 생성(학습)하는 작업의 상태를 확인할 수 있습니다.

다음 예제에서는 장기 실행 작업의 상태를 가져옵니다.

  • operation-id를 작업의 ID로 바꿉니다. ID는 작업 이름의 마지막 요소입니다. 예를 들어 작업의 이름이 projects/434039606874/locations/us-central1/operations/1979469554520650937인 경우 작업의 ID는 1979469554520650937입니다.

명령줄

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/operation-id

CSV 가져오기 작업의 경우 다음과 비슷한 출력이 표시됩니다.

{
  "name": "projects/434039606874/locations/us-central1/operations/2116326435840390257",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
    "progressPercentage": 100,
    "partialFailures": [
      {
        "code": 7,
        "message": "Duplicated files detected gs://cloud-ml-eap-vcm/img/flower_photos/sunflowers/15066430311_fb57fa92b0_m.jpg and gs://cloud-ml-eap-vcm/img/flower_photos/sunflowers/14889392928_9742aed45b_m.jpg have the same content"
      },
      {
        "code": 7,
        "message": "Duplicated files detected gs://cloud-ml-eap-vcm/img/flower_photos/sunflowers/15072973261_73e2912ef2_n.jpg and gs://cloud-ml-eap-vcm/img/flower_photos/sunflowers/15069459615_7e0fd61914_n.jpg have the same content"
      }
    ],
    "createTime": "2018-04-27T01:39:59.821460Z",
    "updateTime": "2018-04-27T01:43:09.564770Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

모델 만들기 작업의 경우 다음과 비슷한 출력이 표시됩니다.

{
  "name": "projects/434039606874/locations/us-central1/operations/2126599795587061786",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
    "progressPercentage": 100,
    "createTime": "2018-04-27T01:56:28.395640Z",
    "updateTime": "2018-04-27T02:04:12.336070Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.Model",
    "name": "projects/434039606874/locations/us-central1/models/3745331181667467569",
    "createTime": "2018-04-27T02:00:22.329970Z",
    "imageClassificationModelSpec": {
      "modelType": "BASIC_MODEL"
    },
    "displayName": "a_98487760535e48319dd204e6394670"
  }
}

모델 평가 나열

모델 생성(학습) 작업이 완료되면 모델에 대한 평가(ModelEvaluation)에 액세스할 수 있습니다. 모델에 대한 모델 평가를 나열하고 응답의 classificationMetrics 섹션에서 모델의 AUC, PRC와 같은 정확도 값을 검토할 수 있습니다.

다음 예제에서는 모델에 대해 사용 가능한 모델 평가를 나열합니다.

명령줄

  • model-id를 모델의 ID로 바꿉니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.
curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models/model-id/modelEvaluations

다음과 비슷한 출력이 표시됩니다.

{
  "modelEvaluation": [
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584/modelEvaluations/9009741181387603448",
      "annotationSpecId": "projects/434039606874/locations/us-central1/datasets/1626783223442902573/annotationSpecs/17040929661974749",
      "classificationMetrics": {
        "auPrc": 0.99772006,
        "baseAuPrc": 0.21706384,
        "evaluatedExamplesCount": 377,
        "confidenceMetricsEntry": [
          {
            "recall": 1,
            "precision": -1.3877788e-17,
            "f1Score": -2.7755576e-17,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.05,
            "recall": 0.997,
            "precision": 0.867,
            "f1Score": 0.92746675,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.1,
            "recall": 0.995,
            "precision": 0.905,
            "f1Score": 0.9478684,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.15,
            "recall": 0.992,
            "precision": 0.932,
            "f1Score": 0.96106446,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.2,
            "recall": 0.989,
            "precision": 0.951,
            "f1Score": 0.96962786,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
          {
            "confidenceThreshold": 0.25,
            "recall": 0.987,
            "precision": 0.957,
            "f1Score": 0.9717685,
            "recallAt1": 0.9761273,
            "precisionAt1": 0.9761273,
            "f1ScoreAt1": 0.9761273
          },
        ...
        ],
        "confusionMatrix": {
          "row": [
            {
              "exampleCount": [
                71,
                0,
                0,
                0,
                0
              ]
            },
            {
              "exampleCount": [
                3,
                87,
                1,
                0,
                0
              ]
            },
            {
              "exampleCount": [
                0,
                0,
                68,
                1,
                1
              ]
            },
            {
              "exampleCount": [
                0,
                0,
                0,
                67,
                0
              ]
            },
            {
              "exampleCount": [
                0,
                1,
                2,
                0,
                75
              ]
            }
          ]
        }
      },
      "createTime": "2018-04-30T23:06:14.746840Z"
    },
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584/modelEvaluations/9009741181387603448",
      "annotationSpecId": "projects/434039606874/locations/us-central1/datasets/1626783223442902573/annotationSpecs/1258823357545045636",
      "classificationMetrics": {
        "auPrc": 0.9972302,
        "baseAuPrc": 0.1883289,
      ...
      },
      "createTime": "2018-04-30T23:06:14.649260Z"
    }
  ]
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.

  • model_id 매개변수는 모델의 ID입니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.
def automl_list_model_evaluations(model_id):
  """ list model evaluations """
  filter_ = ''
  parent_model = client.model_path(project_id, 'us-central1', model_id)
  print("\nList of model evaluations:")
  for element in client.list_model_evaluations(parent_model, filter_):
    print(element)

다음과 비슷한 출력이 표시됩니다.

name: "projects/434039606874/locations/us-central1/models/6877109870585533885/modelEvaluations/9062584215341814548"
annotation_spec_id: "projects/434039606874/locations/us-central1/datasets/3104518874390609379/annotationSpecs/17040929661974749"
classification_metrics {
  au_prc: 1.0
  evaluated_examples_count: 3
  confidence_metrics_entry {
    recall: 1.0
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.0500000007451
    recall: 1.0
    precision: 0.0610000006855
    f1_score: 0.114985860884
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.10000000149
    recall: 1.0
    precision: 0.122000001371
    f1_score: 0.217468813062
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.15000000596
    recall: 1.0
    precision: 0.184000000358
    f1_score: 0.310810804367
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.20000000298
    recall: 1.0
    precision: 0.245000004768
    f1_score: 0.393574297428
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.25
    recall: 1.0
    precision: 0.305999994278
    f1_score: 0.468606442213
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.300000011921
    recall: 1.0
    precision: 0.36700001359
    f1_score: 0.536942183971
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
  confidence_metrics_entry {
    confidence_threshold: 0.34999999404
    recall: 1.0
    precision: 0.428999990225
    f1_score: 0.60041987896
    recall_at1: 1.0
    precision_at1: 1.0
    f1_score_at1: 1.0
  }
...
}
create_time {
  seconds: 1515705904
  nanos: 983220000
}

예측하기

모델을 학습시킨 후 모델을 사용하여 이미지에 대한 예측을 수행할 수 있습니다. 즉, 커스텀 모델을 어떻게 만들었는지에 따라 이미지의 내용을 기술하는 하나 이상의 라벨을 가져올 수 있습니다.

이미지에 대한 예측을 수행하려면 imageBytes 필드에 이미지 내용을 제공합니다. 이미지의 내용은 base64 인코딩이어야 합니다. 이미지 내용을 base64로 인코딩하는 방법은 Base64 인코딩을 참조하세요.

다음 예제에서는 이미지에 대한 예측을 요청합니다.

명령줄

  • model-id를 모델의 ID로 바꿉니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models/model-id:predict \
  -d '{
        "payload" : {
          "image": {
            "imageBytes" : "/9j/4AAQSkZJRgABAQAAAQ … "
          },
        }
      }'

다음과 비슷한 출력이 표시됩니다.

{
  "payload": [
    {
      "annotationSpecId": "Lily",
      "classification": {
        "score": 0.8989502
      }
    },
    {
      "annotationSpecId": "Daisy",
      "classification": {
        "score": 0.10098731
      }
    },
    {
      "annotationSpecId": "--other--",
      "classification": {
        "score": 6.2490464e-05
      }
    }
  ]
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.

  • model_full_id 매개변수는 모델의 전체 이름입니다. 예: projects/434039606874/locations/us-central1/models/3745331181667467569
def automl_predict(model_full_id):
  """ # prediction """
  prediction_client = automl_v1alpha1.PredictionServiceClient()
  # TODO replace file_path with your test file path
  file_path = 'IMG_test.jpg'
  with open(file_path, 'rb') as ff:
    content = ff.read()
  payload = {'image': {
    'image_bytes': content
        }
  }
  params = {}
  request = prediction_client.predict(model_full_id, payload, params)
  print('\nPrediction results: {}', response)

모델 관리

프로젝트의 모델 가져오기 또는 모델 나열

다음 예제에서는 모델에 대한 정보를 가져옵니다.

  • model-id를 모델의 ID로 바꿉니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.

명령줄

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models/model-id

다음과 비슷한 출력이 표시됩니다.

{
  "model": [
    {
      "name": "projects/434039606874/locations/us-central1/models/3745331181667467569",
      "createTime": "2018-04-27T02:00:22.329970Z",
      "imageClassificationModelSpec": {
        "modelType": "BASIC_MODEL"
      },
      "displayName": "a_98487760535e48319dd204e6394670"
    },
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_get_model(model_id):
  """ Get model evaluation """
  name = client.model_path(project_id, 'us-central1', model_id)
  print("\nModel:")
  response = client.get_model(name)
  print(response)

다음과 비슷한 출력이 표시됩니다.

Model:
name: "projects/434039606874/locations/us-central1/models/7537307368641647584"
display_name: "c982e11ffbd5455e8d9bee2734f01f81"
image_classification_model_spec {
  model_type: "BASIC_MODEL"
}
create_time {
  seconds: 1525129579
  nanos: 223230000
}

다음 예제에서는 GCP 프로젝트의 모든 모델을 나열합니다.

명령줄

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default  \
print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models

다음과 비슷한 출력이 표시됩니다.

{
  "model": [
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584",
      "displayName": "c982e11ffbd5455e8d9bee2734f01f81",
      "imageClassificationModelSpec": {
        "modelType": "BASIC_MODEL"
      },
      "createTime": "2018-04-30T23:06:19.223230Z"
    },
    {
      "name": "projects/434039606874/locations/us-central1/models/6877109870585533885",
      "displayName": "test_201801111318",
      "imageClassificationModelSpec": {
        "modelType": "BASIC_MODEL"
      },
      "createTime": "2018-01-11T21:25:05.893590Z"
    }
  ]
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_list_models():
  """ # list all models """
  filter_ = ''
  response = client.list_models(parent, filter_)
  print("\nList of models:")
  for element in response:
    print(element)

List of models:
name: "projects/434039606874/locations/us-central1/models/5043148733665046848"
display_name: "b32ef44908384f6c92539f5c65b7ae37"
image_classification_model_spec {
  model_type: "BASIC_MODEL"
}
create_time {
  seconds: 1525380150
  nanos: 705450000
}

name: "projects/434039606874/locations/us-central1/models/6453919078412494996"
display_name: "a_66f84595e8ea4a368293bb085f35df"
image_classification_model_spec {
  model_type: "BASIC_MODEL"
}

모델 삭제

다음 예제에서는 모델을 삭제합니다.

명령줄

  • model-id를 모델의 ID로 바꿉니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.
curl \
  -X DELETE \
  -H "Authorization: Bearer $(gcloud auth application-default  \
print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models/model-id

다음과 비슷한 출력이 표시됩니다. 작업 ID를 사용하여 삭제 작업의 상태를 가져올 수 있습니다. 예제를 보려면 작업 상태 가져오기를 참조하세요.

{
  "name": "projects/434039606874/locations/us-central1/operations/4422270194425422927",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
    "progressPercentage": 100,
    "createTime": "2018-04-27T02:33:02.479200Z",
    "updateTime": "2018-04-27T02:35:17.309060Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.

  • model_id 변수는 모델의 ID입니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.
def automl_delete_model(model_id):
  """ delete a model """
  name = client.model_path(project_id, 'us-central1', model_id)
  operation = client.delete_model(name)
  #synchronous check of operation status
  result = operation.result()
  print( 'Model deletion started \n{}', result)

다음과 비슷한 출력이 표시됩니다.

Model deletion started
create_time {
  seconds: 1525399139
  nanos: 50740000
}
update_time {
  seconds: 1525399139
  nanos: 50760000
}

모델 평가 가져오기

다음 예제에서는 모델에 대한 특정 모델 평가를 가져옵니다.

  • model-id를 모델의 ID로 바꿉니다. ID는 모델 이름의 마지막 요소입니다. 예를 들어 모델의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569인 경우 모델의 ID는 3745331181667467569입니다.

  • evaluation-id를 모델 평가의 ID로 바꿉니다. ID는 모델 평가 이름의 마지막 요소입니다. 예를 들어 모델 평가의 이름이 projects/434039606874/locations/us-central1/models/3745331181667467569/modelEvaluations/6877109870585533885인 경우 모델 평가의 ID는 6877109870585533885입니다.

명령줄

curl \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/models/model-id/modelEvaluations/evaluation-id

다음과 비슷한 출력이 표시됩니다.

{
  "name": "projects/434039606874/locations/us-central1/models/6877109870585533885/modelEvaluations/9062584215341814548",
  "annotationSpecId": "projects/434039606874/locations/us-central1/datasets/3104518874390609379/annotationSpecs/17040929661974749",
  "classificationMetrics": {
    "auPrc": 1,
    "evaluatedExamplesCount": 3,
    "confidenceMetricsEntry": [
      {
        "recall": 1,
        "recallAt1": 1,
        "precisionAt1": 1,
        "f1ScoreAt1": 1
      },
      {
        "confidenceThreshold": 0.05,
        "recall": 1,
        "precision": 0.061,
        "f1Score": 0.11498586,
        "recallAt1": 1,
        "precisionAt1": 1,
        "f1ScoreAt1": 1
      },
      {
        "confidenceThreshold": 0.1,
        "recall": 1,
        "precision": 0.122,
        "f1Score": 0.21746881,
        "recallAt1": 1,
        "precisionAt1": 1,
        "f1ScoreAt1": 1
      },
...
      {
        "confidenceThreshold": 0.995,
        "recall": 0.035,
        "precision": 1,
        "f1Score": 0.06763285,
        "precisionAt1": 1
      }
    ],
    "confusionMatrix": {
      "row": [
        {
          "exampleCount": [
            2,
            0
          ]
        },
        {
          "exampleCount": [
            0,
            1
          ]
        }
      ]
    }
  },
  "createTime": "2018-01-11T21:25:05.021830Z"
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_get_model_evaluation(model_id, model_evaluation_id):
  """ Get model evaluation """
  name = client.model_evaluation_path(project_id, 'us-central1', model_id, model_evaluation_id)
  print("\nModel evaluation:")
  response = client.get_model_evaluation(name)
  print(response)

다음과 비슷한 출력이 표시됩니다.

Model evaluation:
name: "projects/434039606874/locations/us-central1/models/7537307368641647584/modelEvaluations/9009741181387603448"
annotation_spec_id: "projects/434039606874/locations/us-central1/datasets/1626783223442902573/annotationSpecs/17040929661974749"
classification_metrics {
  au_prc: 0.997720062733
  base_au_prc: 0.217063844204
  evaluated_examples_count: 377
  confidence_metrics_entry {
    recall: 1.0
    precision: -1.38777878078e-17
    f1_score: -2.77555756156e-17
    recall_at1: 0.976127326488
    precision_at1: 0.976127326488
    f1_score_at1: 0.976127326488
  }
  confidence_metrics_entry {
    confidence_threshold: 0.0500000007451
    recall: 0.996999979019
    precision: 0.866999983788
    f1_score: 0.927466750145
    recall_at1: 0.976127326488
    precision_at1: 0.976127326488
    f1_score_at1: 0.976127326488
  }
...
    row {
      example_count: 0
      example_count: 0
      example_count: 0
      example_count: 67
      example_count: 0
    }
    row {
      example_count: 0
      example_count: 1
      example_count: 2
      example_count: 0
      example_count: 75
    }
  }
}
create_time {
  seconds: 1525129574
  nanos: 746840000
}

데이터세트 삭제

다음 예제에서는 데이터세트를 삭제합니다.

명령줄

  • dataset-id를 데이터세트의 ID로 바꿉니다. ID는 데이터세트 이름의 마지막 요소입니다. 예를 들어 데이터세트의 이름이 projects/434039606874/locations/us-central1/datasets/3104518874390609379인 경우 데이터세트의 ID는 3104518874390609379입니다.
curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" https://automl.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/us-central1/datasets/dataset-id

다음과 비슷한 출력이 표시됩니다.

{
  "name": "projects/434039606874/locations/us-central1/operations/3512013641657611176",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1alpha1.OperationMetadata",
    "createTime": "2018-05-04T01:45:16.735340Z",
    "updateTime": "2018-05-04T01:45:16.735360Z",
    "cancellable": true
  }
}

Python

이 코드 예제를 실행하려면 우선 Python 클라이언트 라이브러리를 설치해야 합니다.
def automl_delete_dataset(dataset_id):
  """ delete a dataset """
  #dataset_id = dataset_full_id.split('/')[-1]

name = client.dataset_path(project_id, 'us-central1', dataset_id) operation = client.delete_dataset(name) #synchronous check of operation status result = operation.result() print( '\nDataset deletion started')

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud AutoML Vision
도움이 필요하시나요? 지원 페이지를 방문하세요.