프로젝트에 데이터 세트 추가 - Rekognition

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

프로젝트에 데이터 세트 추가

훈련 데이터 세트 또는 테스트 데이터 세트를 기존 프로젝트에 추가할 수 있습니다. 기존 데이터 세트를 바꾸려면 먼저 기존 데이터 세트를 삭제하세요. 자세한 내용은 데이터 세트 삭제 섹션을 참조하세요. 그런 다음 새 데이터 세트를 추가합니다.

프로젝트에 데이터 세트 추가(콘솔)

Amazon Rekognition Custom Labels 콘솔을 사용하여 훈련 또는 테스트 데이터 세트를 프로젝트에 추가할 수 있습니다.

프로젝트에 데이터 세트를 추가하려면
  1. https://console.aws.amazon.com/rekognition/에서 Amazon Rekognition 콘솔을 엽니다.

  2. 왼쪽 창에서 사용자 지정 레이블 사용을 선택합니다. Amazon Rekognition Custom Labels 랜딩 페이지가 표시됩니다.

  3. 왼쪽 탐색 창에서 프로젝트를 선택합니다. 프로젝트 보기가 표시됩니다.

  4. 데이터 세트를 추가할 프로젝트를 선택합니다.

  5. 왼쪽 탐색 창의 프로젝트 이름 아래에서 데이터 세트를 선택합니다.

  6. 프로젝트에 기존 데이터 세트가 없는 경우 데이터 세트 생성 페이지가 표시됩니다. 다음을 수행합니다.

    1. 데이터 세트 생성 페이지에서 이미지 소스 정보를 입력합니다. 자세한 내용은 이미지를 사용하여 훈련 및 테스트 데이터 세트 생성 섹션을 참조하세요.

    2. 데이터 세트 생성을 선택하여 데이터 세트를 생성합니다.

  7. 프로젝트에 기존 데이터 세트(훈련 또는 테스트)가 있는 경우 프로젝트 세부 정보 페이지가 표시됩니다. 다음을 수행합니다.

    1. 프로젝트 세부 정보 페이지에서 작업을 선택합니다.

    2. 훈련 데이터 세트를 추가하려면 훈련 데이터 세트 생성을 선택합니다.

    3. 테스트 데이터 세트를 추가하려면 테스트 데이터 세트 생성을 선택합니다.

    4. 데이터 세트 생성 페이지에서 이미지 소스 정보를 입력합니다. 자세한 내용은 이미지를 사용하여 훈련 및 테스트 데이터 세트 생성 섹션을 참조하세요.

    5. 데이터 세트 생성을 선택하여 데이터 세트를 생성합니다.

  8. 데이터 세트에 이미지를 추가합니다. 자세한 내용은 더 많은 이미지 추가(콘솔) 섹션을 참조하세요.

  9. 데이터 세트에 레이블을 추가합니다. 자세한 내용은 새 레이블 추가(콘솔) 섹션을 참조하세요.

  10. 이미지에 레이블을 추가합니다. 이미지 수준 레이블을 추가하는 경우 이미지에 이미지 수준 레이블 지정 항목을 참조하세요. 경계 상자를 추가하는 경우 경계 상자로 객체에 레이블 지정 항목을 참조하세요. 자세한 내용은 데이터 세트 목적 설정 섹션을 참조하세요.

프로젝트에 데이터 세트 추가(SDK)

다음과 같은 방법으로 기존 프로젝트에 훈련 데이터 또는 테스트 데이터 세트를 추가할 수 있습니다.

