모델 학습 - Amazon Lookout for Vision

지원 종료 알림: 2025 AWS 년 10월 31일에 는 Amazon Lookout for Vision에 대한 지원을 중단할 예정입니다. 2025년 10월 31일 이후에는 Lookout for Vision 콘솔 또는 Lookout for Vision 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 이 블로그 게시물을 참조하세요.

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

모델 학습

데이터세트를 만들고 이미지에 레이블을 지정한 후 모델을 학습시킬 수 있습니다. 학습 프로세스의 일환으로 테스트 데이터세트가 사용됩니다. 단일 데이터 세트 프로젝트가 있는 경우 훈련 프로세스의 일환으로 데이터세트의 이미지가 테스트 데이터세트와 훈련 데이터 세트로 자동 분할됩니다. 프로젝트에 훈련 데이터 세트와 테스트 데이터 세트가 있는 경우 이를 사용하여 데이터 세트를 별도로 훈련하고 테스트합니다.

학습이 완료되면 모델의 성능을 평가하고 필요한 부분을 개선할 수 있습니다. 자세한 내용은 Amazon Lookout for Vision 모델 개선 단원을 참조하십시오.

모델을 학습시키기 위해 Amazon Lookout for Vision은 소스 교육 및 테스트 이미지의 사본을 만듭니다. 기본적으로 복사된 이미지는 AWS 소유 및 관리하는 키로 암호화됩니다. 자체 AWS 키 관리 서비스(KMS) 키를 사용하도록 선택할 수도 있습니다. 자세한 내용은 AWS Key Management Service 개념 을 참조하세요. 소스 이미지는 영향을 받지 않습니다.

리소스에 태그 형태로 메타데이터를 지정할 수 있습니다. 자세한 내용은 모델 태깅 단원을 참조하십시오.

모델을 학습시킬 때마다 모델의 새 버전이 생성됩니다. 모델의 버전이 더 이상 필요하지 않으면 삭제할 수 있습니다. 자세한 내용은 모델 삭제 단원을 참조하십시오.

모델을 성공적으로 훈련하는 데 걸리는 시간만큼 요금이 부과됩니다. 자세한 정보는 훈련 시간 섹션을 참조하세요.

프로젝트의 기존 모델을 보려면모델 보기.

참고

방금 데이터 세트를 생성합니다. 데이터 세트에 이미지 추가 완료했거나 현재 콘솔에 모델 대시보드가 표시되므로 1~4단계를 수행할 필요가 없습니다.

모델 교육 (콘솔)

다음 절차에서는 콘솔을 사용하여 모델을 학습하는 방법을 보여 줍니다.

모델 학습하기 (콘솔)
  1. 에서 Amazon Lookout for Vision 콘솔을 https://console.aws.amazon.com/lookoutvision/엽니다.

  2. 왼쪽 탐색 창에서 프로젝트를 선택합니다.

  3. 프로젝트 페이지에서 학습시키려는 모델이 포함된 프로젝트를 선택합니다.

  4. 프로젝트 세부 정보 페이지에서 모델 학습을 선택합니다. 모델 학습에 필요한 레이블이 지정된 이미지가 충분하면 모델 학습 버튼을 사용할 수 있습니다. 버튼을 사용할 수 없는 경우 레이블이 지정된 이미지가 충분히 나올 때까지 이미지를 더 추가하세요.

  5. (선택 사항) 자체 AWS KMS 암호화 키를 사용하려면 다음을 수행합니다.

    1. 이미지 데이터 암호화에서 암호화 설정 사용자 지정 (고급)을 선택합니다.

    2. encryption.aws_kms_key에서 키의 Amazon 리소스 이름(ARN)을 입력하거나 기존 AWS KMS 키를 선택합니다. 새 키를 생성하려면 AWS IMS 키 생성을 선택합니다.

  6. (선택 사항) 태그를 모델에 추가하려면 다음을 수행합니다.

    1. 태그 항목에서 새로운 태그 추가를 선택합니다.

    2. 다음을 입력합니다.

      1. 에 있는 키의 이름.

      2. 에 있는 키의 값

    3. 태그를 더 추가하려면 6a단계와 6b단계를 반복합니다.

    4. (선택 사항) 태그를 제거하려면 제거할 태그 옆의 제거를 선택합니다. 이전에 저장한 태그를 제거하는 경우 변경 내용을 저장하면 해당 태그가 제거됩니다.

  7. 모델 학습을 선택합니다.

  8. 모델을 훈련하고 싶으신가요? 대화 상자에서 모델 훈련을 선택합니다.

  9. 모델 보기에서 학습이 시작된 것을 확인할 수 있으며 모델 버전의 Status 열을 보면 현재 상태를 확인할 수 있습니다. 모델 훈련은 완료하는 데 다소 시간이 걸립니다.

  10. 학습이 끝나면 성능을 평가할 수 있습니다. 자세한 내용은 Amazon Lookout for Vision 모델 개선 단원을 참조하십시오.

