데이터 세트에 이미지 추가 - Amazon Lookout for Vision

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

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

데이터 세트에 이미지 추가

데이터 세트를 생성한 후 데이터 세트에 이미지를 더 추가할 수 있습니다. 예를 들어 모델 평가 결과가 좋지 않은 것으로 확인되면 이미지를 더 추가하여 모델의 품질을 개선할 수 있습니다. 테스트 데이터 세트를 만든 경우 이미지를 더 추가하면 모델 성능 지표의 정확도를 높일 수 있습니다.

데이터 세트를 업데이트한 후 모델을 재학습하세요.

더 많은 이미지 추가

로컬 컴퓨터에서 이미지를 업로드하여 데이터 세트에 이미지를 더 추가할 수 있습니다. 에 레이블이 지정된 이미지를 더 추가하려면 UpdateDatasetEntries 작업을 SDK사용합니다.

데이터 세트에 이미지를 더 추가하려면 (콘솔)
  1. 작업을 선택하고 이미지를 추가할 데이터 세트를 선택합니다.

  2. 데이터 세트에 업로드할 이미지를 선택합니다. 로컬 컴퓨터에서 업로드할 이미지를 선택하거나 드래그할 수 있습니다. 한 번에 최대 30개의 이미지를 업로드할 수 있습니다.

  3. 이미지 업로드를 선택합니다.

  4. 변경 사항 저장을 선택합니다.

이미지를 더 추가했으면 모델을 학습시키는 데 사용할 수 있도록 이미지에 레이블을 지정해야 합니다. 자세한 내용은 이미지 분류 (콘솔) 단원을 참조하십시오.

이미지 추가(SDK)

에 레이블이 지정된 이미지를 더 추가하려면 UpdateDatasetEntries 작업을 SDK사용합니다. 추가하려는 이미지가 포함된 매니페스트 파일을 제공합니다. 매니페스트 파일의 source-ref JSON 줄 필드에 이미지를 지정하여 기존 이미지를 업데이트할 수도 있습니다. 자세한 내용은 매니페스트 파일 만들기 단원을 참조하십시오.

데이터 세트에 이미지를 더 추가하려면(SDK)
  1. 아직 설치하지 않은 경우 및 AWS CLI 를 설치하고 구성합니다 AWS SDKs. 자세한 내용은 4단계: AWS CLI 및 설정 AWS SDKs 단원을 참조하십시오.

  2. 다음 예제 코드를 사용하여 데이터 세트에 이미지를 더 추가하세요.

    CLI

    다음 값을 변경합니다.

    • project-name은 업데이트하려는 데이터 세트가 포함된 프로젝트 이름으로 변경합니다.

    • dataset-type은 업데이트하려는 데이터 세트 유형 (train또는test)으로 변경합니다.

    • changes은 데이터 세트가 포함된 매니페스트 파일이 업데이트되는 위치로 변경합니다.

    aws lookoutvision update-dataset-entries\ --project-name project\ --dataset-type train or test\ --changes fileb://manifest file \ --profile lookoutvision-access
    Python

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

    @staticmethod def update_dataset_entries(lookoutvision_client, project_name, dataset_type, updates_file): """ Adds dataset entries to an Amazon Lookout for Vision dataset. :param lookoutvision_client: The Amazon Rekognition Custom Labels Boto3 client. :param project_name: The project that contains the dataset that you want to update. :param dataset_type: The type of the dataset that you want to update (train or test). :param updates_file: The manifest file of JSON Lines that contains the updates. """ try: status = "" status_message = "" manifest_file = "" # Update dataset entries logger.info(f"""Updating {dataset_type} dataset for project {project_name} with entries from {updates_file}.""") with open(updates_file) as f: manifest_file = f.read() lookoutvision_client.update_dataset_entries( ProjectName=project_name, DatasetType=dataset_type, Changes=manifest_file, ) finished = False while finished == False: dataset = lookoutvision_client.describe_dataset(ProjectName=project_name, DatasetType=dataset_type) status = dataset['DatasetDescription']['Status'] status_message = dataset['DatasetDescription']['StatusMessage'] if status == "UPDATE_IN_PROGRESS": logger.info( (f"Updating {dataset_type} dataset for project {project_name}.")) time.sleep(5) continue if status == "UPDATE_FAILED_ROLLBACK_IN_PROGRESS": logger.info( (f"Update failed, rolling back {dataset_type} dataset for project {project_name}.")) time.sleep(5) continue if status == "UPDATE_COMPLETE": logger.info( f"Dataset updated: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") finished = True continue if status == "UPDATE_FAILED_ROLLBACK_COMPLETE": logger.info( f"Rollback complated after update failure: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") finished = True continue logger.exception( f"Failed. Unexpected state for dataset update: {status} : {status_message} : {dataset_type} dataset for project {project_name}.") raise Exception( f"Failed. Unexpected state for dataset update: {status} : {status_message} :{dataset_type} dataset for project {project_name}.") logger.info(f"Added entries to dataset.") return status, status_message except ClientError as err: logger.exception( f"Couldn't update dataset: {err.response['Error']['Message']}") raise
    Java V2

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

    /** * Updates an Amazon Lookout for Vision dataset from a manifest file. * Returns after Lookout for Vision updates the dataset. * * @param lfvClient An Amazon Lookout for Vision client. * @param projectName The name of the project in which you want to update a * dataset. * @param datasetType The type of the dataset that you want to update (train or * test). * @param manifestFile The name and location of a local manifest file that you want to * use to update the dataset. * @return DatasetStatus The status of the updated dataset. */ public static DatasetStatus updateDatasetEntries(LookoutVisionClient lfvClient, String projectName, String datasetType, String updateFile) throws FileNotFoundException, LookoutVisionException, InterruptedException { logger.log(Level.INFO, "Updating {0} dataset for project {1}", new Object[] { datasetType, projectName }); InputStream sourceStream = new FileInputStream(updateFile); SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream); UpdateDatasetEntriesRequest updateDatasetEntriesRequest = UpdateDatasetEntriesRequest.builder() .projectName(projectName) .datasetType(datasetType) .changes(sourceBytes) .build(); lfvClient.updateDatasetEntries(updateDatasetEntriesRequest); boolean finished = false; DatasetStatus status = null; // Wait until update completes. do { DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder() .projectName(projectName) .datasetType(datasetType) .build(); DescribeDatasetResponse describeDatasetResponse = lfvClient .describeDataset(describeDatasetRequest); DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription(); status = datasetDescription.status(); switch (status) { case UPDATE_COMPLETE: logger.log(Level.INFO, "{0} Dataset updated for project {1}.", new Object[] { datasetType, projectName }); finished = true; break; case UPDATE_IN_PROGRESS: logger.log(Level.INFO, "{0} Dataset update for project {1} in progress.", new Object[] { datasetType, projectName }); TimeUnit.SECONDS.sleep(5); break; case UPDATE_FAILED_ROLLBACK_IN_PROGRESS: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Rolling back", new Object[] { datasetType, projectName }); TimeUnit.SECONDS.sleep(5); break; case UPDATE_FAILED_ROLLBACK_COMPLETE: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Rollback completed.", new Object[] { datasetType, projectName }); finished = true; break; default: logger.log(Level.SEVERE, "{0} Dataset update failed for project {1}. Unexpected error returned.", new Object[] { datasetType, projectName }); finished = true; } } while (!finished); return status; }
  3. 이전 단계를 반복하고 다른 데이터 세트 유형의 값을 제공합니다.