빠른 시작: 명령줄 사용

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

  • Google Cloud Storage에 동영상 세트 복사
  • 동영상 및 해당 라벨을 나열하는 CSV 파일 만들기
  • AutoML Video Intelligence 객체 추적을 사용한 데이터세트 생성 및 모델의 학습과 배포

시작하기 전에

프로젝트 설정

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

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

    API 사용 설정

  5. gcloud 명령줄 도구를 설치합니다.
  6. 서비스 계정 만들기 및 키 파일 다운로드의 안내를 따릅니다.
  7. 서비스 계정을 만들 때 다운로드한 서비스 계정 키 파일의 경로로 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정합니다.
    export GOOGLE_APPLICATION_CREDENTIALS=key-file
  8. PROJECT_ID 환경 변수를 프로젝트 ID로 설정합니다.
    export PROJECT_ID=your-project-id
    AutoML API 호출 및 리소스 이름에는 프로젝트 ID가 포함됩니다. PROJECT_ID 환경 변수는 ID를 지정하는 편리한 방법을 제공합니다.
  9. AutoML 편집자 IAM 역할에 본인과 본인의 서비스 계정을 추가합니다.
    1. your-userid@your-domain을 본인의 사용자 계정으로 바꿉니다.
    2. service-account-name을 새 서비스 계정의 이름으로 바꿉니다(예: service-account1@myproject.iam.gserviceaccount.com).
    gcloud auth login
    gcloud projects add-iam-policy-binding $PROJECT_ID \
       --member="user:your-userid@your-domain" \
       --role="roles/automl.admin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
       --member="serviceAccount:service-account-name" \
       --role="roles/automl.editor"
    
  10. 프로젝트에 EAP 액세스 권한이 부여되었는지 확인합니다.

    데이터세트 생성을 시도하는 등의 방법으로 AutoML API를 호출하여 프로젝트에 권한이 있는지 여부를 확인할 수 있습니다. 권한 오류가 발생하는 경우 Google에 문의하여 프로젝트를 EAP에 추가합니다. API가 사용 설정되지 않았다는 오류와 같은 다른 오류가 발생하는 경우 이 주제의 모든 단계를 검토하고 수행했는지 확인합니다.

데이터세트를 만들고 학습 데이터 가져오기

데이터세트 생성

데이터세트의 이름을 결정하고 다음 curl 명령어를 사용하여 해당 이름의 새 데이터세트를 만듭니다.

curl 명령어는 gcloud auth application-default print-access-token 명령어를 사용하여 이 항목의 이전 단계에서 설정한 서비스 계정의 액세스 토큰을 가져옵니다. 서비스 계정 키 파일의 경로는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수에 저장됩니다.

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

새 데이터세트의 데이터세트 ID가 포함된 응답을 받아야 합니다. 예: VOT4798585402963263488.

{
  "name": "projects/my-project/locations/us-central1/datasets/VOT4798585402963263488",
  "displayName": "my_dataset_01",
  "createTime": "2018-10-18T21:18:13.975412Z",
  "videoObjectTrackingDatasetMetadata": {}
}

학습 데이터 가져오기

샘플 학습 데이터를 데이터세트로 가져옵니다. importData 명령어는 학습 및 테스트 데이터 CSV 파일에 대한 경로가 포함된 CSV에 대한 경로를 입력으로 사용합니다. 이러한 파일은 Google Cloud Storage의 'automl-video-demo-data' 버킷에 제공됩니다.

  • your-dataset-id는 해당 데이터세트의 데이터세트 식별자(표시 이름 아님)로 바꾸세요. 예: VOT4798585402963263488.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id:importData \
-d '{
  "inputConfig": {
    "gcsSource": {
       "inputUris": ["gs://automl-video-datasets/youtube_8m_videos_animal_tiny.csv"]
     }
  }
}'

데이터 가져오기 작업의 작업 ID를 받아야 합니다. 예: VOT7506374678919774208.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:23:15.181451Z",
    "importDataDetails": {}
  }
}

가져오기 작업의 상태 가져오기

다음 curl 명령어를 사용하여 데이터 가져오기 작업의 상태를 쿼리할 수 있습니다.

  • your-operation-id는 데이터 가져오기 작업의 작업 ID로 바꿉니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

가져오기 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다. 가져오기 작업이 완료되면 다음 예에 나와 있는 것처럼 작업 상태에 done: true가 표시되고 오류가 나열되지 않습니다.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

데이터세트 목록 가져오기

데이터세트로 가져온 샘플 동영상 수와 데이터세트의 목록을 다음 명령어를 사용하여 가져올 수 있습니다.

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

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

{
  "datasets": [
    {
      "name": "projects/my-project/locations/us-central1/datasets/VOT3940649673949184000",
      "displayName": "my_dataset_01",
      "createTime": "2018-10-18T21:18:13.975412Z",
      "exampleCount": 5097,
      "videoObjectTrackingDatasetMetadata": {}
    }
  ]
}

모델 학습

모델 학습 작업 시작

데이터세트를 만들고 학습 데이터를 데이터세트로 가져온 후 커스텀 모델을 학습시킬 수 있습니다.

다음 curl 명령어를 사용하여 모델을 학습시키세요.

  • your-dataset-id는 해당 데이터세트의 데이터세트 식별자(표시 이름 아님)로 바꾸세요.

  • your-model-name은 선택한 모델 이름으로 바꾸세요.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https:/automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models -d '{
  "datasetId": "your-dataset-id",
  "displayName": "your-model-name",
  "videoObjectTrackingModelMetadata": {},
}'