모델 훈련(SDK)

CreateModel 작업을 사용하여 모델의 훈련, 테스트 및 평가를 시작합니다. Amazon Lookout for Vision은 프로젝트와 관련된 교육 및 테스트 데이터 세트를 사용하여 모델을 학습합니다. 자세한 내용은 프로젝트 생성(SDK) 단원을 참조하십시오.

CreateModel을 호출할 때마다 모델의 새 버전이 생성됩니다. CreateModel의 응답에는 모델 버전이 포함됩니다.

모델 훈련을 성공적으로 완료할 때 비용이 청구됩니다. ClientToken 입력 파라미터를 사용하면 사용자의 불필요하거나 우발적인 모델 훈련 반복으로 인한 요금을 방지할 수 있습니다. ClientToken는 특정 파라미터 세트에 대해 CreateModel 가 한 번만 완료되도록 하는 이기적인 입력 파라미터입니다. ClientToken 값이 동일한 CreateModel에 대한 반복 호출은 훈련이 반복되지 않도록 합니다. 에 값을 제공하지 않으면 사용 AWS SDK 중인 ClientToken가 값을 삽입합니다. 이렇게 하면 네트워크 오류가 발생한 후 재시도하여 여러 교육 작업을 시작하지 못하게 되지만, 사용 사례에 맞게 값을 직접 입력해야 합니다. 자세한 내용은 CreateModel를 참조하세요.

학습을 완료하는 데 시간이 좀 걸립니다. 현재 상태를 확인하려면 DescribeModel을 호출하고 (호출에서 CreateProject로 지정) 프로젝트 이름과 모델 버전을 전달하십시오. status필드는 모델 학습의 현재 상태를 나타냅니다. 예제 코드는 모델 보기 (SDK) 항목을 참조하세요.

학습이 성공적이면 모델을 평가할 수 있습니다. 자세한 내용은 Amazon Lookout for Vision 모델 개선 단원을 참조하십시오.

프로젝트에서 만든 모델을 보려면 ListModels를 호출하십시오. 예제 코드는 모델 보기 항목을 참조하세요.