주제
    프로젝트(SDK)에 데이터 세트를 추가하려면
    1. 아직 하지 않았다면 AWS CLI 및 AWS SDK를 설치하고 구성하세요. 자세한 내용은 4단계: 설정 AWS CLI 그리고 AWS SDKs 섹션을 참조하세요.

    2. 다음 예제를 사용하여 데이터 세트에 JSON 라인을 추가하세요.

      CLI

      project_arn 항목을 데이터 세트를 추가하려는 프로젝트로 바꿉니다. dataset_type 항목을 TRAIN 항목으로 바꾸어 훈련 데이터 세트를 생성하거나 TEST 항목으로 바꾸어 테스트 데이터 세트를 생성하세요.

      aws rekognition create-dataset --project-arn project_arn \ --dataset-type dataset_type \ --profile custom-labels-access
      Python

      다음 코드를 사용하여 데이터 세트를 생성하세요. 다음 명령줄 옵션을 제공하세요.

      • project_arn: 테스트 데이터 세트를 추가하려는 프로젝트의 ARN입니다.

      • type: 생성하려는 데이터 세트의 유형(훈련 또는 테스트)

      # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 import argparse import logging import time import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def create_empty_dataset(rek_client, project_arn, dataset_type): """ Creates an empty Amazon Rekognition Custom Labels dataset. :param rek_client: The Amazon Rekognition Custom Labels Boto3 client. :param project_arn: The ARN of the project in which you want to create a dataset. :param dataset_type: The type of the dataset that you want to create (train or test). """ try: #Create the dataset. logger.info("Creating empty %s dataset for project %s", dataset_type, project_arn) dataset_type=dataset_type.upper() response = rek_client.create_dataset( ProjectArn=project_arn, DatasetType=dataset_type ) dataset_arn=response['DatasetArn'] logger.info("dataset ARN: %s", dataset_arn) finished=False while finished is False: dataset=rek_client.describe_dataset(DatasetArn=dataset_arn) status=dataset['DatasetDescription']['Status'] if status == "CREATE_IN_PROGRESS": logger.info(("Creating dataset: %s ", dataset_arn)) time.sleep(5) continue if status == "CREATE_COMPLETE": logger.info("Dataset created: %s", dataset_arn) finished=True continue if status == "CREATE_FAILED": error_message = f"Dataset creation failed: {status} : {dataset_arn}" logger.exception(error_message) raise Exception(error_message) error_message = f"Failed. Unexpected state for dataset creation: {status} : {dataset_arn}" logger.exception(error_message) raise Exception(error_message) return dataset_arn except ClientError as err: logger.exception("Couldn't create dataset: %s", err.response['Error']['Message']) raise def add_arguments(parser): """ Adds command line arguments to the parser. :param parser: The command line parser. """ parser.add_argument( "project_arn", help="The ARN of the project in which you want to create the empty dataset." ) parser.add_argument( "dataset_type", help="The type of the empty dataset that you want to create (train or test)." ) def main(): logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") try: # Get command line arguments. parser = argparse.ArgumentParser(usage=argparse.SUPPRESS) add_arguments(parser) args = parser.parse_args() print(f"Creating empty {args.dataset_type} dataset for project {args.project_arn}") # Create the empty dataset. session = boto3.Session(profile_name='custom-labels-access') rekognition_client = session.client("rekognition") dataset_arn=create_empty_dataset(rekognition_client, args.project_arn, args.dataset_type.lower()) print(f"Finished creating empty dataset: {dataset_arn}") except ClientError as err: logger.exception("Problem creating empty dataset: %s", err) print(f"Problem creating empty dataset: {err}") except Exception as err: logger.exception("Problem creating empty dataset: %s", err) print(f"Problem creating empty dataset: {err}") if __name__ == "__main__": main()
      Java V2

      다음 코드를 사용하여 데이터 세트를 생성하세요. 다음 명령줄 옵션을 제공하세요.

      • project_arn: 테스트 데이터 세트를 추가하려는 프로젝트의 ARN입니다.

      • type: 생성하려는 데이터 세트의 유형(훈련 또는 테스트)

      /* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ package com.example.rekognition; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest; import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse; import software.amazon.awssdk.services.rekognition.model.DatasetDescription; import software.amazon.awssdk.services.rekognition.model.DatasetStatus; import software.amazon.awssdk.services.rekognition.model.DatasetType; import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest; import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; public class CreateEmptyDataset { public static final Logger logger = Logger.getLogger(CreateEmptyDataset.class.getName()); public static String createMyEmptyDataset(RekognitionClient rekClient, String projectArn, String datasetType) throws Exception, RekognitionException { try { logger.log(Level.INFO, "Creating empty {0} dataset for project : {1}", new Object[] { datasetType.toString(), projectArn }); DatasetType requestDatasetType = null; switch (datasetType) { case "train": requestDatasetType = DatasetType.TRAIN; break; case "test": requestDatasetType = DatasetType.TEST; break; default: logger.log(Level.SEVERE, "Unrecognized dataset type: {0}", datasetType); throw new Exception("Unrecognized dataset type: " + datasetType); } CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn) .datasetType(requestDatasetType).build(); CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest); boolean created = false; //Wait until updates finishes do { DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder() .datasetArn(response.datasetArn()).build(); DescribeDatasetResponse describeDatasetResponse = rekClient.describeDataset(describeDatasetRequest); DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription(); DatasetStatus status = datasetDescription.status(); logger.log(Level.INFO, "Creating dataset ARN: {0} ", response.datasetArn()); switch (status) { case CREATE_COMPLETE: logger.log(Level.INFO, "Dataset created"); created = true; break; case CREATE_IN_PROGRESS: Thread.sleep(5000); break; case CREATE_FAILED: String error = "Dataset creation failed: " + datasetDescription.statusAsString() + " " + datasetDescription.statusMessage() + " " + response.datasetArn(); logger.log(Level.SEVERE, error); throw new Exception(error); default: String unexpectedError = "Unexpected creation state: " + datasetDescription.statusAsString() + " " + datasetDescription.statusMessage() + " " + response.datasetArn(); logger.log(Level.SEVERE, unexpectedError); throw new Exception(unexpectedError); } } while (created == false); return response.datasetArn(); } catch (RekognitionException e) { logger.log(Level.SEVERE, "Could not create dataset: {0}", e.getMessage()); throw e; } } public static void main(String args[]) { String datasetType = null; String datasetArn = null; String projectArn = null; final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type>\n\n" + "Where:\n" + " project_arn - the ARN of the project that you want to add copy the datast to.\n\n" + " dataset_type - the type of the empty dataset that you want to create (train or test).\n\n"; if (args.length != 2) { System.out.println(USAGE); System.exit(1); } projectArn = args[0]; datasetType = args[1]; try { // Get the Rekognition client RekognitionClient rekClient = RekognitionClient.builder() .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access")) .region(Region.US_WEST_2) .build(); // Create the dataset datasetArn = createMyEmptyDataset(rekClient, projectArn, datasetType); System.out.println(String.format("Created dataset: %s", datasetArn)); rekClient.close(); } catch (RekognitionException rekError) { logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage()); System.exit(1); } catch (Exception rekError) { logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage()); System.exit(1); } } }
    3. 데이터 세트에 이미지 추가 자세한 내용은 더 많은 이미지 추가(SDK) 섹션을 참조하세요.