데이터 가져오기 작업의 작업 ID를 받아야 합니다. 예: VOT1741767155885539328.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

모델 학습 작업의 상태 가져오기

다음 curl 명령어를 사용하여 모델 학습 작업의 상태를 쿼리할 수 있습니다.

  • your-operation-id는 학습 작업의 작업 ID로 바꾸세요.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

다음과 비슷한 출력이 표시됩니다. 작업이 완료되면 done: true이 표시되고 오류가 나열되지 않습니다.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

모델이 사용 가능한지 확인

모델 학습 작업이 성공적으로 완료되면 프로젝트 모델을 나열하는 다음 명령어를 사용하여 모델을 사용할 수 있는지 확인할 수 있습니다.

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

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

{
  "datasets": [
    {
      "name": "projects/my-project/locations/us-central1/datasets/VOT3940649673949184000",
      "displayName": "my_model_01",
      "createTime": "2018-10-18T21:18:13.975412Z",
      "exampleCount": 5097,
      "videoObjectTrackingDatasetMetadata": {}
    }
  ]
}

예측하기

batchPredict 명령어를 사용하여 동영상에 대한 주석(예측)을 요청할 수 있습니다. batchPredict 명령어는 주석을 추가할 동영상의 경로와 주석을 추가할 동영상의 세그먼트를 식별하는 시작 및 종료 시간이 포함된 Google Cloud Storage 버킷에 저장된 CSV 파일을 입력으로 사용합니다. 이 빠른 시작에서 이 CSV 파일의 이름은 hmdb_split1_train_gs.csv입니다.

다음 명령어를 실행하여 일괄 (비동기) 예측 요청을 수행합니다.

  • your-model-id는 모델 식별자로 바꿉니다.

  • your-output-bucket은 예측 결과가 포함될 Google Cloud Storage 버킷으로 바꿉니다.

  • your-object-id는 Google Cloud Storage 버킷에서 예측 요청 출력을 저장할 위치를 식별하는 객체 이름으로 바꿉니다. Google Cloud Storage 버킷에 대한 쓰기 권한이 있어야 합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id:batchPredict -d '{
  "inputConfig": {
    "gcsSource": {
      "inputUris": ["gs://automl-video-datasets/youtube_8m_videos_animal_batchpredict.csv"]
    }
  },
  "outputConfig": {
    "gcsDestination": {
      "outputUriPrefix": "gs://your-output-bucket/your-object-id"
    }
  }
}'

일괄 예측 요청의 작업 ID를 받아야 합니다. 예: VOT926615623331479552.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-19T21:22:27.003694Z",
    "updateTime": "2018-10-19T21:22:27.003694Z",
    "batchPredictDetails": {
      "inputConfig": {
        "gcsSource": {
          "inputUris": [
            "gs://automl-video-datasets/youtube_8m_videos_animal_batchpredict.csv"
          ]
        }
      },
      "outputInfo": {
        "gcsOutputDirectory": "${YOUR_BUCKET}/prediction-test_model_01-2019-01-11T21:39:19.684Z"
      }
    }
  }
}

예측 작업의 상태 가져오기

다음 curl 명령어를 사용하여 일괄 예측 작업의 상태를 쿼리할 수 있습니다.

  • your-operation-id는 일괄 예측 작업의 작업 ID로 바꿉니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

CSV 파일에서 지정한 동영상의 수에 따라 일괄 예측 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다. 작업이 완료되면 다음 예에 나와 있는 것처럼 작업 상태에 done: true가 표시되고 오류가 나열되지 않습니다.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

일괄 예측 작업이 완료되면 명령어에 지정된 Google Cloud Storage 버킷에 예측 결과가 저장됩니다. 각 동영상 세그먼트에 대한 JSON 파일이 있습니다. 예를 들면 다음과 같습니다.

my-video-01.avi.json

{
  "input_uri": "automl-video-demo-data/sample_video.avi",
  "object_annotations": [ {
    "annotation_spec": {
      "display_name": "Cat",
      "description": "Cat"
    },
    "confidence": 0.43253016
    "frames": [ {
      "frame": {
        "time_offset": {
          "seconds": 4,
          "nanos": 960000000
        },
        "normalized_bounding_box": {
          "x_min": 0.1,
          "y_min": 0.1,
          "x_max": 0.8,
          "y_max": 0.8
        }
      }
    }, {
      "frame": {
        "time_offset": {
          "seconds": 5,
          "nanos": 960000000
        },
        "normalized_bounding_box": {
          "x_min": 0.2,
          "y_min": 0.2,
          "x_max": 0.9,
          "y_max": 0.9
        }
      }
    } ],
    "segment": {
      "start_time_offset": {
          "seconds": 4,
          "nanos": 960000000
      },
      "end_time_offset": {
          "seconds": 5,
          "nanos": 960000000
      }
    }
  } ],
  "error": {
    "details": [ ]
  }
}

삭제

커스텀 모델 및 관련 데이터세트가 더 이상 필요하지 않으면 삭제할 수 있습니다.

모델 나열

다음 명령어를 사용하여 프로젝트의 모델과 식별자를 나열할 수 있습니다.

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

모델 삭제

다음 명령어를 사용하여 모델을 삭제할 수 있습니다.

  • your-model-id는 모델 식별자로 바꿉니다.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id

데이터세트 나열

다음 명령어를 사용하여 프로젝트의 데이터세트와 식별자를 나열할 수 있습니다.

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

데이터세트 삭제

다음 명령어를 사용하여 데이터세트를 삭제할 수 있습니다.

  • your-dataset-id는 모델 식별자로 바꿉니다.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id