모델을 훈련하려면(SDK)
  1. 아직 설치하지 않은 경우 및 AWS CLI 를 설치하고 구성합니다 AWS SDKs. 자세한 내용은 4단계: 설정 AWS CLI 그리고 AWS SDKs 단원을 참조하십시오.

  2. 다음 예제 코드를 사용하여 모델을 학습시키십시오.

    CLI

    다음 값을 변경합니다.

    • project-name은 생성하려는 모델이 포함된 프로젝트 이름입니다.

    • output-config은 학습 결과를 저장하려는 위치입니다. 다음 값을 교체합니다.

      • output bucket은 Amazon Lookout for Vision이 훈련 결과를 저장하는 Amazon S3 버킷의 이름으로 표시됩니다.

      • output folder은 학습 결과를 저장할 폴더의 이름과 함께 표시됩니다.

      • Key은 태그의 키 이름입니다.

      • Valuetag_key와 연관시킨 값입니다.

    aws lookoutvision create-model --project-name "project name"\ --output-config '{ "S3Location": { "Bucket": "output bucket", "Prefix": "output folder" } }'\ --tags '[{"Key":"Key","Value":"Value"}]' \ --profile lookoutvision-access
    Python

    이 코드는 AWS 설명서 SDK 예제 GitHub 리포지토리에서 가져옵니다. 전체 예제는 여기에서 확인하세요.

    @staticmethod def create_model( lookoutvision_client, project_name, training_results, tag_key=None, tag_key_value=None, ): """ Creates a version of a Lookout for Vision model. :param lookoutvision_client: A Boto3 Lookout for Vision client. :param project_name: The name of the project in which you want to create a model. :param training_results: The Amazon S3 location where training results are stored. :param tag_key: The key for a tag to add to the model. :param tag_key_value - A value associated with the tag_key. return: The model status and version. """ try: logger.info("Training model...") output_bucket, output_folder = training_results.replace("s3://", "").split( "/", 1 ) output_config = { "S3Location": {"Bucket": output_bucket, "Prefix": output_folder} } tags = [] if tag_key is not None: tags = [{"Key": tag_key, "Value": tag_key_value}] response = lookoutvision_client.create_model( ProjectName=project_name, OutputConfig=output_config, Tags=tags ) logger.info("ARN: %s", response["ModelMetadata"]["ModelArn"]) logger.info("Version: %s", response["ModelMetadata"]["ModelVersion"]) logger.info("Started training...") print("Training started. Training might take several hours to complete.") # Wait until training completes. finished = False status = "UNKNOWN" while finished is False: model_description = lookoutvision_client.describe_model( ProjectName=project_name, ModelVersion=response["ModelMetadata"]["ModelVersion"], ) status = model_description["ModelDescription"]["Status"] if status == "TRAINING": logger.info("Model training in progress...") time.sleep(600) continue if status == "TRAINED": logger.info("Model was successfully trained.") else: logger.info( "Model training failed: %s ", model_description["ModelDescription"]["StatusMessage"], ) finished = True except ClientError: logger.exception("Couldn't train model.") raise else: return status, response["ModelMetadata"]["ModelVersion"]
    Java V2

    이 코드는 AWS 설명서 SDK 예제 GitHub 리포지토리에서 가져옵니다. 전체 예제는 여기에서 확인하세요.

    /** * Creates an Amazon Lookout for Vision model. The function returns after model * training completes. Model training can take multiple hours to complete. * You are charged for the amount of time it takes to successfully train a model. * Returns after Lookout for Vision creates the dataset. * * @param lfvClient An Amazon Lookout for Vision client. * @param projectName The name of the project in which you want to create a * model. * @param description A description for the model. * @param bucket The S3 bucket in which Lookout for Vision stores the * training results. * @param folder The location of the training results within the S3 * bucket. * @return ModelDescription The description of the created model. */ public static ModelDescription createModel(LookoutVisionClient lfvClient, String projectName, String description, String bucket, String folder) throws LookoutVisionException, InterruptedException { logger.log(Level.INFO, "Creating model for project: {0}.", new Object[] { projectName }); // Setup input parameters. S3Location s3Location = S3Location.builder() .bucket(bucket) .prefix(folder) .build(); OutputConfig config = OutputConfig.builder() .s3Location(s3Location) .build(); CreateModelRequest createModelRequest = CreateModelRequest.builder() .projectName(projectName) .description(description) .outputConfig(config) .build(); // Create and train the model. CreateModelResponse response = lfvClient.createModel(createModelRequest); String modelVersion = response.modelMetadata().modelVersion(); boolean finished = false; DescribeModelResponse descriptionResponse = null; // Wait until training finishes or fails. do { DescribeModelRequest describeModelRequest = DescribeModelRequest.builder() .projectName(projectName) .modelVersion(modelVersion) .build(); descriptionResponse = lfvClient.describeModel(describeModelRequest); switch (descriptionResponse.modelDescription().status()) { case TRAINED: logger.log(Level.INFO, "Model training completed for project {0} version {1}.", new Object[] { projectName, modelVersion }); finished = true; break; case TRAINING: logger.log(Level.INFO, "Model training in progress for project {0} version {1}.", new Object[] { projectName, modelVersion }); TimeUnit.SECONDS.sleep(60); break; case TRAINING_FAILED: logger.log(Level.SEVERE, "Model training failed for for project {0} version {1}.", new Object[] { projectName, modelVersion }); finished = true; break; default: logger.log(Level.SEVERE, "Unexpected error when training model project {0} version {1}: {2}.", new Object[] { projectName, modelVersion, descriptionResponse.modelDescription() .status() }); finished = true; break; } } while (!finished); return descriptionResponse.modelDescription(); }
  3. 학습이 끝나면 성능을 평가할 수 있습니다. 자세한 내용은 Amazon Lookout for Vision 모델 개선 단원을 참조하십시오.