지원 종료 공지: 2025 AWS 년 10월 31일에는 Amazon Lookout for Vision에 대한 지원을 중단할 예정입니다. 2025년 10월 31일 이후에는 Lookout for Vision 콘솔 또는 Lookout for Vision 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은이 블로그 게시물을 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 세트에 이미지 추가
데이터 세트를 생성한 후 데이터 세트에 이미지를 더 추가할 수 있습니다. 예를 들어 모델 평가 결과가 좋지 않은 것으로 확인되면 이미지를 더 추가하여 모델의 품질을 개선할 수 있습니다. 테스트 데이터 세트를 만든 경우 이미지를 더 추가하면 모델 성능 지표의 정확도를 높일 수 있습니다.
데이터 세트를 업데이트한 후 모델을 재학습하세요.
더 많은 이미지 추가
로컬 컴퓨터에서 이미지를 업로드하여 데이터 세트에 이미지를 더 추가할 수 있습니다. 에 레이블이 지정된 이미지를 더 추가하려면 UpdateDatasetEntries 작업을 SDK사용합니다.
데이터 세트에 이미지를 더 추가하려면 (콘솔)
-
작업을 선택하고 이미지를 추가할 데이터 세트를 선택합니다.
-
데이터 세트에 업로드할 이미지를 선택합니다. 로컬 컴퓨터에서 업로드할 이미지를 선택하거나 드래그할 수 있습니다. 한 번에 최대 30개의 이미지를 업로드할 수 있습니다.
-
이미지 업로드를 선택합니다.
-
변경 사항 저장을 선택합니다.
이미지를 더 추가했으면 모델을 학습시키는 데 사용할 수 있도록 이미지에 레이블을 지정해야 합니다. 자세한 내용은 이미지 분류 (콘솔) 단원을 참조하십시오.
이미지 추가(SDK)
에 레이블이 지정된 이미지를 더 추가하려면 UpdateDatasetEntries 작업을 SDK사용합니다. 추가하려는 이미지가 포함된 매니페스트 파일을 제공합니다. 매니페스트 파일의 source-ref
JSON 줄 필드에 이미지를 지정하여 기존 이미지를 업데이트할 수도 있습니다. 자세한 내용은 매니페스트 파일 만들기 단원을 참조하십시오.
데이터 세트에 이미지를 더 추가하려면(SDK)
-
아직 설치하지 않은 경우 및 AWS CLI 를 설치하고 구성합니다 AWS SDKs. 자세한 내용은 4단계: AWS CLI 및 설정 AWS SDKs 단원을 참조하십시오.
-
다음 예제 코드를 사용하여 데이터 세트에 이미지를 더 추가하세요.
- 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;
}
-
이전 단계를 반복하고 다른 데이터 세트 유형의 값을 제공합니다.