

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

# 훈련 및 테스트 데이터 세트 생성
<a name="creating-datasets"></a>



데이터 세트는 해당 이미지를 설명하는 이미지와 레이블의 집합입니다. 프로젝트에는 훈련 데이터 세트와 테스트 데이터 세트가 필요합니다. Amazon Rekognition Custom Labels는 훈련 데이터 세트를 사용하여 모델을 훈련합니다. Amazon Rekognition Custom Labels는 교육 후 테스트 데이터 세트를 사용하여 훈련된 모델이 올바른 레이블을 얼마나 잘 예측하는지 확인합니다.

Amazon Rekognition Custom Labels 콘솔 또는 AWS SDK를 사용하여 데이터 세트를 생성할 수 있습니다. 데이터 세트를 생성하기 전에 [Amazon Rekognition Custom Labels의 이해](understanding-custom-labels.md) 항목을 먼저 읽어보는 것이 좋습니다. 다른 데이터 세트 작업에 대해서는 [데이터 세트 관리](managing-dataset.md) 항목을 참조하세요.

프로젝트의 훈련 및 테스트 데이터 세트를 만드는 단계는 다음과 같습니다.

**프로젝트를 위한 훈련 및 테스트 데이터 세트를 만들려면**

1. 훈련 및 테스트 데이터 세트에 레이블을 지정하는 방법을 결정하세요. 자세한 내용은 [데이터 세트 목적 설정](md-dataset-purpose.md) 항목을 참조하세요.

1. 훈련 및 테스트 데이터 세트에 사용할 이미지를 수집하세요. 자세한 내용은 [이미지 준비](md-prepare-images.md) 단원을 참조하십시오.

1. 훈련 및 테스트 데이터 세트를 만드세요. 자세한 내용은 [이미지를 사용하여 훈련 및 테스트 데이터 세트 생성](md-create-dataset.md) 단원을 참조하십시오. AWS SDK를 사용하는 경우 섹션을 참조하세요[훈련 및 테스트 데이터 세트 생성(SDK)](md-create-dataset.md#cd-create-dataset-sdk).

1. 필요한 경우 데이터 세트 이미지에 이미지 수준 레이블 또는 경계 상자를 추가하세요. 자세한 내용은 [이미지 레이블 지정](md-labeling-images.md) 단원을 참조하십시오.

데이터 세트를 만든 후 모델을 [훈련할](training-model.md) 수 있습니다.

**Topics**
+ [데이터 세트 목적 설정](md-dataset-purpose.md)
+ [이미지 준비](md-prepare-images.md)
+ [이미지를 사용하여 훈련 및 테스트 데이터 세트 생성](md-create-dataset.md)
+ [이미지 레이블 지정](md-labeling-images.md)
+ [데이터 세트 디버깅](debugging-datasets.md)

# 데이터 세트 목적 설정
<a name="md-dataset-purpose"></a>

프로젝트의 훈련 및 테스트 데이터 세트에 레이블을 지정하는 방법에 따라 생성되는 모델의 유형이 결정됩니다. Amazon Rekognition Custom Labels를 사용하면 다음을 수행하는 모델을 생성할 수 있습니다.
+ [객체, 장면 및 개념 찾기](#md-dataset-purpose-classification)
+ [객체 위치 찾기](#md-dataset-purpose-localization)
+ [브랜드 위치 찾기](#md-dataset-purpose-brands)

## 객체, 장면 및 개념 찾기
<a name="md-dataset-purpose-classification"></a>

모델은 전체 이미지와 관련된 객체, 장면, 개념을 분류합니다.

이미지 분류**와 다중 레이블 분류**라는 두 가지 유형의 분류 모델을 만들 수 있습니다. 두 가지 유형의 분류 모델 모두에 대해 모델은 훈련에 사용된 전체 레이블 집합에서 일치하는 레이블을 하나 이상 찾습니다. 훈련 데이터 세트와 테스트 데이터 세트에는 둘 이상의 레이블이 필요합니다.

### 이미지 분류
<a name="md-dataset-image-classification"></a>

 

모델은 이미지를 미리 정의된 레이블 세트에 속하는 것으로 분류합니다. 예를 들어, 이미지에 거실이 포함되어 있는지 확인하는 모델이 필요할 수 있습니다. 다음 이미지에는 living\$1space** 이미지 수준 레이블이 있을 수 있습니다.

![\[대형 창문을 통해 뒷마당 안뜰이 보이고 벽난로가 있는 아늑한 거실입니다. 뉴트럴 톤, 우드 액센트입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/living_space1.jpeg)


이 유형의 모델에는 훈련 및 테스트 데이터 세트 이미지 각각에 하나의 이미지 수준 레이블을 추가하세요. 예제 프로젝트에 관해서는 [이미지 분류](getting-started.md#gs-image-classification-example) 항목을 참조하세요.

### 다중 레이블 분류
<a name="md-dataset-image-classification-multi-label"></a>

모델은 이미지를 여러 카테고리(예: 꽃 종류, 잎 유무)로 분류합니다. 예를 들어, 다음 이미지에는 mediterranean\$1spurge** 및 no\$1leaves** 이미지 레벨 레이블이 있을 수 있습니다.

![\[촘촘하게 채워진 작은 꽃들이 있는 녹색 비브리움 꽃송이의 클로즈업입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/mediterranean_spurge3.jpg)


이 유형의 모델에는 각 범주의 이미지 수준 레이블을 훈련 및 테스트 데이터 세트 이미지에 할당하세요. 예제 프로젝트에 관해서는 [다중 레이블 이미지 분류](getting-started.md#gs-multi-label-image-classification-example) 항목을 참조하세요.

### 이미지 수준 레이블 지정
<a name="w2aac20c17c21b7c11"></a>

이미지가 Amazon S3 버킷에 저장되어 있는 경우 [폴더 이름](md-create-dataset-s3.md)을 사용하여 이미지 수준 레이블을 자동으로 추가할 수 있습니다. 자세한 내용은 [Amazon S3 버킷에서 이미지 가져오기](md-create-dataset-s3.md) 단원을 참조하십시오. 데이터 세트를 생성한 후 이미지에 이미지 수준 레이블을 추가할 수도 있습니다. 자세한 내용은 [이미지에 이미지 수준 레이블 지정](md-assign-image-level-labels.md) 섹션을 참조하세요. 필요에 따라 새 레이블을 추가할 수 있습니다. 자세한 내용은 [레이블 관리](md-labels.md) 단원을 참조하십시오.

## 객체 위치 찾기
<a name="md-dataset-purpose-localization"></a>

이미지에서 객체의 위치를 예측하는 모델을 만들려면 훈련 및 테스트 데이터 세트의 이미지에 대한 객체 위치 경계 상자와 레이블을 정의하세요. 경계 상자는 객체를 꾹 둘러싸는 상자입니다. 예를 들어 다음 이미지는 Amazon Echo 및 Amazon Echo Dot 주위의 경계 상자를 보여줍니다. 각 경계 상자에는 지정된 레이블(Amazon Echo** 또는 Amazon Echo Dot**)이 있습니다.

![\[목재 표면 위에 있는 두 개의 Amazon 스마트 스피커로, 각각 녹색 경계 상자와 파란색 경계 상자가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/echos.png)


객체 위치를 찾으려면 데이터 세트에 레이블이 하나 이상 있어야 합니다. 모델 훈련 중에 이미지의 경계 상자 외부 영역을 나타내는 추가 레이블이 자동으로 생성됩니다.

### 경계 상자 지정
<a name="w2aac20c17c21b9b9"></a>

 데이터 세트를 만들 때 이미지에 경계 상자 정보를 포함할 수 있습니다. 예를 들어 경계 상자가 포함된 SageMaker AI Ground Truth 형식 [매니페스트 파일을](md-create-manifest-file.md) 가져올 수 있습니다. 데이터 세트를 만든 후 경계 상자를 추가할 수도 있습니다. 자세한 내용은 [경계 상자로 객체에 레이블 지정](md-localize-objects.md) 단원을 참조하십시오. 필요에 따라 새 레이블을 추가할 수 있습니다. 자세한 내용은 [레이블 관리](md-labels.md) 단원을 참조하십시오.

## 브랜드 위치 찾기
<a name="md-dataset-purpose-brands"></a>

로고 및 애니메이션 캐릭터 같은 브랜드 위치를 찾으려 한다면 훈련 데이터 세트 이미지에 두 가지 유형의 이미지를 사용할 수 있습니다.
+  로고만 포함된 이미지 각 이미지에는 로고 이름을 나타내는 하나의 이미지 수준 레이블이 필요합니다. 예를 들어, 다음 이미지의 이미지 수준 레이블은 Lambda**일 수 있습니다.  
![\[주황색 바탕의 흰색 Lambda 로고입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/lambda-logo.jpg)
+ 축구 경기나 건축 도표와 같은 전형적인 위치에 로고가 포함된 이미지 각 훈련 이미지에는 로고의 각 인스턴스를 둘러싸는 경계 상자가 필요합니다. 예를 들어 다음 이미지는 AWS Lambda 및 Amazon Pinpoint 로고를 둘러싸는 레이블이 지정된 경계 상자가 있는 아키텍처 다이어그램을 보여줍니다.  
![\[권장 사항을 위해 사용자 활동을 Amazon Pinpoint로 피드하는 AWS Lambda 서비스를 보여주는 다이어그램 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/brand-detection-lambda.png)

훈련 이미지에는 이미지 수준 레이블과 경계 상자를 함께 사용하지 않는 것이 좋습니다.

테스트 이미지에는 찾으려는 브랜드 인스턴스 주위에 경계 상자가 있어야 합니다. 훈련 이미지에 레이블이 지정된 경계 상자가 포함된 경우에만 훈련 데이터 세트를 분할하여 테스트 데이터 세트를 만들 수 있습니다. 훈련 영상에 이미지 수준 레이블만 있는 경우에는 경계 상자 레이블이 지정된 영상이 포함된 테스트 데이터 세트를 만들어야 합니다. 브랜드 위치를 찾도록 모델을 훈련하는 경우 이미지에 레이블을 지정하는 방법에 따라 [경계 상자로 객체에 레이블 지정](md-localize-objects.md) 및 [이미지에 이미지 수준 레이블 지정](md-assign-image-level-labels.md) 항목을 수행하세요.

[브랜드 감지](getting-started.md#gs-brand-detection-example) 예제 프로젝트는 Amazon Rekognition Custom Labels가 레이블이 있는 경계 상자를 사용하여 객체 위치를 찾는 모델을 훈련하는 방법을 보여줍니다.

## 모델 유형에 대한 레이블 요구 사항
<a name="md-model-types-table"></a>

다음 표를 사용하여 이미지에 레이블을 지정하는 방법을 확인하세요.

이미지 수준 레이블과 경계 상자 레이블이 지정된 이미지를 하나의 데이터 세트로 결합할 수 있습니다. 이 경우 Amazon Rekognition Custom Labels는 이미지 수준 모델을 생성할지 아니면 객체 위치 모델을 생성할지 여부를 선택합니다.


| 예제 | 훈련 이미지 | 테스트 이미지 | 
| --- | --- | --- | 
|  [이미지 분류](#md-dataset-image-classification)  |  이미지당 이미지 수준 레이블 1개  |  이미지당 이미지 수준 레이블 1개   | 
|  [다중 레이블 분류](#md-dataset-image-classification-multi-label)  |  이미지당 이미지 수준 레이블 여러 개  |  이미지당 이미지 수준 레이블 여러 개  | 
|  [브랜드 위치 찾기](#md-dataset-purpose-brands)  |  이미지 수준 레이블(레이블이 지정된 경계 상자도 사용할 수 있음)  |  레이블이 지정된 경계 상자  | 
|  [객체 위치 찾기](#md-dataset-purpose-localization)  |  레이블이 지정된 경계 상자  |  레이블이 지정된 경계 상자  | 

# 이미지 준비
<a name="md-prepare-images"></a>

 훈련 및 테스트 데이터 세트의 이미지에는 모델로 찾고자 하는 객체, 장면 또는 개념이 포함되어 있습니다.

이미지에는 훈련된 모델이 식별해야 할 이미지의 표본이 되는 다양한 배경과 조명이 나타나 있어야 합니다.

이 항목에서는 훈련 및 테스트 데이터 세트의 이미지에 대한 정보를 제공합니다.

## 이미지 형식
<a name="pi-image-format"></a>

PNG 및 JPEG 형식의 이미지를 사용하여 Amazon Rekognition Custom Labels 모델을 훈련할 수 있습니다. 마찬가지로 `DetectCustomLabels`를 사용하여 사용자 지정 레이블을 감지하려면 PNG 및 JPEG 형식의 이미지가 필요합니다.

## 이미지 권장 사항 입력
<a name="md-image-recommendations"></a>

Amazon Rekognition Custom Labels에는 모델을 훈련하고 테스트하기 위한 이미지가 필요합니다. 이미지를 준비하려면 다음을 고려하세요.
+ 생성하려는 모델의 특정 도메인을 선택합니다. 예를 들어 경치에 사용할 모델을 선택하고, 기계 부품과 같은 객체에 사용할 모델을 하나 더 선택할 수 있습니다. Amazon Rekognition Custom Labels는 사용자의 이미지가 선택한 도메인에 있는 경우에 가장 잘 작동합니다.
+ 최소 10개 이상의 이미지를 사용하여 모델을 훈련하세요.
+ 이미지는 PNG 또는 JPEG 형식이어야 합니다.
+ 다양한 조명, 배경, 해상도로 객체를 보여주는 이미지를 사용하세요.
+ 훈련 및 테스트 이미지는 모델이 감지할 이미지와 비슷해야 합니다.
+ 이미지에 지정할 레이블을 결정합니다.
+ 이미지 해상도가 충분히 커야 합니다. 자세한 내용은 [Amazon Rekognition Custom Labels 지침 및 할당량](limits.md) 단원을 참조하십시오.
+ 오클루전이 감지하려는 객체를 가리지 않도록 하세요.
+ 배경과 충분한 대비를 보이는 이미지를 사용하세요.
+ 밝고 선명한 이미지를 사용하세요. 피사체와 카메라 움직임 때문에 흐려진 이미지는 되도록 사용하지 않아야 합니다.
+ 객체가 이미지에서 많은 부분을 차지하는 이미지를 사용하세요.
+ 테스트 데이터 세트의 이미지는 훈련 데이터 세트에 있는 이미지가 아니어야 합니다. 여기에는 모델이 분석하도록 훈련된 객체, 장면 및 개념이 포함되어야 합니다.

## 이미지 세트 크기
<a name="md-set"></a>

Amazon Rekognition Custom Labels는 이미지 세트를 사용하여 모델을 훈련합니다. 훈련에는 10개 이상의 이미지를 사용해야 합니다. Amazon Rekognition Custom Labels는 훈련 및 테스트 이미지를 데이터 세트에 저장합니다. 자세한 내용은 [이미지를 사용하여 훈련 및 테스트 데이터 세트 생성](md-create-dataset.md) 단원을 참조하십시오.

# 이미지를 사용하여 훈련 및 테스트 데이터 세트 생성
<a name="md-create-dataset"></a>

데이터 세트가 하나인 프로젝트 또는 훈련 데이터 세트와 테스트 데이터 세트가 분리된 프로젝트로 시작할 수 있습니다. 단일 데이터 세트로 시작하는 경우 Amazon Rekognition Custom Labels는 훈련 중에 데이터 세트를 분할하여 프로젝트에 사용할 훈련 데이터 세트(80%)와 테스트 데이터 세트(20%)를 생성합니다. Amazon Rekognition Custom Labels가 훈련 및 테스트에 사용할 이미지를 결정하게 하려면 단일 데이터 세트로 시작하세요. 훈련, 테스트 및 성능 튜닝을 완벽하게 제어하려면 별도의 훈련 및 테스트 데이터 세트로 프로젝트를 시작하는 것이 좋습니다.

다음 위치 중 하나에서 이미지를 가져와서 프로젝트에 대한 훈련 및 테스트 데이터 세트를 만들 수 있습니다.
+ [Amazon S3 버킷에서 이미지 가져오기](md-create-dataset-s3.md)
+ [로컬 컴퓨터에서 이미지 가져오기](md-create-dataset-computer.md)
+ [매니페스트 파일을 사용하여 이미지 가져오기](md-create-dataset-ground-truth.md)
+ [기존 데이터세트에서 콘텐츠 복사](md-create-dataset-existing-dataset.md)

별도의 훈련 및 테스트 데이터 세트로 프로젝트를 시작하는 경우 데이터 세트마다 다른 소스 위치를 사용할 수 있습니다.

이미지를 가져온 위치에 따라 이미지에 레이블이 지정되지 않을 수 있습니다. 예를 들어 로컬 컴퓨터에서 가져온 이미지에는 레이블이 지정되지 않습니다. Amazon SageMaker AI Ground Truth 매니페스트 파일에서 가져온 이미지에는 레이블이 지정됩니다. Amazon Rekognition Custom Labels 콘솔을 사용하여 레이블을 추가, 변경 및 할당할 수 있습니다. 자세한 내용은 [이미지 레이블 지정](md-labeling-images.md) 단원을 참조하십시오.

이미지 업로드 중에 오류가 발생하거나, 이미지가 누락되었거나, 이미지에 레이블이 누락된 경우 [실패한 모델 훈련 디버깅](tm-debugging.md) 항목을 읽어보세요.

데이터 세트에 관한 자세한 내용은 [데이터 세트 관리](managing-dataset.md) 항목을 참조하세요.

## 훈련 및 테스트 데이터 세트 생성(SDK)
<a name="cd-create-dataset-sdk"></a>

 AWS SDK를 사용하여 훈련 및 테스트 데이터 세트를 생성할 수 있습니다.

`CreateDataset` 작업을 사용하면 리소스를 분류하고 관리할 목적으로 새 데이터세트를 생성할 때 선택적으로 태그를 지정할 수 있습니다.

### 훈련 데이터 세트
<a name="cd-create-training-dataset"></a>

 AWS SDK를 사용하여 다음과 같은 방법으로 훈련 데이터 세트를 생성할 수 있습니다.
+ 사용자가 제공하는 Amazon Sagemaker 형식 매니페스트 파일로 [CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)를 사용하세요. 자세한 내용은 [매니페스트 파일 생성](md-create-manifest-file.md) 단원을 참조하십시오. 예제 코드는 [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk) 항목을 참조하세요.
+ `CreateDataset`를 사용하여 기존 Amazon Rekognition Custom Labels 데이터 세트를 복사하세요. 예제 코드는 [기존 데이터 세트를 사용하여 데이터 세트 생성(SDK)](md-create-dataset-existing-dataset-sdk.md) 항목을 참조하세요.
+ `CreateDataset`를 사용하여 빈 데이터 세트를 생성하고 나중에 [UpdateDataSetEntries](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UpdateDatasetEntries)로 데이터 세트 항목을 추가할 수 있습니다. 빈 데이터 세트를 만들려면 [프로젝트에 데이터 세트 추가](md-add-dataset.md) 항목을 참조하세요. 데이터 세트에 이미지를 추가하려면 [더 많은 이미지 추가(SDK)](md-add-images.md#md-add-images-sdk) 항목을 참조하세요. 모델을 훈련하려면 먼저 데이터 세트 항목을 추가해야 합니다.

### 테스트 데이터 세트
<a name="cd-create-test-dataset"></a>

 AWS SDK를 사용하여 다음과 같은 방법으로 테스트 데이터 세트를 생성할 수 있습니다.
+ 사용자가 제공하는 Amazon Sagemaker 형식 매니페스트 파일로 [CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)를 사용하세요. 자세한 내용은 [매니페스트 파일 생성](md-create-manifest-file.md) 단원을 참조하십시오. 예제 코드는 [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk) 항목을 참조하세요.
+ `CreateDataset`를 사용하여 기존 Amazon Rekognition Custom Labels 데이터 세트를 복사하세요. 예제 코드는 [기존 데이터 세트를 사용하여 데이터 세트 생성(SDK)](md-create-dataset-existing-dataset-sdk.md) 항목을 참조하세요.
+ `CreateDataset`를 사용하여 빈 데이터 세트를 생성하고 나중에 `UpdateDatasetEntries`로 데이터 세트 항목을 추가합니다. 빈 데이터 세트를 만들려면 [프로젝트에 데이터 세트 추가](md-add-dataset.md) 항목을 참조하세요. 데이터 세트에 이미지를 추가하려면 [더 많은 이미지 추가(SDK)](md-add-images.md#md-add-images-sdk) 항목을 참조하세요. 모델을 훈련하려면 먼저 데이터 세트 항목을 추가해야 합니다.
+ 훈련 데이터 세트를 별도의 훈련 데이터 세트와 테스트 데이터 세트로 분할합니다. 먼저 `CreateDataset`를 사용하여 빈 테스트 데이터 세트를 만듭니다. 그런 다음 [DistributeDatasetEntries](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DistributeDatasetEntries)를 직접 호출하여 훈련 데이터 세트 항목의 20%를 테스트 데이터 세트로 이동합니다. 빈 데이터 세트를 만들려면 [프로젝트에 데이터 세트 추가(SDK)](md-add-dataset.md#md-add-dataset-sdk) 항목을 참조하세요. 훈련 데이터 세트를 분할하려면 [훈련 데이터 세트 배포(SDK)](md-distributing-datasets.md) 항목을 참조하세요.

# Amazon S3 버킷에서 이미지 가져오기
<a name="md-create-dataset-s3"></a>

Amazon S3 버킷에서 이미지를 가져옵니다. 콘솔 버킷 또는 AWS 계정의 다른 Amazon S3 버킷을 사용할 수 있습니다. 콘솔 버킷을 사용하는 경우 필요한 권한은 이미 설정되어 있습니다. 콘솔 버킷을 사용하지 않는 경우 [외부 Amazon S3 버킷에 액세스](su-console-policy.md#su-external-buckets) 항목을 참조하세요.

**참고**  
 AWS SDK를 사용하여 Amazon S3 버킷의 이미지에서 직접 데이터 세트를 생성할 수 없습니다. 대신 이미지의 원본 위치를 참조하는 매니페스트 파일을 생성하세요. 자세한 내용은 [매니페스트 파일을 사용하여 이미지 가져오기](md-create-dataset-ground-truth.md) 섹션을 참조하세요.

데이터 세트를 만드는 동안 이미지가 포함된 폴더의 이름을 기반으로 이미지에 레이블 이름을 할당할 수 있습니다. 폴더는 데이터 세트 생성 시 **S3 폴더 위치**에 지정하는 Amazon S3 폴더 경로의 하위 폴더여야 합니다. 데이터 세트를 생성하려면 [S3 버킷에서 이미지를 가져와서 데이터 세트를 생성합니다.](#cd-procedure) 항목을 참조하세요.

예를 들어 Amazon S3 버킷에 다음과 같은 폴더 구조가 있다고 가정합니다. Amazon S3 폴더 위치를 S3-bucket/alexa-devices**로 지정하는 경우, 폴더 echo**에 있는 이미지에 echo** 레이블이 할당됩니다. 마찬가지로 echo-dot** 폴더의 이미지에는 echo-dot**라는 레이블이 지정됩니다. 더 깊은 하위 폴더의 이름은 이미지에 레이블을 지정하는 데 사용되지 않습니다. 대신 Amazon S3 폴더 위치의 적절한 하위 폴더가 사용됩니다. 예를 들어, white-echo-dots** 폴더의 이미지에는 echo-dot**라는 레이블이 지정됩니다. S3 폴더 위치 수준의 이미지(alexa-devices**)에는 레이블이 지정되어 있지 않습니다.

 폴더 구조의 하위 폴더에 더 깊은 S3 폴더 위치를 지정하여 이미지에 레이블을 지정할 수 있습니다. 예를 들어 S3-bucket/alexa-devices/echo-dot**를 지정하는 경우 white-echo-dot** 폴더의 이미지에는 white-echo-dot** 레이블이 지정됩니다. 지정된 s3 폴더 위치 외부의 이미지(예: echo**)는 가져올 수 없습니다.

```
S3-bucket
└── alexa-devices
    ├── echo
    │   ├── echo-image-1.png
    │   └── echo-image-2.png
    │   ├── .
    │   └── .
    └── echo-dot
        ├── white-echo-dot
        │   ├── white-echo-dot-image-1.png
        │   ├── white-echo-dot-image-2.png
        │
        ├── echo-dot-image-1.png
        ├── echo-dot-image-2.png
        ├── .
        └── .
```

현재 AWS 리전에서 콘솔을 처음 열 때 Amazon Rekognition에서 생성한 Amazon Amazon S3 버킷(콘솔 버킷)을 사용하는 것이 좋습니다. 사용 중인 Amazon S3 버킷이 콘솔 버킷과 다른 경우(외부), 콘솔은 데이터 세트 생성 중에 적절한 권한을 설정하라는 메시지를 표시합니다. 자세한 내용은 [2단계: Amazon Rekognition Custom Labels 콘솔 권한 설정](su-console-policy.md) 단원을 참조하십시오.

## S3 버킷에서 이미지를 가져와서 데이터 세트를 생성합니다.
<a name="cd-procedure"></a>

다음 절차는 콘솔 S3 버킷에 저장된 이미지를 사용하여 데이터 세트를 생성하는 방법을 보여줍니다. 이미지는 저장되는 폴더의 이름으로 레이블이 자동 지정됩니다.

이미지를 가져온 후에는 데이터 세트의 갤러리 페이지에서 이미지를 더 추가하고, 레이블을 지정하고, 경계 상자를 추가할 수 있습니다. 자세한 내용은 [이미지 레이블 지정](md-labeling-images.md) 단원을 참조하십시오.<a name="cd-upload-s3-bucket"></a>

**이미지를 Amazon Simple Storage Service 버킷에 업로드합니다.**

1. 로컬 파일 시스템에 폴더를 생성합니다. alexa-devices** 같은 폴더 이름을 사용하세요.

1. 방금 만든 폴더 내에 사용하려는 각 레이블의 이름을 딴 폴더를 생성합니다. echo** 및 echo-dot**를 예로 들 수 있습니다. 폴더 구조는 다음과 비슷한 모습이어야 합니다.

   ```
   alexa-devices
   ├── echo
   │   ├── echo-image-1.png
   │   ├── echo-image-2.png
   │   ├── .
   │   └── .
   └── echo-dot
       ├── echo-dot-image-1.png
       ├── echo-dot-image-2.png
       ├── .
       └── .
   ```

1. 레이블에 상응하는 이미지를 레이블 이름이 같은 폴더에 넣습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

1. 최초 설정** 시 Amazon Rekognition Custom Labels가 생성한 Amazon S3 버킷(콘솔 버킷)에 1단계에서 생성한 [폴더를 추가](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)하세요. 자세한 내용은 [Amazon Rekognition Custom Labels 프로젝트 관리](managing-project.md) 단원을 참조하십시오.

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 데이터 세트에 추가하려는 프로젝트를 선택합니다. 프로젝트 세부 정보 페이지가 열립니다.

1. **데이터 세트 생성**을 선택합니다. **데이터 세트 생성** 페이지가 표시됩니다.

1. **시작 구성**에서 **단일 데이터 세트로 시작** 또는 **훈련 데이터 세트로 시작**을 선택합니다. 더 높은 품질의 모델을 만들려면 별도의 훈련 및 테스트 데이터 세트로 시작하는 것이 좋습니다.

------
#### [ Single dataset ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **S3 버킷에서 이미지 가져오기**를 선택합니다.

   1. **훈련 데이터 세트 세부 정보** 항목에서 **이미지 소스 구성** 항목의 13\$115단계를 위한 정보를 입력합니다.

------
#### [ Separate training and test datasets ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **S3 버킷에서 이미지 가져오기**를 선택합니다.

   1. **훈련 데이터 세트 세부 정보** 항목에서 **이미지 소스 구성** 항목의 13\$115단계를 위한 정보를 입력합니다.

   1. **테스트 데이터 세트 세부 정보** 항목에서 **S3 버킷에서 이미지 가져오기**를 선택합니다.

   1. **테스트 데이터 세트 세부 정보** 항목에서 **이미지 소스 구성** 항목의 13\$115단계를 위한 정보를 입력합니다.

------

1. **Amazon S3 버킷에서 이미지 가져오기**를 선택합니다.

1. **S3 URI**에 Amazon S3 버킷 위치 및 폴더 경로를 입력합니다.

1. **폴더를 기반으로 이미지에 레이블 자동 지정**을 선택합니다.

1. **데이터 세트 생성**을 선택합니다. 프로젝트의 데이터 세트 페이지가 열립니다.

1. 레이블을 추가하거나 변경해야 하면 [이미지 레이블 지정](md-labeling-images.md) 항목을 수행합니다.

1. [모델 훈련(콘솔)](training-model.md#tm-console)에 나온 단계에 따라 모델을 훈련하세요.

# 로컬 컴퓨터에서 이미지 가져오기
<a name="md-create-dataset-computer"></a>

이미지는 컴퓨터에서 직접 로드됩니다. 한 번에 최대 30개의 이미지를 업로드할 수 있습니다.

업로드하는 이미지에는 연결된 레이블이 없을 것입니다. 자세한 내용은 [이미지 레이블 지정](md-labeling-images.md) 단원을 참조하십시오. 업로드할 이미지가 많은 경우 Amazon S3 버킷을 사용하는 것이 좋습니다. 자세한 내용은 [Amazon S3 버킷에서 이미지 가져오기](md-create-dataset-s3.md) 단원을 참조하십시오.

**참고**  
 AWS SDK를 사용하여 로컬 이미지로 데이터 세트를 생성할 수 없습니다. 대신 매니페스트 파일을 생성하여 Amazon S3 버킷에 이미지를 업로드합니다. 자세한 내용은 [매니페스트 파일을 사용하여 이미지 가져오기](md-create-dataset-ground-truth.md) 단원을 참조하십시오.

**로컬 컴퓨터의 이미지를 사용하여 데이터 세트를 만들려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 데이터 세트에 추가하려는 프로젝트를 선택합니다. 프로젝트 세부 정보 페이지가 열립니다.

1. **데이터 세트 생성**을 선택합니다. **데이터 세트 생성** 페이지가 표시됩니다.

1. **시작 구성**에서 **단일 데이터 세트로 시작** 또는 **훈련 데이터 세트로 시작**을 선택합니다. 더 높은 품질의 모델을 만들려면 별도의 훈련 및 테스트 데이터 세트로 시작하는 것이 좋습니다.

------
#### [ Single dataset ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **컴퓨터에서 이미지 업로드**를 선택합니다.

   1. **데이터 세트 생성**을 선택합니다.

   1. 프로젝트의 데이터 세트 페이지에서 **이미지 추가**를 선택합니다.

   1. 사용자의 컴퓨터 파일에서 온 데이트 세트에 업로드할 이미지를 선택합니다. 이미지를 드래그하거나 로컬 컴퓨터에서 업로드할 이미지를 선택할 수 있습니다.

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

------
#### [ Separate training and test datasets ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **컴퓨터에서 이미지 업로드**를 선택합니다.

   1. **테스트 데이터 세트 세부정보** 섹션에서 **컴퓨터에서 이미지 업로드를** 선택합니다.
**참고**  
훈련 데이터 세트와 테스트 데이터 세트에는 서로 다른 이미지 소스가 있을 수 있습니다.

   1. **데이터 세트 생성**을 선택합니다. 각 데이터 세트에 대한 **훈련** 탭과 **테스트** 탭이 있는 사용자 프로젝트의 데이터 세트 페이지가 나타납니다.

   1. **작업**을 선택한 다음 **훈련 데이터 세트에 이미지 추가**를 선택합니다.

   1. 데이터 세트에 업로드하려는 이미지를 선택합니다. 이미지를 드래그하거나 로컬 컴퓨터에서 업로드할 이미지를 선택할 수 있습니다.

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

   1. 5e\$15g단계를 반복합니다. 5e단계에서는 **작업**을 선택한 다음 **테스트 데이터 세트에 이미지 추가**를 선택합니다.

------

1. [이미지 레이블 지정](md-labeling-images.md)에 나온 단계에 따라 이미지에 레이블을 지정합니다.

1. [모델 훈련(콘솔)](training-model.md#tm-console)에 나온 단계에 따라 모델을 훈련하세요.

# 매니페스트 파일을 사용하여 이미지 가져오기
<a name="md-create-dataset-ground-truth"></a>

Amazon SageMaker AI Ground Truth 형식 매니페스트 파일을 사용하여 데이터 세트를 생성할 수 있습니다. Amazon SageMaker AI Ground Truth 작업의 매니페스트 파일을 사용할 수 있습니다. 이미지와 레이블이 SageMaker AI Ground Truth 매니페스트 파일 형식이 아닌 경우 SageMaker AI 형식 매니페스트 파일을 생성하고 이를 사용하여 레이블이 지정된 이미지를 가져올 수 있습니다.

새 데이터세트를 생성할 때 선택적으로 태그를 지정할 수 있도록 `CreateDataset` 작업이 업데이트되었습니다. 태그는 리소스를 분류하고 관리하는 데 도움이 될 수 있는 키-값 페어입니다.

**Topics**
+ [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](#md-create-dataset-ground-truth-console)
+ [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](#md-create-dataset-ground-truth-sdk)
+ [데이터세트 생성 요청](#create-dataset-ground-truth-request)
+ [Amazon SageMaker AI Ground Truth 작업을 사용하여 이미지 레이블 지정](md-create-dataset-ground-truth-job.md)
+ [매니페스트 파일 생성](md-create-manifest-file.md)
+ [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md)
+ [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md)
+ [매니페스트 파일의 검증 규칙](md-create-manifest-file-validation-rules.md)
+ [다른 데이터 세트 형식을 매니페스트 파일로 변환](md-converting-to-sm-format.md)

## SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)
<a name="md-create-dataset-ground-truth-console"></a>

다음 절차에서는 SageMaker AI Ground Truth 형식 매니페스트 파일을 사용하여 데이터 세트를 생성하는 방법을 보여줍니다.

1. 다음 중 하나를 수행하여 훈련 데이터 세트의 매니페스트 파일을 생성합니다.
   + 의 지침에 따라 SageMaker AI GroundTruth 작업으로 매니페스트 파일을 생성합니다[Amazon SageMaker AI Ground Truth 작업을 사용하여 이미지 레이블 지정](md-create-dataset-ground-truth-job.md).
   + [매니페스트 파일 생성](md-create-manifest-file.md)의 지침에 따라 사용자 고유의 매니페스트 파일을 생성하세요.

   테스트 데이터 세트를 만들려면 1단계를 반복하여 테스트 데이터 세트를 만드세요.

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 데이터 세트에 추가하려는 프로젝트를 선택합니다. 프로젝트 세부 정보 페이지가 열립니다.

1. **데이터 세트 생성**을 선택합니다. **데이터 세트 생성** 페이지가 표시됩니다.

1. **시작 구성**에서 **단일 데이터 세트로 시작** 또는 **훈련 데이터 세트로 시작**을 선택합니다. 더 높은 품질의 모델을 만들려면 별도의 훈련 및 테스트 데이터 세트로 시작하는 것이 좋습니다.

------
#### [ Single dataset ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **SageMaker Ground Truth로 레이블이 지정된 이미지 가져오기**를 선택합니다.

   1. **매니페스트 파일 위치**에 1단계에서 생성한 매니페스트 파일의 위치를 입력하세요.

   1. **데이터 세트 생성**을 선택합니다. 프로젝트의 데이터 세트 페이지가 열립니다.

------
#### [ Separate training and test datasets ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **SageMaker Ground Truth로 레이블이 지정된 이미지 가져오기**를 선택합니다.

   1. **.manifest 파일 위치**에 1단계에서 생성한 훈련 데이터 세트 매니페스트 파일의 위치를 입력하세요.

   1. **테스트 데이터 세트 세부 정보** 항목에서 **SageMaker Ground Truth로 레이블이 지정된 이미지 가져오기**를 선택합니다.
**참고**  
훈련 데이터 세트와 테스트 데이터 세트에는 서로 다른 이미지 소스가 있을 수 있습니다.

   1. **.manifest 파일 위치**에 1단계에서 생성한 테스트 데이터 세트 매니페스트 파일의 위치를 입력하세요.

   1. **데이터 세트 생성**을 선택합니다. 프로젝트의 데이터 세트 페이지가 열립니다.

------

1. 레이블을 추가하거나 변경해야 하면 [이미지 레이블 지정](md-labeling-images.md) 항목을 수행합니다.

1. [모델 훈련(콘솔)](training-model.md#tm-console)에 나온 단계에 따라 모델을 훈련하세요.

## SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성
<a name="md-create-dataset-ground-truth-sdk"></a>

다음 절차는 [CreateDataset API](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)를 사용하여 매니페스트 파일에서 훈련 데이터 세트 또는 테스트 데이터 세트를 생성하는 방법을 보여줍니다.

[SageMaker AI Ground Truth 작업](md-create-dataset-ground-truth-job.md)의 출력과 같은 기존 매니페스트 파일을 사용하거나 자체 [매니페스트 파일을](md-create-manifest-file.md) 생성할 수 있습니다.

1. 아직 설치하지 않은 경우 및 AWS SDKs AWS CLI 를 설치하고 구성합니다. 자세한 내용은 [4단계: AWS CLI 및 AWS SDKs 설정](su-awscli-sdk.md) 단원을 참조하십시오.

1. 다음 중 하나를 수행하여 훈련 데이터 세트의 매니페스트 파일을 생성합니다.
   + 의 지침에 따라 SageMaker AI GroundTruth 작업으로 매니페스트 파일을 생성합니다[Amazon SageMaker AI Ground Truth 작업을 사용하여 이미지 레이블 지정](md-create-dataset-ground-truth-job.md).
   + [매니페스트 파일 생성](md-create-manifest-file.md)의 지침에 따라 사용자 고유의 매니페스트 파일을 생성하세요.

   테스트 데이터 세트를 만들려면 2단계를 반복하여 테스트 데이터 세트를 만드세요.

1. 다음 예제 코드를 사용하여 훈련 및 테스트 데이터 세트를 만드세요.

------
#### [ AWS CLI ]

   다음 코드를 사용하여 데이터 세트를 생성하세요. 다음을 바꿉니다.
   + `project_arn`: 테스트 데이터 세트를 추가하려는 프로젝트의 ARN입니다.
   + `type`: 생성하려는 데이터 세트의 유형(훈련 또는 테스트)
   + `bucket`: 데이터 세트의 매니페스트 파일이 들어 있는 버킷
   + `manifest_file`: 매니페스트의 경로 및 파일 이름

   ```
   aws rekognition create-dataset --project-arn project_arn \
     --dataset-type type \
     --dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "bucket", "Name": "manifest_file" } } }' \
     --profile custom-labels-access
     --tags '{"key1": "value1", "key2": "value2"}'
   ```

------
#### [ Python ]

   다음 값을 사용하여 데이터 세트를 생성하세요. 다음 명령줄 파라미터를 제공하세요.
   + `project_arn`: 테스트 데이터 세트를 추가하려는 프로젝트의 ARN
   + `dataset_type`: 생성하려는 데이터 세트 유형(`train` 또는 `test`)
   + `bucket`: 데이터 세트의 매니페스트 파일이 들어 있는 버킷
   + `manifest_file`: 매니페스트의 경로 및 파일 이름

   ```
   #Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   
   import argparse
   import logging
   import time
   import json
   import boto3
   from botocore.exceptions import ClientError
   
   logger = logging.getLogger(__name__)
   
   def create_dataset(rek_client, project_arn, dataset_type, bucket, manifest_file):
       """
       Creates an 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).
       :param bucket: The S3 bucket that contains the manifest file.
       :param manifest_file: The path and filename of the manifest file.
       """
   
       try:
           #Create the project
           logger.info("Creating %s dataset for project %s",dataset_type, project_arn)
   
           dataset_type = dataset_type.upper()
   
           dataset_source = json.loads(
               '{ "GroundTruthManifest": { "S3Object": { "Bucket": "'
               + bucket
               + '", "Name": "'
               + manifest_file
               + '" } } }'
           )
   
           response = rek_client.create_dataset(
               ProjectArn=project_arn, DatasetType=dataset_type, DatasetSource=dataset_source
           )
   
           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 dataset."
       )
   
       parser.add_argument(
           "dataset_type", help="The type of the dataset that you want to create (train or test)."
       )
   
       parser.add_argument(
           "bucket", help="The S3 bucket that contains the manifest file."
       )
       
       parser.add_argument(
           "manifest_file", help="The path and filename of the manifest file."
       )
   
   
   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 {args.dataset_type} dataset for project {args.project_arn}")
   
           #Create the dataset.
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
   
           dataset_arn=create_dataset(rekognition_client, 
               args.project_arn,
               args.dataset_type,
               args.bucket,
               args.manifest_file)
   
           print(f"Finished creating dataset: {dataset_arn}")
   
   
       except ClientError as err:
           logger.exception("Problem creating dataset: %s", err)
           print(f"Problem creating dataset: {err}")
   
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   다음 값을 사용하여 데이터 세트를 생성하세요. 다음 명령줄 파라미터를 제공하세요.
   + `project_arn`: 테스트 데이터 세트를 추가하려는 프로젝트의 ARN
   + `dataset_type`: 생성하려는 데이터 세트 유형(`train` 또는 `test`)
   + `bucket`: 데이터 세트의 매니페스트 파일이 들어 있는 버킷
   + `manifest_file`: 매니페스트의 경로 및 파일 이름

   ```
   /*
      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.DatasetSource;
   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.GroundTruthManifest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.S3Object;
   
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   public class CreateDatasetManifestFiles {
   
       public static final Logger logger = Logger.getLogger(CreateDatasetManifestFiles.class.getName());
   
       public static String createMyDataset(RekognitionClient rekClient, String projectArn, String datasetType,
               String bucket, String name) throws Exception, RekognitionException {
   
           try {
   
               logger.log(Level.INFO, "Creating {0} dataset for project : {1} from s3://{2}/{3} ",
                       new Object[] { datasetType, projectArn, bucket, name });
   
               DatasetType requestDatasetType = null;
   
               switch (datasetType) {
               case "train":
                   requestDatasetType = DatasetType.TRAIN;
                   break;
               case "test":
                   requestDatasetType = DatasetType.TEST;
                   break;
               default:
                   logger.log(Level.SEVERE, "Could not create dataset. Unrecognized dataset type: {0}", datasetType);
                   throw new Exception("Could not create dataset. Unrecognized dataset type: " + datasetType);
   
               }
   
               GroundTruthManifest groundTruthManifest = GroundTruthManifest.builder()
                       .s3Object(S3Object.builder().bucket(bucket).name(name).build()).build();
   
               DatasetSource datasetSource = DatasetSource.builder().groundTruthManifest(groundTruthManifest).build();
   
               CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn)
                       .datasetType(requestDatasetType).datasetSource(datasetSource).build();
   
               CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest);
   
               boolean created = false;
   
               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 bucket = null;
           String name = null;
           String projectArn = null;
           String datasetArn = null;
   
           final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type> <dataset_arn>\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 dataset that you want to create (train or test).\n\n"
                   + "   bucket - the S3 bucket that contains the manifest file.\n\n"
                   + "   name - the location and name of the manifest file within the bucket.\n\n";
   
           if (args.length != 4) {
               System.out.println(USAGE);
               System.exit(1);
           }
   
           projectArn = args[0];
           datasetType = args[1];
           bucket = args[2];
           name = args[3];
   
           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 = createMyDataset(rekClient, projectArn, datasetType, bucket, name);
   
               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);
           }
   
       }
   
   }
   ```

------

1. 레이블을 추가하거나 변경해야 하면 [레이블 관리(SDK)](md-labels.md#md-labels-sdk) 항목을 참조하세요.

1. [모델 훈련(SDK)](training-model.md#tm-sdk)에 나온 단계에 따라 모델을 훈련하세요.

## 데이터세트 생성 요청
<a name="create-dataset-ground-truth-request"></a>

 다음은 CreateDataset 작업 요청의 형식입니다.

```
{
"DatasetSource": {
"DatasetArn": "string",
"GroundTruthManifest": {
"S3Object": {
"Bucket": "string",
"Name": "string",
"Version": "string"
}
}
},
"DatasetType": "string",
"ProjectArn": "string",
"Tags": {
"string": "string"
}
}
```

# Amazon SageMaker AI Ground Truth 작업을 사용하여 이미지 레이블 지정
<a name="md-create-dataset-ground-truth-job"></a>

Amazon SageMaker AI Ground Truth를 사용하면 레이블이 지정된 이미지 세트를 생성할 수 있는 기계 학습과 함께 선택한 공급업체인 Amazon Mechanical Turk 또는 내부 프라이빗 작업 인력의 작업자를 사용할 수 있습니다. Amazon Rekognition Custom Labels는 지정한 Amazon S3 버킷에서 SageMaker AI Ground Truth 매니페스트 파일을 가져옵니다.

Amazon Rekognition Custom Labels는 다음과 같은 SageMaker AI Ground Truth 작업을 지원합니다.
+ [이미지 분류](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-image-classification.html)
+ [경계 상자](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-bounding-box.html)

가져오는 파일은 이미지와 매니페스트 파일입니다. 매니페스트 파일에는 가져온 이미지에 대한 레이블 및 경계 상자 정보가 들어 있습니다.

Amazon Rekognition은 이미지가 저장되는 Amazon S3 버킷에 액세스할 수 있는 권한이 필요합니다. Amazon Rekognition Custom Labels가 자동으로 설정한 콘솔 버킷을 사용하는 경우, 필요한 권한은 이미 설정되어 있습니다. 콘솔 버킷을 사용하지 않는 경우 [외부 Amazon S3 버킷에 액세스](su-console-policy.md#su-external-buckets) 항목을 참조하세요.

## SageMaker AI Ground Truth 작업을 사용하여 매니페스트 파일 생성(콘솔)
<a name="md-create-dataset-ground-truth-job-console"></a>

다음 절차에서는 SageMaker AI Ground Truth 작업으로 레이블이 지정된 이미지를 사용하여 데이터 세트를 생성하는 방법을 보여줍니다. 작업 출력 파일은 Amazon Rekognition Custom Labels 콘솔 버킷에 저장됩니다.<a name="create-dataset-procedure-ground-truth"></a>

**SageMaker AI Ground Truth 작업으로 레이블이 지정된 이미지를 사용하여 데이터 세트를 생성하려면(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

1. 콘솔 버킷에서 훈련 이미지를 보관할 [폴더를 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-folder.html)합니다.
**참고**  
콘솔 버킷은 AWS 리전에서 Amazon Rekognition Custom Labels 콘솔을 처음 열 때 생성됩니다. 자세한 내용은 [Amazon Rekognition Custom Labels 프로젝트 관리](managing-project.md) 단원을 참조하십시오.

1. 방금 생성한 폴더에 [이미지를 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)합니다.

1. 콘솔 버킷에서 Ground Truth 작업의 출력을 보관할 폴더를 생성합니다.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔을 엽니다.

1. Ground Truth 레이블 지정 작업을 생성하세요. 2단계와 4단계에서 생성한 폴더의 Amazon S3 URL이 필요합니다. 자세한 내용은 [데이터 레이블링을 위한 Amazon SageMaker Ground Truth 사용](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html)을 참조하세요.

1. 4단계에서 생성한 폴더의 `output.manifest` 파일 위치를 기록해 두세요. 해당 파일은 하위 폴더 `Ground-Truth-Job-Name/manifests/output`에 있을 것입니다.

1. [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console)의 지침에 따라 업로드된 매니페스트 파일로 데이터 세트를 생성하세요. 8단계로 **.manifest 파일 위치**에 이전 단계에서 기록해 둔 위치의 Amazon S3 URL을 입력합니다. AWS SDK를 사용하는 경우를 수행합니다[SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

1. 1\$16단계를 반복하여 테스트 데이터 세트에 대한 SageMaker AI Ground Truth 작업을 생성합니다.

# 매니페스트 파일 생성
<a name="md-create-manifest-file"></a>

SageMaker AI Ground Truth 형식 매니페스트 파일을 가져와서 테스트 또는 훈련 데이터 세트를 생성할 수 있습니다. 이미지에 SageMaker AI Ground Truth 매니페스트 파일이 아닌 형식으로 레이블이 지정된 경우 다음 정보를 사용하여 SageMaker AI Ground Truth 형식 매니페스트 파일을 생성합니다.

매니페스트 파일은 [JSON 라인](http://jsonlines.org) 형식이며, 각 라인은 이미지의 레이블 정보를 나타내는 완전한 JSON 객체입니다. Amazon Rekognition Custom Labels는 다음 형식의 JSON 라인이 있는 SageMaker AI Ground Truth 매니페스트를 지원합니다.
+ [분류 작업 출력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-class): 이미지에 이미지 수준 레이블을 추가하는 데 사용합니다. 이미지 수준 레이블은 이미지에 있는 장면, 개념 또는 객체(객체 위치 정보가 필요하지 않은 경우)의 클래스를 정의합니다. 이미지에는 이미지 수준 레이블이 두 개 이상 있을 수 있습니다. 자세한 내용은 [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md) 단원을 참조하십시오.
+ [경계 상자 작업 출력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-box): 이미지에 있는 하나 이상의 객체의 클래스와 위치에 레이블을 지정하는 데 사용합니다. 자세한 내용은 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 단원을 참조하십시오.

이미지 수준 및 위치 파악(경계 상자) JSON 라인을 동일한 매니페스트 파일에 연결할 수 있습니다.

**참고**  
이 항목의 JSON 라인 예제는 가독성을 위해 형식이 지정되었습니다.

매니페스트 파일을 가져올 때 Amazon Rekognition Custom Labels는 제한, 구문 및 시맨틱에 대한 검증 규칙을 적용합니다. 자세한 내용은 [매니페스트 파일의 검증 규칙](md-create-manifest-file-validation-rules.md) 단원을 참조하십시오.

매니페스트 파일이 참조하는 이미지는 동일한 Amazon S3 버킷에 있어야 합니다. 매니페스트 파일은 이미지를 저장하는 Amazon S3 버킷과 다른 Amazon S3 버킷에 있을 수 있습니다. JSON 라인의 `source-ref` 필드에 이미지 위치를 지정합니다.

Amazon Rekognition은 이미지가 저장되는 Amazon S3 버킷에 액세스할 수 있는 권한이 필요합니다. Amazon Rekognition Custom Labels가 자동으로 설정한 콘솔 버킷을 사용하는 경우, 필요한 권한은 이미 설정되어 있습니다. 콘솔 버킷을 사용하지 않는 경우 [외부 Amazon S3 버킷에 액세스](su-console-policy.md#su-external-buckets) 항목을 참조하세요.

**Topics**
+ [매니페스트 파일 생성](#md-create-manifest-file-console)

## 매니페스트 파일 생성
<a name="md-create-manifest-file-console"></a>

다음 절차는 훈련 및 테스트 데이터 세트가 포함된 프로젝트를 생성합니다. 데이터 세트는 사용자가 만든 훈련 및 테스트 매니페스트 파일에서 생성됩니다.

<a name="create-dataset-procedure-manifest-file"></a>

**SageMaker AI Ground Truth 형식 매니페스트 파일을 사용하여 데이터 세트를 생성하려면(콘솔)**

1. 콘솔 버킷에서 매니페스트 파일을 보관할 [폴더를 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-folder.html)합니다.

1. 콘솔 버킷에서 이미지를 보관할 폴더를 생성합니다.

1. 방금 생성한 폴더에 이미지를 업로드합니다.

1. 훈련 데이터 세트에 대한 SageMaker AI Ground Truth 형식 매니페스트 파일을 생성합니다. 자세한 내용은 [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md) 및 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 섹션을 참조하세요.
**중요**  
각 JSON 라인의 `source-ref` 필드 값은 업로드한 이미지에 매핑되어야 합니다.

1. 테스트 데이터 세트에 대한 SageMaker AI Ground Truth 형식 매니페스트 파일을 생성합니다.

1. 방금 생성한 폴더에 [매니페스트 파일을 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)합니다.

1. 매니페스트 파일의 위치를 기록해 둡니다.

1. [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console)의 지침에 따라 업로드된 매니페스트 파일로 데이터 세트를 생성하세요. 8단계로 **.manifest 파일 위치**에 이전 단계에서 기록해 둔 위치의 Amazon S3 URL을 입력합니다. AWS SDK를 사용하는 경우를 수행합니다[SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

# 매니페스트 파일의 이미지 수준 레이블 가져오기
<a name="md-create-manifest-file-classification"></a>

이미지 수준 레이블(현지화 정보가 필요하지 않은 장면, 개념 또는 객체로 레이블이 지정된 이미지)을 가져오려면 매니페스트 파일에 SageMaker AI Ground Truth [분류 작업 출력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-class) 형식 JSON 라인을 추가합니다. 매니페스트 파일은 가져오려는 이미지당 하나씩, 하나 이상의 JSON 라인으로 구성됩니다.

**작은 정보**  
매니페스트 파일 생성을 단순화하기 위해 CSV 파일에서 매니페스트 파일을 만드는 Python 스크립트가 제공됩니다. 자세한 내용은 [CSV 파일로 매니페스트 파일 생성](ex-csv-manifest.md) 단원을 참조하십시오.

**이미지 수준 레이블을 위한 매니페스트 파일 생성**

1. 빈 텍스트 파일을 생성합니다.

1. 가져올 각 이미지에 JSON 라인을 추가합니다. 각 JSON 라인은 다음과 비슷한 모습이어야 합니다.

   ```
   {"source-ref":"s3://custom-labels-console-us-east-1-nnnnnnnnnn/gt-job/manifest/IMG_1133.png","TestCLConsoleBucket":0,"TestCLConsoleBucket-metadata":{"confidence":0.95,"job-name":"labeling-job/testclconsolebucket","class-name":"Echo Dot","human-annotated":"yes","creation-date":"2020-04-15T20:17:23.433061","type":"groundtruth/image-classification"}}
   ```

1. 파일을 저장합니다. `.manifest` 확장을 사용할 수 있지만 필수는 아닙니다.

1. 생성한 매니페스트 파일을 사용하여 데이터 세트를 생성하세요. 자세한 내용은 [SageMaker AI Ground Truth 형식 매니페스트 파일을 사용하여 데이터 세트를 생성하려면(콘솔)](md-create-manifest-file.md#create-dataset-procedure-manifest-file) 단원을 참조하십시오.

 

## 이미지 레벨 JSON 라인
<a name="md-manifest-classification-json"></a>

이 항목은 하나의 이미지에 JSON 라인을 생성하는 방법을 보여줍니다. 다음 이미지를 고려하세요. 다음 이미지의 장면은 Sunrise**라고 부르겠습니다.

![\[산으로 둘러싸인 선착장과 작은 배가 있는 호수 위의 석양입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/sunrise.png)


Sunrise** 장면이 포함된 이전 이미지의 JSON 라인은 다음과 같을 수 있습니다.

```
{
    "source-ref": "s3://bucket/images/sunrise.png",
    "testdataset-classification_Sunrise": 1,
    "testdataset-classification_Sunrise-metadata": {
        "confidence": 1,
        "job-name": "labeling-job/testdataset-classification_Sunrise",
        "class-name": "Sunrise",
        "human-annotated": "yes",
        "creation-date": "2020-03-06T17:46:39.176",
        "type": "groundtruth/image-classification"
    }
}
```

다음 정보를 참고하세요.

### source-ref
<a name="w2aac20c17c25c27c19c11c13"></a>

(필수) 이미지의 Amazon S3 위치입니다. 형식은 `"s3://BUCKET/OBJECT_PATH"`입니다. 가져온 데이터 세트의 이미지는 동일한 Amazon S3 버킷에 저장되어야 합니다.

### *testdataset-classification\$1Sunrise*
<a name="w2aac20c17c25c27c19c11c15"></a>

(필수) 레이블 속성 필드 이름을 선택합니다. 필드 값(위 예제의 1)은 레이블 속성 식별자입니다. Amazon Rekognition Custom Labels에서는 사용되지 않으며 임의의 정수 값일 수 있습니다. -metadata**가 추가된 필드 이름으로 식별되는 상응하는 메타데이터가 있어야 합니다. 예를 들어 `"testdataset-classification_Sunrise-metadata"`입니다.

### *testdataset-classification\$1Sunrise*-metadata
<a name="w2aac20c17c25c27c19c11c17"></a>

(필수) 레이블 속성에 대한 메타데이터 필드 이름은 *-metadata*가 추가된 레이블 속성과 동일해야 합니다.

confidence**  
(필수) Amazon Rekognition Custom Labels에서는 현재 사용되지 않지만 0에서 1 사이의 값을 제공해야 합니다.

job-name**  
(선택 사항) 이미지를 처리하는 작업에 원하는 이름을 붙이세요.

class-name**  
(필수) 이미지에 적용되는 장면이나 개념에 원하는 클래스 이름을 붙이세요. 예를 들어 `"Sunrise"`입니다.

human-annotated**  
(필수) 사람이 주석을 완성했으면 `"yes"`를 지정하세요. 그렇지 않을 경우 `"no"`입니다.

creation-date**   
(필수) 레이블이 생성된 협정 세계시(UTC) 날짜와 시간 

type**  
(필수) 이미지에 적용해야 하는 처리 유형 이미지 수준 레이블의 경우 값은 `"groundtruth/image-classification"`입니다.

### 이미지에 여러 이미지 수준 레이블 추가
<a name="md-dataset-purpose-classification-multiple-labels"></a>

이미지에 레이블을 여러 개 추가할 수 있습니다. 예를 들어 다음 JSON은 하나의 이미지에 축구**와 공**이라는 두 개의 레이블을 추가합니다.

```
{
    "source-ref": "S3 bucket location", 
    "sport0":0, # FIRST label
    "sport0-metadata": { 
        "class-name": "football", 
        "confidence": 0.8, 
        "type":"groundtruth/image-classification", 
        "job-name": "identify-sport", 
        "human-annotated": "yes", 
        "creation-date": "2018-10-18T22:18:13.527256" 
    },
    "sport1":1, # SECOND label
    "sport1-metadata": { 
        "class-name": "ball", 
        "confidence": 0.8, 
        "type":"groundtruth/image-classification", 
        "job-name": "identify-sport", 
        "human-annotated": "yes", 
        "creation-date": "2018-10-18T22:18:13.527256" 
    }
}  # end of annotations for 1 image
```

# 매니페스트 파일의 객체 위치 파악
<a name="md-create-manifest-file-object-detection"></a>

SageMaker AI Ground Truth [경계 상자 작업 출력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-box) 형식 JSON 라인을 매니페스트 파일에 추가하여 객체 현지화 정보로 레이블이 지정된 이미지를 가져올 수 있습니다.

위치 파악 정보는 이미지 상의 객체 위치를 나타냅니다. 위치는 객체를 둘러싸는 경계 상자로 표시됩니다. 경계 상자 구조에는 경계 상자의 왼쪽 위 좌표와 경계 상자의 너비 및 높이가 포함됩니다. 경계 상자 형식의 JSON 라인에는 이미지에 있는 각 객체의 클래스와 이미지에 있는 하나 이상의 객체 위치에 대한 경계 상자가 포함됩니다.

매니페스트 파일은 하나 이상의 JSON 라인으로 구성되며, 각 라인에는 하나의 이미지에 대한 정보가 들어 있습니다.

**객체 위치 파악을 위한 매니페스트 파일을 만들려면**

1. 빈 텍스트 파일을 생성합니다.

1. 가져올 각 이미지에 JSON 라인을 추가합니다. 각 JSON 라인은 다음과 비슷한 모습이어야 합니다.

   ```
   {"source-ref": "s3://bucket/images/IMG_1186.png", "bounding-box": {"image_size": [{"width": 640, "height": 480, "depth": 3}], "annotations": [{ "class_id": 1,	"top": 251,	"left": 399, "width": 155, "height": 101}, {"class_id": 0, "top": 65, "left": 86, "width": 220,	"height": 334}]}, "bounding-box-metadata": {"objects": [{ "confidence": 1}, {"confidence": 1}],	"class-map": {"0": "Echo",	"1": "Echo Dot"}, "type": "groundtruth/object-detection", "human-annotated": "yes",	"creation-date": "2013-11-18T02:53:27", "job-name": "my job"}}
   ```

1. 파일을 저장합니다. `.manifest` 확장을 사용할 수 있지만 필수는 아닙니다.

1. 방금 생성한 파일을 사용하여 데이터 세트를 생성합니다. 자세한 내용은 [SageMaker AI Ground Truth 형식 매니페스트 파일을 사용하여 데이터 세트를 생성하려면(콘솔)](md-create-manifest-file.md#create-dataset-procedure-manifest-file) 단원을 참조하십시오.



## 객체 경계 상자 JSON 라인
<a name="md-manifest-object-localization-json"></a>

이 항목은 하나의 이미지에 JSON 라인을 생성하는 방법을 보여줍니다. 다음 이미지는 Amazon Echo 및 Amazon Echo Dot 디바이스 주변의 경계 상자를 보여줍니다.

![\[목재 표면 위에 있는 두 개의 Amazon 스마트 스피커로, 각각 녹색 경계 상자와 파란색 경계 상자가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/echos.png)


다음은 이전 이미지의 경계 상자 JSON 라인입니다.

```
{
	"source-ref": "s3://custom-labels-bucket/images/IMG_1186.png",
	"bounding-box": {
		"image_size": [{
			"width": 640,
			"height": 480,
			"depth": 3
		}],
		"annotations": [{
			"class_id": 1,
			"top": 251,
			"left": 399,
			"width": 155,
			"height": 101
		}, {
			"class_id": 0,
			"top": 65,
			"left": 86,
			"width": 220,
			"height": 334
		}]
	},
	"bounding-box-metadata": {
		"objects": [{
			"confidence": 1
		}, {
			"confidence": 1
		}],
		"class-map": {
			"0": "Echo",
			"1": "Echo Dot"
		},
		"type": "groundtruth/object-detection",
		"human-annotated": "yes",
		"creation-date": "2013-11-18T02:53:27",
		"job-name": "my job"
	}
}
```

다음 정보를 참고하세요.

### source-ref
<a name="cd-manifest-source-ref"></a>

(필수) 이미지의 Amazon S3 위치입니다. 형식은 `"s3://BUCKET/OBJECT_PATH"`입니다. 가져온 데이터 세트의 이미지는 동일한 Amazon S3 버킷에 저장되어야 합니다.

### *bounding-box*
<a name="md-manifest-source-bounding-box"></a>

(필수) 레이블 속성 필드 이름을 선택합니다. 이미지에서 감지된 각 객체의 이미지 크기 및 경계 상자를 포함합니다. -metadata**가 추가된 필드 이름으로 식별되는 상응하는 메타데이터가 있어야 합니다. 예를 들어 `"bounding-box-metadata"`입니다.

image\$1size**  
(필수) 이미지 크기(픽셀 단위)를 포함하는 단일 요소 배열   
+ height**: (필수) 이미지의 높이(픽셀 단위) 
+ width**: (필수) 이미지의 깊이(픽셀 단위) 
+ depth**: (필수) 이미지의 채널 수 RGB 이미지의 경우 값은 3입니다. Amazon Rekognition Custom Labels에서는 현재 사용하지 않지만 값이 필요합니다.

주석**  
(필수) 이미지에서 감지된 각 객체에 대한 경계 상자 정보의 배열  
+ class\$1id**: (필수) class-map**의 레이블에 매핑됩니다. 위 예제에서 class\$1id**가 `1`인 객체는 이미지의 Echo Dot입니다.
+ top**: (필수) 이미지 상단에서 경계 상자 상단까지의 거리(픽셀 단위) 
+ left**: (필수) 이미지 왼쪽에서 경계 상자 왼쪽까지의 거리(픽셀 단위) 
+ width**: (필수) 경계 상자의 너비(픽셀 단위) 
+ height**: (필수) 경계 상자의 높이(픽셀 단위) 

### *bounding-box*-metadata
<a name="md-manifest-source-bounding-box-metadata"></a>

(필수) 레이블 속성에 대한 메타데이터 필드 이름은 -metadata**가 추가된 레이블 속성과 동일해야 합니다. 이미지에서 감지된 각 객체에 대한 경계 상자 정보의 배열

Objects**  
(필수) 이미지에 있는 객체의 배열입니다. 인덱스를 기준으로 주석** 배열에 매핑합니다. Amazon Rekognition Custom Labels는 신뢰도 속성을 사용하지 않습니다.

class-map**  
(필수) 이미지에서 감지된 객체에 적용되는 클래스 맵 

type**  
(필수) 분류 작업 유형입니다. `"groundtruth/object-detection"`은 작업을 객체 감지로 식별합니다.

creation-date**   
(필수) 레이블이 생성된 협정 세계시(UTC) 날짜와 시간 

human-annotated**  
(필수) 사람이 주석을 완성했으면 `"yes"`를 지정하세요. 그렇지 않을 경우 `"no"`입니다.

job-name**  
(선택 사항) 이미지를 처리하는 작업의 이름입니다.

# 매니페스트 파일의 검증 규칙
<a name="md-create-manifest-file-validation-rules"></a>

 매니페스트 파일을 가져올 때 Amazon Rekognition Custom Labels는 제한, 구문 및 시맨틱에 대한 검증 규칙을 적용합니다. SageMaker AI Ground Truth 스키마는 구문 검증을 적용합니다. 자세한 내용은 [출력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html)을 참조하세요. 다음은 제한 및 시맨틱에 대한 검증 규칙입니다.

**참고**  
20% 무효 규칙은 모든 검증 규칙에 누적되어 적용됩니다. 잘못된 JSON 15%, 잘못된 이미지 15%와 같은 조합으로 인해 가져오기가 20% 제한을 초과하는 경우 가져오기가 실패합니다.
각 데이터 세트 객체는 매니페스트의 한 라인입니다. 비어 있거나 유효하지 않은 라인도 데이터 세트 객체로 간주됩니다.
겹치는 부분은 (테스트와 훈련 간의 공통 레이블)/(훈련 레이블)입니다.

**Topics**
+ [한도](#md-validation-rules-limits)
+ [시맨틱](#md-validation-rules-semantics)

## 한도
<a name="md-validation-rules-limits"></a>


| 검증 | 제한 | 발생한 오류 | 
| --- | --- | --- | 
|  매니페스트 파일 크기  |  최대 1GB  |  오류  | 
|  매니페스트 파일의 최대 라인 수  |  매니페스트에는 최대 250,000개의 데이터 세트 객체가 한 라인으로 표시됩니다.  |  오류  | 
|  레이블당 유효한 데이터 세트 객체 총 수의 하한   |  >= 1  |  오류  | 
|  레이블의 하한  |  >=2  |  오류  | 
|  레이블의 상한  |  <= 250  |  오류  | 
|  이미지당 최소 경계 상자  |  0  |  없음  | 
|  이미지당 최대 경계 상자  |  50  |  없음  | 

## 시맨틱
<a name="md-validation-rules-semantics"></a>




| 검증 | 제한 | 발생한 오류 | 
| --- | --- | --- | 
|  빈 매니페스트  |    |  오류  | 
|  누락되거나 액세스할 수 없는 source-ref 객체  |  객체 수 20% 미만  |  경고  | 
|  누락되거나 액세스할 수 없는 source-ref 객체  |  객체 수 > 20%  |  오류  | 
|  훈련 데이터 세트에 테스트 레이블이 없습니다.  |  레이블이 50% 이상 겹쳐야 합니다.  |  오류  | 
|  데이터 세트의 동일한 레이블에 대한 레이블과 객체 예제의 혼합 데이터 세트 객체의 동일한 클래스에 대한 분류 및 탐지   |    |  오류나 경고 없음  | 
|  테스트와 트레이닝 간에 중첩되는 자산   |  테스트 데이터 세트와 훈련 데이터 세트 간에 중첩되는 부분이 없어야 합니다.  |    | 
|  데이터 세트의 이미지는 동일한 버킷에서 가져온 것이어야 합니다.  |  객체가 다른 버킷에 있는 경우 오류가 발생합니다.  |  오류  | 

# 다른 데이터 세트 형식을 매니페스트 파일로 변환
<a name="md-converting-to-sm-format"></a>

다음 정보를 사용하여 다양한 소스 데이터 세트 형식에서 Amazon SageMaker AI 형식 매니페스트 파일을 생성할 수 있습니다. 매니페스트 파일을 생성한 후 이를 사용하여 데이터 세트에 생성합니다. 자세한 내용은 [매니페스트 파일을 사용하여 이미지 가져오기](md-create-dataset-ground-truth.md) 단원을 참조하십시오.

**Topics**
+ [COCO 데이터세트를 매니페스트 파일 형식으로 변환](md-transform-coco.md)
+ [다중 레이블 SageMaker AI Ground Truth 매니페스트 파일 변환](md-gt-cl-transform.md)
+ [CSV 파일로 매니페스트 파일 생성](ex-csv-manifest.md)

# COCO 데이터세트를 매니페스트 파일 형식으로 변환
<a name="md-transform-coco"></a>

[COCO](http://cocodataset.org/#home)는 대규모 객체 감지, 세분화, 캡션 데이터 세트를 지정하는 데 사용되는 형식입니다. 이 Python [예제](md-coco-transform-example.md)는 COCO 객체 감지 형식 데이터 세트를 Amazon Rekognition Custom Labels [경계 상자 형식 매니페스트 파일](md-create-manifest-file-object-detection.md)로 변환하는 방법을 보여줍니다. 이 항목에는 직접 코드를 작성하는 데 사용할 수 있는 정보도 포함되어 있습니다.

COCO 형식 JSON 파일은 전체 데이터 세트**에 대한 정보를 제공하는 5개 항목으로 구성되어 있습니다. 자세한 내용은 [COCO 데이터세트 형식](md-coco-overview.md) 단원을 참조하십시오.
+ `info`: 데이터 세트에 대한 일반 정보 
+ `licenses `: 데이터 세트의 이미지에 대한 라이선스 정보
+ [`images`](md-coco-overview.md#md-coco-images): 데이터 세트의 이미지 목록
+ [`annotations`](md-coco-overview.md#md-coco-annotations): 데이터 세트의 모든 이미지에 있는 주석 목록(테두리 상자 포함)
+ [`categories`](md-coco-overview.md#md-coco-categories): 레이블 카테고리 목록

Amazon Rekognition Custom Labels 매니페스트 파일을 생성하려면 `images`, `annotations` 및 `categories` 목록의 정보가 필요합니다.

Amazon Rekognition Custom Labels 매니페스트 파일은 JSON 라인 형식이며, 각 줄에는 이미지에 있는** 하나 이상의 객체에 대한 경계 상자와 레이블 정보가 있습니다. 자세한 내용은 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 단원을 참조하십시오.

## COCO 객체를 사용자 지정 레이블 JSON 라인에 매핑
<a name="md-mapping-coco"></a>

COCO 형식 데이터 세트를 변환하려면 객체 위치 파악을 위해 COCO 데이터 세트를 Amazon Rekognition Custom Labels 매니페스트 파일에 매핑하세요. 자세한 내용은 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 단원을 참조하십시오. 각 이미지에 대한 JSON 라인을 구축하려면 매니페스트 파일에 COCO 데이터 세트 `image`, `annotation`, `category` 객체 필드 ID를 매핑해야 합니다.

다음은 COCO 매니페스트 파일의 예제입니다. 자세한 내용은 [COCO 데이터세트 형식](md-coco-overview.md) 단원을 참조하십시오.

```
{
    "info": {
        "description": "COCO 2017 Dataset","url": "http://cocodataset.org","version": "1.0","year": 2017,"contributor": "COCO Consortium","date_created": "2017/09/01"
    },
    "licenses": [
        {"url": "http://creativecommons.org/licenses/by/2.0/","id": 4,"name": "Attribution License"}
    ],
    "images": [
        {"id": 242287, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/xxxxxxxxxxxx.jpg", "flickr_url": "http://farm3.staticflickr.com/2626/xxxxxxxxxxxx.jpg", "width": 426, "height": 640, "file_name": "xxxxxxxxx.jpg", "date_captured": "2013-11-15 02:41:42"},
        {"id": 245915, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg", "flickr_url": "http://farm1.staticflickr.com/88/xxxxxxxxxxxx.jpg", "width": 640, "height": 480, "file_name": "nnnnnnnnnn.jpg", "date_captured": "2013-11-18 02:53:27"}
    ],
    "annotations": [
        {"id": 125686, "category_id": 0, "iscrowd": 0, "segmentation": [[164.81, 417.51,......167.55, 410.64]], "image_id": 242287, "area": 42061.80340000001, "bbox": [19.23, 383.18, 314.5, 244.46]},
        {"id": 1409619, "category_id": 0, "iscrowd": 0, "segmentation": [[376.81, 238.8,........382.74, 241.17]], "image_id": 245915, "area": 3556.2197000000015, "bbox": [399, 251, 155, 101]},
        {"id": 1410165, "category_id": 1, "iscrowd": 0, "segmentation": [[486.34, 239.01,..........495.95, 244.39]], "image_id": 245915, "area": 1775.8932499999994, "bbox": [86, 65, 220, 334]}
    ],
    "categories": [
        {"supercategory": "speaker","id": 0,"name": "echo"},
        {"supercategory": "speaker","id": 1,"name": "echo dot"}
    ]
}
```

다음 다이어그램은 데이터 세트**의 COCO 데이터세트 목록이 Amazon Rekognition Custom Labels JSON 라인에 매핑되는 이미지**를 보여줍니다. 이미지의 모든 JSON 라인에는 소스 참조, 작업, 작업 메타데이터 필드가 있습니다. 일치하는 색상은 단일 이미지에 대한 정보를 나타냅니다. 매니페스트에서 각 이미지에 여러 주석과 메타데이터/범주가 있을 수 있습니다.

![\[이미지, 주석, 범주가 포함된 Coco 매니페스트의 구조를 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/coco-transform.png)


**단일 JSON 라인에 대한 COCO 객체를 가져오려면**

1. 이미지 목록의 각 이미지에 대해 주석 필드 `image_id`의 값이 이미지 `id` 필드와 일치하는 주석 목록에서 주석을 가져옵니다.

1. 1단계에서 일치하는 각 주석에 대해 `categories` 목록을 읽고 `category` 필드 `id` 값이 `annotation` 객체 `category_id` 필드와 일치하는 `category`를 각각 가져옵니다.

1. 일치하는 `image`, `annotation`, `category` 객체를 사용하여 이미지의 JSON 라인을 생성합니다. 필드를 매핑하려면 [COCO 객체 필드를 사용자 지정 레이블 JSON 라인 객체 필드에 매핑하기](#md-mapping-fields-coco) 항목을 참조하세요.

1. `images` 목록의 각 `image` 객체에 대해 JSON 라인을 생성할 때까지 1\$13단계를 반복합니다.

예제 코드는 [COCO 데이터 세트 변환](md-coco-transform-example.md) 항목을 참조하세요.

## COCO 객체 필드를 사용자 지정 레이블 JSON 라인 객체 필드에 매핑하기
<a name="md-mapping-fields-coco"></a>

Amazon Rekognition Custom Labels JSON 라인의 COCO 객체를 식별한 후에는 COCO 객체 필드를 상응하는 Amazon Rekognition Custom Labels JSON 라인 객체 필드에 매핑해야 합니다. 다음 예제 Amazon Rekognition Custom Labels JSON 라인은 하나의 이미지(`id`=`000000245915`)를 위의 COCO JSON 예제에 매핑합니다. 다음 정보를 참고하세요.
+ `source-ref`는 Amazon S3 버킷의 이미지 위치입니다. Amazon S3 버킷에 COCO 이미지가 저장되지 않은 경우, 이미지를 Amazon S3 버킷으로 이동해야 합니다.
+ `annotations` 목록에는 이미지의 각 객체에 대해 `annotation` 객체가 포함되어 있습니다. `annotation` 객체에는 경계 상자 정보(`top`, `left`, `width`, `height`) 및 레이블 식별자(`class_id`)가 포함됩니다.
+ 레이블 식별자(`class_id`)는 메타데이터의 `class-map` 목록에 매핑됩니다. 그것은 이미지에 사용된 레이블을 나열합니다.

```
{
	"source-ref": "s3://custom-labels-bucket/images/000000245915.jpg",
	"bounding-box": {
		"image_size": {
			"width": 640,
			"height": 480,
			"depth": 3
		},
		"annotations": [{
			"class_id": 0,
			"top": 251,
			"left": 399,
			"width": 155,
			"height": 101
		}, {
			"class_id": 1,
			"top": 65,
			"left": 86,
			"width": 220,
			"height": 334
		}]
	},
	"bounding-box-metadata": {
		"objects": [{
			"confidence": 1
		}, {
			"confidence": 1
		}],
		"class-map": {
			"0": "Echo",
			"1": "Echo Dot"
		},
		"type": "groundtruth/object-detection",
		"human-annotated": "yes",
		"creation-date": "2018-10-18T22:18:13.527256",
		"job-name": "my job"
	}
}
```

다음 정보를 사용하여 Amazon Rekognition Custom Labels 매니페스트 파일 필드를 COCO 데이터 세트 JSON 필드에 매핑할 수 있습니다.

### source-ref
<a name="md-source-ref-coco"></a>

이미지 위치의 S3 형식 URL입니다. 이미지는 S3 버킷에 저장되어야 합니다. 자세한 내용은 [source-ref](md-create-manifest-file-object-detection.md#cd-manifest-source-ref) 단원을 참조하십시오. `coco_url` COCO 필드가 S3 버킷 위치를 가리키는 경우 `coco_url`의 값을 `source-ref`의 값으로 사용할 수 있습니다. 또는 `file_name`(COCO) 필드에 `source-ref`를 매핑하고, 변환 코드에서 이미지가 저장되는 위치에 필요한 S3 경로를 추가할 수 있습니다.

### *bounding-box*
<a name="md-label-attribute-id-coco"></a>

사용자가 선택한 레이블 속성 이름 자세한 내용은 [*bounding-box*](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box) 단원을 참조하십시오.

#### image\$1size
<a name="md-image-size-coco"></a>

이미지 크기(픽셀 단위) [이미지](md-coco-overview.md#md-coco-images) 목록의 `image` 객체에 매핑됩니다.
+ `height`-> `image.height`
+ `width`-> `image.width`
+ `depth`-> Amazon Rekognition Custom Labels에는 사용되지 않지만 값을 입력해야 합니다.

#### 주석
<a name="md-annotations-coco"></a>

`annotation` 객체의 목록. 이미지의 각 객체마다 `annotation`이 하나씩 있습니다.

#### annotation
<a name="md-annotation-coco"></a>

이미지에 있는 객체의 한 인스턴스에 대한 경계 상자 정보가 들어 있습니다.
+ `class_id` -> 사용자 지정 레이블의 `class-map` 목록에 매핑되는 숫자 ID
+ `top` -> `bbox[1]`
+ `left` -> `bbox[0]`
+ `width` -> `bbox[2]`
+ `height` -> `bbox[3]`

### *bounding-box*-metadata
<a name="md-metadata-coco"></a>

레이블 속성의 메타데이터 레이블 및 레이블 식별자를 포함합니다. 자세한 내용은 [*bounding-box*-metadata](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box-metadata) 단원을 참조하십시오.

#### Objects
<a name="cd-metadata-objects-coco"></a>

이미지에 있는 객체의 배열입니다. 인덱스를 기준으로 `annotations` 목록에 매핑됩니다.

##### 객체
<a name="cd-metadata-object-coco"></a>
+ `confidence`->Amazon Rekognition Custom Labels에는 사용되지 않지만 값(1)이 필요합니다.

#### class-map
<a name="md-metadata-class-map-coco"></a>

이미지에서 감지된 객체에 적용되는 레이블(클래스)의 맵입니다. [카테고리](md-coco-overview.md#md-coco-categories) 목록에 있는 카테고리 개체에 매핑됩니다.
+ `id` -> `category.id`
+ `id value` -> `category.name`

#### type
<a name="md-type-coco"></a>

`groundtruth/object-detection`이어야 합니다.

#### human-annotated
<a name="md-human-annotated-coco"></a>

`yes` 또는 `no`을 지정합니다. 자세한 내용은 [*bounding-box*-metadata](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box-metadata) 단원을 참조하십시오.

#### creation-date -> [image](md-coco-overview.md#md-coco-images).date\$1captured
<a name="md-creation-date-coco"></a>

이미지가 생성된 날짜 및 시간입니다. COCO 이미지 목록에 있는 이미지의 [image](md-coco-overview.md#md-coco-images).date\$1captured 필드에 매핑됩니다. Amazon Rekognition Custom Labels의 `creation-date`의 형식은 Y-M-DTH:MS:S**일 것으로 예상합니다.

#### job-name
<a name="md-job-name-coco"></a>

사용자가 선택한 직무 이름 

# COCO 데이터세트 형식
<a name="md-coco-overview"></a>

COCO 데이터 세트는 전체 데이터 세트에 대한 정보를 제공하는 다섯 개의 항목으로 구성됩니다. COCO 객체 감지 데이터 세트의 형식은 [COCO 데이터 형식](http://cocodataset.org/#format-data)에 문서화되어 있습니다.
+ 정보: 데이터 세트에 대한 일반 정보입니다.
+ 라이선스: 데이터 세트의 이미지에 대한 라이선스 정보입니다.
+ [이미지](#md-coco-images): 데이터 세트에 있는 이미지 목록
+ [주석](#md-coco-annotations): 데이터 세트의 모든 이미지에 있는 주석(경계 상자 포함)의 목록
+ [카테고리](#md-coco-categories): 레이블 카테고리 목록

사용자 지정 레이블 매니페스트를 만들려면 COCO 매니페스트 파일의 `images`, `annotations`, `categories` 목록을 사용하세요. 다른 항목(`info`, `licences`)은 필수가 아닙니다. 다음은 COCO 매니페스트 파일의 예제입니다.

```
{
    "info": {
        "description": "COCO 2017 Dataset","url": "http://cocodataset.org","version": "1.0","year": 2017,"contributor": "COCO Consortium","date_created": "2017/09/01"
    },
    "licenses": [
        {"url": "http://creativecommons.org/licenses/by/2.0/","id": 4,"name": "Attribution License"}
    ],
    "images": [
        {"id": 242287, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/xxxxxxxxxxxx.jpg", "flickr_url": "http://farm3.staticflickr.com/2626/xxxxxxxxxxxx.jpg", "width": 426, "height": 640, "file_name": "xxxxxxxxx.jpg", "date_captured": "2013-11-15 02:41:42"},
        {"id": 245915, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg", "flickr_url": "http://farm1.staticflickr.com/88/xxxxxxxxxxxx.jpg", "width": 640, "height": 480, "file_name": "nnnnnnnnnn.jpg", "date_captured": "2013-11-18 02:53:27"}
    ],
    "annotations": [
        {"id": 125686, "category_id": 0, "iscrowd": 0, "segmentation": [[164.81, 417.51,......167.55, 410.64]], "image_id": 242287, "area": 42061.80340000001, "bbox": [19.23, 383.18, 314.5, 244.46]},
        {"id": 1409619, "category_id": 0, "iscrowd": 0, "segmentation": [[376.81, 238.8,........382.74, 241.17]], "image_id": 245915, "area": 3556.2197000000015, "bbox": [399, 251, 155, 101]},
        {"id": 1410165, "category_id": 1, "iscrowd": 0, "segmentation": [[486.34, 239.01,..........495.95, 244.39]], "image_id": 245915, "area": 1775.8932499999994, "bbox": [86, 65, 220, 334]}
    ],
    "categories": [
        {"supercategory": "speaker","id": 0,"name": "echo"},
        {"supercategory": "speaker","id": 1,"name": "echo dot"}
    ]
}
```

## 이미지 목록
<a name="md-coco-images"></a>

COCO 데이터 세트에서 참조하는 이미지는 이미지 배열에 나열됩니다. 각 이미지 객체에는 이미지 파일 이름과 같은 이미지에 대한 정보가 들어 있습니다. 다음 예제 이미지 객체에서 다음 정보와 Amazon Rekognition Custom Labels 매니페스트 파일을 생성하는 데 필요한 필드를 기록해 둡니다.
+ `id`: (필수) 이미지의 고유 식별자 `id` 필드는 주석 배열(경계 상자 정보가 저장되는 위치)의 `id` 필드에 매핑됩니다.
+ `license`: (필수 아님) 라이선스 어레이에 매핑됩니다.
+ `coco_url`: (선택 사항) 이미지의 위치
+ `flickr_url`: (필수 아님) Flickr에서의 이미지 위치
+ `width`: (필수) 이미지의 너비
+ `height`: (필수) 이미지의 높이
+ `file_name`: (필수) 이미지 파일 이름 이 예제에서 `file_name`과 `id`는 일치하지만 COCO 데이터 세트의 요구 사항은 아닙니다.
+ `date_captured`: (필수) 이미지를 캡처한 날짜 및 시간 

```
{
    "id": 245915,
    "license": 4,
    "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg",
    "flickr_url": "http://farm1.staticflickr.com/88/nnnnnnnnnnnnnnnnnnn.jpg",
    "width": 640,
    "height": 480,
    "file_name": "000000245915.jpg",
    "date_captured": "2013-11-18 02:53:27"
}
```

## 주석(경계 상자) 목록
<a name="md-coco-annotations"></a>

모든 이미지에 있는 모든 객체의 경계 상자 정보는 주석 목록에 저장됩니다. 단일 주석 개체에는 단일 개체에 대한 경계 상자 정보와 이미지의 개체 레이블이 포함됩니다. 이미지에 있는 객체의 각 인스턴스에는 주석 개체가 있습니다.

다음 예제에서 다음 정보와 Amazon Rekognition Custom Labels 매니페스트 파일을 생성하는 데 필요한 필드를 기록해 둡니다.
+ `id`: (필수 아님) 주석의 식별자
+ `image_id`: (필수) 이미지 배열의 `id` 이미지에 대응합니다.
+ `category_id`: (필수) 경계 상자 내의 객체를 식별하는 레이블의 식별자입니다. 카테고리 배열의 `id` 필드에 매핑됩니다.
+ `iscrowd`: (필수 아님) 이미지에 많은 객체가 포함되어 있는지 여부를 지정합니다.
+ `segmentation`: (필수 아님) 이미지 상의 객체에 대한 세그멘트화 정보입니다. Amazon Rekognition Custom Labels는 세그멘트화를 지원하지 않습니다.
+ `area`: (필수 아님) 주석의 영역
+ `bbox`: (필수) 이미지에 있는 객체 주위의 경계 상자 좌표(픽셀 단위)를 포함합니다.

```
{
    "id": 1409619,
    "category_id": 1,
    "iscrowd": 0,
    "segmentation": [
        [86.0, 238.8,..........382.74, 241.17]
    ],
    "image_id": 245915,
    "area": 3556.2197000000015,
    "bbox": [86, 65, 220, 334]
}
```

## 카테고리 목록
<a name="md-coco-categories"></a>

레이블 정보는 카테고리 배열에 저장됩니다. 다음 예제 카테고리 객체에서 다음 정보와 Amazon Rekognition Custom Labels 매니페스트 파일을 생성하는 데 필요한 필드를 기록해 둡니다.
+ `supercategory`: (필수 아님) 레이블의 상위 카테고리 
+ `id`: (필수) 레이블 식별자 `id` 필드는 `annotation` 객체의 `category_id` 필드에 매핑됩니다. 다음 예제에서 에코 도트의 식별자는 2입니다.
+ `name`: (필수) 레이블 이름 

```
        {"supercategory": "speaker","id": 2,"name": "echo dot"}
```

# COCO 데이터 세트 변환
<a name="md-coco-transform-example"></a>

다음 Python 예제를 사용하여 COCO 형식 데이터 세트의 경계 상자 정보를 Amazon Rekognition Custom Labels 매니페스트 파일로 변환합니다. 해당 코드는 생성된 매니페스트 파일을 Amazon S3 버킷에 업로드합니다. 해당 코드는 이미지를 업로드하는 데 사용할 수 있는 AWS CLI 명령도 제공합니다.

**COCO 데이터 세트를 변환하려면(SDK)**

1. 아직 설정하지 않았다면 다음과 같이 하세요.

   1. `AmazonS3FullAccess` 권한이 있는지 확인합니다. 자세한 내용은 [SDK 권한 설정](su-sdk-permissions.md) 단원을 참조하십시오.

   1.  AWS CLI 및 AWS SDKs를 설치하고 구성합니다. 자세한 내용은 [4단계: AWS CLI 및 AWS SDKs 설정](su-awscli-sdk.md) 단원을 참조하십시오.

1. 다음 Python 코드를 사용하여 COCO 데이터 세트를 변환합니다. 다음 값을 설정하세요.
   + `s3_bucket`: 이미지 및 Amazon Rekognition Custom Labels 매니페스트 파일을 저장할 S3 버킷의 이름입니다.
   + `s3_key_path_images`: S3 버킷(`s3_bucket`) 내에서 이미지를 배치하려는 위치의 경로
   + `s3_key_path_manifest_file`: S3 버킷(`s3_bucket`) 내에서 사용자 지정 레이블 매니페스트 파일을 배치할 경로
   + `local_path`: 예제에서 입력 COCO 데이터 세트를 열고 새 사용자 지정 레이블 매니페스트 파일도 저장하는 로컬 경로
   + `local_images_path`: 훈련에 사용할 이미지의 로컬 경로
   + `coco_manifest`: 입력 COCO 데이터 세트 파일 이름
   + `cl_manifest_file`: 예제에서 만든 매니페스트 파일의 이름 `local_path`에서 지정한 위치에 파일이 저장됩니다. 일반적으로 파일에는 `.manifest` 확장자가 있지만 필수는 아닙니다.
   + `job_name`: 사용자 정의 레이블 작업의 이름

   ```
   import json
   import os
   import random
   import shutil
   import datetime
   import botocore
   import boto3
   import PIL.Image as Image
   import io
   
   #S3 location for images
   s3_bucket = 'bucket'
   s3_key_path_manifest_file = 'path to custom labels manifest file/'
   s3_key_path_images = 'path to images/'
   s3_path='s3://' + s3_bucket  + '/' + s3_key_path_images
   s3 = boto3.resource('s3')
   
   #Local file information
   local_path='path to input COCO dataset and output Custom Labels manifest/'
   local_images_path='path to COCO images/'
   coco_manifest = 'COCO dataset JSON file name'
   coco_json_file = local_path + coco_manifest
   job_name='Custom Labels job name'
   cl_manifest_file = 'custom_labels.manifest'
   
   label_attribute ='bounding-box'
   
   open(local_path + cl_manifest_file, 'w').close()
   
   # class representing a Custom Label JSON line for an image
   class cl_json_line:  
       def __init__(self,job, img):  
   
           #Get image info. Annotations are dealt with seperately
           sizes=[]
           image_size={}
           image_size["width"] = img["width"]
           image_size["depth"] = 3
           image_size["height"] = img["height"]
           sizes.append(image_size)
   
           bounding_box={}
           bounding_box["annotations"] = []
           bounding_box["image_size"] = sizes
   
           self.__dict__["source-ref"] = s3_path + img['file_name']
           self.__dict__[job] = bounding_box
   
           #get metadata
           metadata = {}
           metadata['job-name'] = job_name
           metadata['class-map'] = {}
           metadata['human-annotated']='yes'
           metadata['objects'] = [] 
           date_time_obj = datetime.datetime.strptime(img['date_captured'], '%Y-%m-%d %H:%M:%S')
           metadata['creation-date']= date_time_obj.strftime('%Y-%m-%dT%H:%M:%S') 
           metadata['type']='groundtruth/object-detection'
           
           self.__dict__[job + '-metadata'] = metadata
   
   
   print("Getting image, annotations, and categories from COCO file...")
   
   with open(coco_json_file) as f:
   
       #Get custom label compatible info    
       js = json.load(f)
       images = js['images']
       categories = js['categories']
       annotations = js['annotations']
   
       print('Images: ' + str(len(images)))
       print('annotations: ' + str(len(annotations)))
       print('categories: ' + str(len (categories)))
   
   
   print("Creating CL JSON lines...")
       
   images_dict = {image['id']: cl_json_line(label_attribute, image) for image in images}
   
   print('Parsing annotations...')
   for annotation in annotations:
   
       image=images_dict[annotation['image_id']]
   
       cl_annotation = {}
       cl_class_map={}
   
       # get bounding box information
       cl_bounding_box={}
       cl_bounding_box['left'] = annotation['bbox'][0]
       cl_bounding_box['top'] = annotation['bbox'][1]
    
       cl_bounding_box['width'] = annotation['bbox'][2]
       cl_bounding_box['height'] = annotation['bbox'][3]
       cl_bounding_box['class_id'] = annotation['category_id']
   
       getattr(image, label_attribute)['annotations'].append(cl_bounding_box)
   
   
       for category in categories:
            if annotation['category_id'] == category['id']:
               getattr(image, label_attribute + '-metadata')['class-map'][category['id']]=category['name']
           
       
       cl_object={}
       cl_object['confidence'] = int(1)  #not currently used by Custom Labels
       getattr(image, label_attribute + '-metadata')['objects'].append(cl_object)
   
   print('Done parsing annotations')
   
   # Create manifest file.
   print('Writing Custom Labels manifest...')
   
   for im in images_dict.values():
   
       with open(local_path+cl_manifest_file, 'a+') as outfile:
               json.dump(im.__dict__,outfile)
               outfile.write('\n')
               outfile.close()
   
   # Upload manifest file to S3 bucket.
   print ('Uploading Custom Labels manifest file to S3 bucket')
   print('Uploading'  + local_path + cl_manifest_file + ' to ' + s3_key_path_manifest_file)
   print(s3_bucket)
   s3 = boto3.resource('s3')
   s3.Bucket(s3_bucket).upload_file(local_path + cl_manifest_file, s3_key_path_manifest_file + cl_manifest_file)
   
   # Print S3 URL to manifest file,
   print ('S3 URL Path to manifest file. ')
   print('\033[1m s3://' + s3_bucket + '/' + s3_key_path_manifest_file + cl_manifest_file + '\033[0m') 
   
   # Display aws s3 sync command.
   print ('\nAWS CLI s3 sync command to upload your images to S3 bucket. ')
   print ('\033[1m aws s3 sync ' + local_images_path + ' ' + s3_path + '\033[0m')
   ```

1. 코드를 실행합니다.

1. 프로그램 출력에서 `s3 sync` 명령을 기록해 둡니다. 이 정보는 다음 단계에서 필요합니다.

1. 명령 프롬프트에서 `s3 sync` 명령을 실행합니다. 이미지는 S3 버킷에 업로드됩니다. 업로드 중에 명령이 실패하면 로컬 이미지가 S3 버킷과 동기화될 때까지 명령을 다시 실행하세요.

1. 프로그램 출력에서 매니페스트 파일의 S3 URL 경로를 기록해 둡니다. 이 정보는 다음 단계에서 필요합니다.

1. [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console)의 지침에 따라 업로드된 매니페스트 파일로 데이터 세트를 생성하세요. 8단계로 **.manifest 파일 위치**에 이전 단계에서 기록해 둔 Amazon S3 URL을 입력합니다. AWS SDK를 사용하고 있다면 [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk) 항목을 수행하세요.

# 다중 레이블 SageMaker AI Ground Truth 매니페스트 파일 변환
<a name="md-gt-cl-transform"></a>

이 주제에서는 다중 레이블 Amazon SageMaker AI Ground Truth 매니페스트 파일을 Amazon Rekognition Custom Labels 형식 매니페스트 파일로 변환하는 방법을 보여줍니다.

다중 레이블 작업에 대한 SageMaker AI Ground Truth 매니페스트 파일의 형식은 Amazon Rekognition Custom Labels 형식 매니페스트 파일과 다릅니다. 다중 레이블 분류란 어떤 이미지가 일련의 클래스로 분류되지만 동시에 여러 클래스에 속할 수 있는 경우를 말합니다. 이 경우 이미지에 축구공**, 공**과 같은 여러 레이블(다중 레이블)이 있을 수 있습니다.

다중 레이블 SageMaker AI Ground Truth 작업에 대한 자세한 내용은 [이미지 분류(다중 레이블)를 참조하세요](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-image-classification-multilabel.html). 다중 레이블 형식 Amazon Rekognition Custom Labels 매니페스트 파일에 대한 자세한 내용은 [이미지에 여러 이미지 수준 레이블 추가](md-create-manifest-file-classification.md#md-dataset-purpose-classification-multiple-labels) 항목을 참조하세요.

## SageMaker AI Ground Truth 작업에 대한 매니페스트 파일 가져오기
<a name="md-get-gt-manifest"></a>

다음 절차에서는 Amazon SageMaker AI Ground Truth 작업에 대한 출력 매니페스트 파일(`output.manifest`)을 가져오는 방법을 보여줍니다. `output.manifest`를 다음 절차의 입력으로 사용합니다.

**SageMaker AI Ground Truth 작업 매니페스트 파일을 다운로드하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 링크를 엽니다.

1. 탐색 창에서 **Ground Truth**를 선택한 다음 **레이블 지정 작업**을 선택합니다.

1. 사용할 매니페스트 파일이 들어 있는 레이블 지정 작업을 선택합니다.

1. 세부 정보 페이지의 **출력 데이터 세트 위치** 아래에 있는 링크를 선택합니다. Amazon S3 콘솔이 데이터 세트 위치에서 열립니다.

1. `Manifests`, `output`, 다음 `output.manifest`을 선택합니다.

1. 매니페스트 파일을 다운로드하려면 **객체 작업**을 선택하고 **다운로드**를 선택합니다.

## 다중 레이블 SageMaker AI 매니페스트 파일 변환
<a name="md-transform-ml-gt"></a>

다음 절차에서는 기존 다중 레이블 형식 SageMaker AI GroundTruth 매니페스트 파일에서 다중 레이블 형식 Amazon Rekognition Custom Labels 매니페스트 파일을 생성합니다.

**참고**  
코드를 실행하려면 Python 버전 3 이상이 필요합니다.<a name="md-procedure-multi-label-transform"></a>

**다중 레이블 SageMaker AI 매니페스트 파일을 변환하려면**

1. 다음 Python 코드를 실행합니다. [SageMaker AI Ground Truth 작업에 대한 매니페스트 파일 가져오기](#md-get-gt-manifest)에서 생성한 매니페스트 파일의 이름을 명령줄 인수로 제공합니다.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier:  Apache-2.0
   """
   Purpose
   Shows how to create and Amazon Rekognition Custom Labels format
   manifest file from an Amazon SageMaker Ground Truth Image
   Classification (Multi-label) format manifest file.
   """
   import json
   import logging
   import argparse
   import os.path
   
   logger = logging.getLogger(__name__)
   
   def create_manifest_file(ground_truth_manifest_file):
       """
       Creates an Amazon Rekognition Custom Labels format manifest file from
       an Amazon SageMaker Ground Truth Image Classification (Multi-label) format
       manifest file.
       :param: ground_truth_manifest_file: The name of the Ground Truth manifest file,
       including the relative path.
       :return: The name of the new Custom Labels manifest file.
       """
   
       logger.info('Creating manifest file from %s', ground_truth_manifest_file)
       new_manifest_file = f'custom_labels_{os.path.basename(ground_truth_manifest_file)}'
   
       # Read the SageMaker Ground Truth manifest file into memory.
       with open(ground_truth_manifest_file) as gt_file:
           lines = gt_file.readlines()
   
       #Iterate through the lines one at a time to generate the
       #new lines for the Custom Labels manifest file.
       with open(new_manifest_file, 'w') as the_new_file:
           for line in lines:
               #job_name - The of the Amazon Sagemaker Ground Truth job.
               job_name = ''
               # Load in the old json item from the Ground Truth manifest file
               old_json = json.loads(line)
   
               # Get the job name
               keys = old_json.keys()
               for key in keys:
                   if 'source-ref' not in key and '-metadata' not in key:
                       job_name = key
   
               new_json = {}
               # Set the location of the image
               new_json['source-ref'] = old_json['source-ref']
   
               # Temporarily store the list of labels
               labels = old_json[job_name]
   
               # Iterate through the labels and reformat to Custom Labels format
               for index, label in enumerate(labels):
                   new_json[f'{job_name}{index}'] = index
                   metadata = {}
                   metadata['class-name'] = old_json[f'{job_name}-metadata']['class-map'][str(label)]
                   metadata['confidence'] = old_json[f'{job_name}-metadata']['confidence-map'][str(label)]
                   metadata['type'] = 'groundtruth/image-classification'
                   metadata['job-name'] = old_json[f'{job_name}-metadata']['job-name']
                   metadata['human-annotated'] = old_json[f'{job_name}-metadata']['human-annotated']
                   metadata['creation-date'] = old_json[f'{job_name}-metadata']['creation-date']
                   # Add the metadata to new json line
                   new_json[f'{job_name}{index}-metadata'] = metadata
               # Write the current line to the json file
               the_new_file.write(json.dumps(new_json))
               the_new_file.write('\n')
   
       logger.info('Created %s', new_manifest_file)
       return  new_manifest_file
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "manifest_file", help="The Amazon SageMaker Ground Truth manifest file"
           "that you want to use."
       )
   
   
   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()
           # Create the manifest file
           manifest_file = create_manifest_file(args.manifest_file)
           print(f'Manifest file created: {manifest_file}')
       except FileNotFoundError as err:
           logger.exception('File not found: %s', err)
           print(f'File not found: {err}. Check your manifest file.')
   
   if __name__ == "__main__":
       main()
   ```

1. 스크립트에 표시되는 새 매니페스트 파일의 이름을 기록해 둡니다. 다음 단계에서 해당 항목을 사용합니다.

1. 매니페스트 파일을 저장하는 데 사용할 Amazon S3 버킷에 [매니페스트 파일을 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)합니다.
**참고**  
Amazon Rekognition Custom Labels가 매니페스트 파일 JSON 라인의 `source-ref` 필드에서 참조되는 Amazon S3 버킷에 액세스할 수 있는지 확인하세요. 자세한 내용은 [외부 Amazon S3 버킷에 액세스](su-console-policy.md#su-external-buckets) 단원을 참조하십시오. Ground Truth 작업이 Amazon Rekognition Custom Labels 콘솔 버킷에 이미지를 저장하는 경우 권한을 추가할 필요가 없습니다.

1. [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console)의 지침에 따라 업로드된 매니페스트 파일로 데이터 세트를 생성하세요. 8단계로 **.manifest 파일 위치**에 매니페스트 파일의 위치로 사용할 Amazon S3 URL을 입력합니다. AWS SDK를 사용하고 있다면 [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk) 항목을 수행하세요.

# CSV 파일로 매니페스트 파일 생성
<a name="ex-csv-manifest"></a>

이 예제 Python 스크립트는 Comma Separated Values(CSV) 파일을 사용하여 이미지에 레이블을 지정함으로써 매니페스트 파일 생성을 간소화합니다. 사용자가 CSV 파일을 생성합니다. 매니페스트 파일은 [다중 레이블 이미지 분류](getting-started.md#gs-multi-label-image-classification-example) 또는 [다중 레이블 이미지 분류](getting-started.md#gs-multi-label-image-classification-example) 용도에 적합합니다. 자세한 내용은 [객체, 장면 및 개념 찾기](understanding-custom-labels.md#tm-classification) 단원을 참조하십시오.

**참고**  
이 스크립트는 [객체 위치](understanding-custom-labels.md#tm-object-localization) 또는 [브랜드 위치](understanding-custom-labels.md#tm-brand-detection-localization)를 찾는 데 적합한 매니페스트 파일을 생성하지 않습니다.

매니페스트 파일은 모델 학습에 사용되는 이미지를 설명합니다. 이미지 위치와 이미지에 지정된 레이블을 예로 들 수 있습니다. 매니페스트 파일은 하나 이상의 JSON 라인으로 구성됩니다. 각 JSON 라인은 단일 이미지를 설명합니다. 자세한 내용은 [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md) 단원을 참조하십시오.

CSV 파일은 텍스트 파일의 여러 행에 대한 표 형식 데이터를 나타냅니다. 행의 필드는 쉼표로 구분합니다. 자세한 내용은 [comma separated values](https://en.wikipedia.org/wiki/Comma-separated_values)를 참조하세요. 이 스크립트에서 CSV 파일의 각 행은 단일 이미지를 나타내며 매니페스트 파일의 JSON 라인에 매핑됩니다. [다중 레이블 이미지 분류](getting-started.md#gs-multi-label-image-classification-example)를 지원하는 매니페스트 파일의 CSV 파일을 만들려면 각 행에 하나 이상의 이미지 수준 레이블을 추가하세요. [이미지 분류](getting-started.md#gs-image-classification-example)에 적합한 매니페스트 파일을 만들려면 각 행에 단일 이미지 수준 레이블을 추가하세요.

예를 들어, 다음 CSV 파일은 [다중 레이블 이미지 분류](getting-started.md#gs-multi-label-image-classification-example)(꽃) 시작하기** 프로젝트의 이미지를 설명합니다.

```
camellia1.jpg,camellia,with_leaves
camellia2.jpg,camellia,with_leaves
camellia3.jpg,camellia,without_leaves
helleborus1.jpg,helleborus,without_leaves,not_fully_grown
helleborus2.jpg,helleborus,with_leaves,fully_grown
helleborus3.jpg,helleborus,with_leaves,fully_grown
jonquil1.jpg,jonquil,with_leaves
jonquil2.jpg,jonquil,with_leaves
jonquil3.jpg,jonquil,with_leaves
jonquil4.jpg,jonquil,without_leaves
mauve_honey_myrtle1.jpg,mauve_honey_myrtle,without_leaves
mauve_honey_myrtle2.jpg,mauve_honey_myrtle,with_leaves
mauve_honey_myrtle3.jpg,mauve_honey_myrtle,with_leaves
mediterranean_spurge1.jpg,mediterranean_spurge,with_leaves
mediterranean_spurge2.jpg,mediterranean_spurge,without_leaves
```

스크립트는 각 행에 대해 JSON 라인을 생성합니다. 예를 들어, 다음은 첫 번째 행(`camellia1.jpg,camellia,with_leaves`)의 JSON 라인입니다.

```
{"source-ref": "s3://bucket/flowers/train/camellia1.jpg","camellia": 1,"camellia-metadata":{"confidence": 1,"job-name": "labeling-job/camellia","class-name": "camellia","human-annotated": "yes","creation-date": "2022-01-21T14:21:05","type": "groundtruth/image-classification"},"with_leaves": 1,"with_leaves-metadata":{"confidence": 1,"job-name": "labeling-job/with_leaves","class-name": "with_leaves","human-annotated": "yes","creation-date": "2022-01-21T14:21:05","type": "groundtruth/image-classification"}}
```

예제 CSV에는 이미지에 대한 Amazon S3 경로가 없습니다. CSV 파일에 이미지의 Amazon S3 경로가 포함되어 있지 않은 경우 `--s3_path` 명령줄 인수를 사용하여 이미지에 대한 Amazon S3 경로를 지정하세요.

스크립트는 각 이미지의 첫 번째 항목을 중복 제거된 이미지 CSV 파일에 기록합니다. 중복 제거된 이미지 CSV 파일에는 입력 CSV 파일에 있는 각 이미지의 단일 인스턴스가 포함됩니다. 입력 CSV 파일에서 이미지가 추가로 나타나는 경우 중복 이미지 CSV 파일에 기록됩니다. 스크립트가 중복된 이미지를 발견하면 중복 이미지 CSV 파일을 검토하고 필요에 따라 중복 제거된 이미지 CSV 파일을 업데이트하세요. 중복 제거된 파일을 사용하여 스크립트를 다시 실행합니다. 입력 CSV 파일에 중복이 없는 경우 스크립트는 중복 제거된 이미지 CSV 파일과 중복 이미지 CSV 파일이 비어 있으므로 해당 파일을 삭제합니다.

 이 절차에서 사용자는 CSV 파일을 만들고 Python 스크립트를 실행하여 매니페스트 파일을 만듭니다.

**CSV 파일에서 매니페스트 파일을 생성하려면**

1. 각 행에 다음 필드를 포함하는 CSV 파일을 생성합니다 (이미지당 한 행). CSV 파일에 헤더 행을 추가하지 마세요.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/ex-csv-manifest.html)

   예: `camellia1.jpg,camellia,with_leaves` 또는 `s3://my-bucket/flowers/train/camellia1.jpg,camellia,with_leaves` 

1. CSV 파일을 저장합니다.

1. 다음 Python 스크립트를 실행합니다. 다음 인수를 제공하세요.
   + `csv_file`: 1단계에서 생성한 CSV 파일 
   + `manifest_file`: 생성할 매니페스트 파일의 이름
   + (선택 사항)`--s3_path s3://path_to_folder/`: 이미지 파일 이름에 추가할 Amazon S3 경로(필드 1) 필드 1의 이미지에 아직 S3 경로가 포함되어 있지 않은 경우 `--s3_path`를 사용합니다.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier:  Apache-2.0
   
   from datetime import datetime, timezone
   import argparse
   import logging
   import csv
   import os
   import json
   
   """
   Purpose
   Amazon Rekognition Custom Labels model example used in the service documentation.
   Shows how to create an image-level (classification) manifest file from a CSV file.
   You can specify multiple image level labels per image.
   CSV file format is
   image,label,label,..
   If necessary, use the bucket argument to specify the S3 bucket folder for the images.
   https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/md-gt-cl-transform.html
   """
   
   logger = logging.getLogger(__name__)
   
   
   def check_duplicates(csv_file, deduplicated_file, duplicates_file):
       """
       Checks for duplicate images in a CSV file. If duplicate images
       are found, deduplicated_file is the deduplicated CSV file - only the first
       occurence of a duplicate is recorded. Other duplicates are recorded in duplicates_file.
       :param csv_file: The source CSV file.
       :param deduplicated_file: The deduplicated CSV file to create. If no duplicates are found
       this file is removed.
       :param duplicates_file: The duplicate images CSV file to create. If no duplicates are found
       this file is removed.
       :return: True if duplicates are found, otherwise false.
       """
   
       logger.info("Deduplicating %s", csv_file)
   
       duplicates_found = False
   
       # Find duplicates.
       with open(csv_file, 'r', newline='', encoding="UTF-8") as f,\
               open(deduplicated_file, 'w', encoding="UTF-8") as dedup,\
               open(duplicates_file, 'w', encoding="UTF-8") as duplicates:
   
           reader = csv.reader(f, delimiter=',')
           dedup_writer = csv.writer(dedup)
           duplicates_writer = csv.writer(duplicates)
   
           entries = set()
           for row in reader:
               # Skip empty lines.
               if not ''.join(row).strip():
                   continue
   
               key = row[0]
               if key not in entries:
                   dedup_writer.writerow(row)
                   entries.add(key)
               else:
                   duplicates_writer.writerow(row)
                   duplicates_found = True
   
       if duplicates_found:
           logger.info("Duplicates found check %s", duplicates_file)
   
       else:
           os.remove(duplicates_file)
           os.remove(deduplicated_file)
   
       return duplicates_found
   
   
   def create_manifest_file(csv_file, manifest_file, s3_path):
       """
       Reads a CSV file and creates a Custom Labels classification manifest file.
       :param csv_file: The source CSV file.
       :param manifest_file: The name of the manifest file to create.
       :param s3_path: The S3 path to the folder that contains the images.
       """
       logger.info("Processing CSV file %s", csv_file)
   
       image_count = 0
       label_count = 0
   
       with open(csv_file, newline='', encoding="UTF-8") as csvfile,\
               open(manifest_file, "w", encoding="UTF-8") as output_file:
   
           image_classifications = csv.reader(
               csvfile, delimiter=',', quotechar='|')
   
           # Process each row (image) in CSV file.
           for row in image_classifications:
               source_ref = str(s3_path)+row[0]
   
               image_count += 1
   
               # Create JSON for image source ref.
               json_line = {}
               json_line['source-ref'] = source_ref
   
               # Process each image level label.
               for index in range(1, len(row)):
                   image_level_label = row[index]
   
                   # Skip empty columns.
                   if image_level_label == '':
                       continue
                   label_count += 1
   
                  # Create the JSON line metadata.
                   json_line[image_level_label] = 1
                   metadata = {}
                   metadata['confidence'] = 1
                   metadata['job-name'] = 'labeling-job/' + image_level_label
                   metadata['class-name'] = image_level_label
                   metadata['human-annotated'] = "yes"
                   metadata['creation-date'] = \
                       datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')
                   metadata['type'] = "groundtruth/image-classification"
   
                   json_line[f'{image_level_label}-metadata'] = metadata
   
                   # Write the image JSON Line.
               output_file.write(json.dumps(json_line))
               output_file.write('\n')
   
       output_file.close()
       logger.info("Finished creating manifest file %s\nImages: %s\nLabels: %s",
                   manifest_file, image_count, label_count)
   
       return image_count, label_count
   
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "csv_file", help="The CSV file that you want to process."
       )
   
       parser.add_argument(
           "--s3_path", help="The S3 bucket and folder path for the images."
           " If not supplied, column 1 is assumed to include the S3 path.", required=False
       )
   
   
   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()
   
           s3_path = args.s3_path
           if s3_path is None:
               s3_path = ''
   
           # Create file names.
           csv_file = args.csv_file
           file_name = os.path.splitext(csv_file)[0]
           manifest_file = f'{file_name}.manifest'
           duplicates_file = f'{file_name}-duplicates.csv'
           deduplicated_file = f'{file_name}-deduplicated.csv'
   
           # Create manifest file, if there are no duplicate images.
           if check_duplicates(csv_file, deduplicated_file, duplicates_file):
               print(f"Duplicates found. Use {duplicates_file} to view duplicates "
                     f"and then update {deduplicated_file}. ")
               print(f"{deduplicated_file} contains the first occurence of a duplicate. "
                     "Update as necessary with the correct label information.")
               print(f"Re-run the script with {deduplicated_file}")
           else:
               print("No duplicates found. Creating manifest file.")
   
               image_count, label_count = create_manifest_file(csv_file,
                                                               manifest_file,
                                                               s3_path)
   
               print(f"Finished creating manifest file: {manifest_file} \n"
                     f"Images: {image_count}\nLabels: {label_count}")
   
       except FileNotFoundError as err:
           logger.exception("File not found: %s", err)
           print(f"File not found: {err}. Check your input CSV file.")
   
   
   if __name__ == "__main__":
       main()
   ```

1. 테스트 데이터 세트를 사용하려는 경우 1\$13단계를 반복하여 테스트 데이터 세트의 매니페스트 파일을 생성하세요.

1. 필요한 경우 CSV 파일의 열 1에서 지정한(또는 `--s3_path` 명령줄에서 지정한) Amazon S3 버킷 경로에 이미지를 복사합니다. 다음 AWS S3 명령을 사용할 수 있습니다.

   ```
   aws s3 cp --recursive your-local-folder s3://your-target-S3-location
   ```

1. 매니페스트 파일을 저장하는 데 사용할 Amazon S3 버킷에 [매니페스트 파일을 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)합니다.
**참고**  
Amazon Rekognition Custom Labels가 매니페스트 파일 JSON 라인의 `source-ref` 필드에서 참조되는 Amazon S3 버킷에 액세스할 수 있는지 확인하세요. 자세한 내용은 [외부 Amazon S3 버킷에 액세스](su-console-policy.md#su-external-buckets) 단원을 참조하십시오. Ground Truth 작업이 Amazon Rekognition Custom Labels 콘솔 버킷에 이미지를 저장하는 경우 권한을 추가할 필요가 없습니다.

1. [SageMaker AI Ground Truth 매니페스트 파일을 사용하여 데이터 세트 생성(콘솔)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console)의 지침에 따라 업로드된 매니페스트 파일로 데이터 세트를 생성하세요. 8단계로 **.manifest 파일 위치**에 매니페스트 파일의 위치로 사용할 Amazon S3 URL을 입력합니다. AWS SDK를 사용하고 있다면 [SageMaker AI Ground Truth 매니페스트 파일(SDK)을 사용하여 데이터 세트 생성](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk) 항목을 수행하세요.

# 기존 데이터세트에서 콘텐츠 복사
<a name="md-create-dataset-existing-dataset"></a>

이전에 데이터 세트를 만든 경우 해당 콘텐츠를 새 데이터 세트에 복사할 수 있습니다. AWS SDK를 사용하여 기존 데이터 세트에서 데이터 세트를 생성하려면 섹션을 참조하세요[기존 데이터 세트를 사용하여 데이터 세트 생성(SDK)](md-create-dataset-existing-dataset-sdk.md).

**기존 Amazon Rekognition Custom Labels 데이터 세트를 사용하여 데이터 세트를 생성하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 데이터 세트에 추가하려는 프로젝트를 선택합니다. 프로젝트 세부 정보 페이지가 열립니다.

1. **데이터 세트 생성**을 선택합니다. **데이터 세트 생성** 페이지가 표시됩니다.

1. **시작 구성**에서 **단일 데이터 세트로 시작** 또는 **훈련 데이터 세트로 시작**을 선택합니다. 더 높은 품질의 모델을 만들려면 별도의 훈련 및 테스트 데이터 세트로 시작하는 것이 좋습니다.

------
#### [ Single dataset ]

   1. **훈련 데이터 세트 세부 정보** 섹션에서 **기존 Amazon Rekognition Custom Labels 데이터 세트 복사**를 선택합니다.

   1. **훈련 데이터 세트 세부 정보** 섹션의 **데이터 세트** 편집 상자에서 복사하려는 데이터 세트의 이름을 입력하거나 선택합니다.

   1. **데이터 세트 생성**을 선택합니다. 프로젝트의 데이터 세트 페이지가 열립니다.

------
#### [ Separate training and test datasets ]

   1. **훈련 데이터 세트 세부 정보** 항목에서 **기존 Amazon Rekognition Custom Labels 데이터 세트 복사**를 선택합니다.

   1. **훈련 데이터 세트 세부 정보** 항목의 **데이터 세트** 편집 상자에서 복사하려는 데이터 세트의 이름을 입력하거나 선택합니다.

   1. **테스트 데이터 세트 세부 정보** 항목에서 **기존 Amazon Rekognition Custom Labels 데이터 세트 복사**를 선택합니다.

   1. **테스트 데이터 세트 세부 정보** 항목의 **데이터 세트** 편집 상자에서 복사하려는 데이터 세트의 이름을 입력하거나 선택합니다.
**참고**  
훈련 데이터 세트와 테스트 데이터 세트에는 서로 다른 이미지 소스가 있을 수 있습니다.

   1. **데이터 세트 생성**을 선택합니다. 프로젝트의 데이터 세트 페이지가 열립니다.

------

1. 레이블을 추가하거나 변경해야 하면 [이미지 레이블 지정](md-labeling-images.md) 항목을 수행합니다.

1. [모델 훈련(콘솔)](training-model.md#tm-console)에 나온 단계에 따라 모델을 훈련하세요.

# 이미지 레이블 지정
<a name="md-labeling-images"></a>

레이블은 이미지에서 객체, 장면, 개념 또는 객체 주위의 경계 상자를 식별합니다. 예를 들어 데이터 세트에 개 이미지가 포함된 경우 개 품종에 대한 레이블을 추가할 수 있습니다.

이미지를 데이터 세트로 가져온 후 이미지에 레이블을 추가하거나 레이블이 잘못된 이미지를 수정해야 할 수 있습니다. 예를 들어 로컬 컴퓨터에서 가져온 이미지는 레이블이 지정되지 않습니다. 데이터 세트 갤러리를 사용하여 데이터 세트에 새 레이블을 추가하고 데이터 세트의 이미지에 레이블과 경계 상자를 지정합니다.

데이터 세트의 이미지에 레이블을 지정하는 방식에 따라 Amazon Rekognition Custom Labels가 훈련하는 모델 유형이 결정됩니다. 자세한 내용은 [데이터 세트 목적 설정](md-dataset-purpose.md) 단원을 참조하십시오.

**Topics**
+ [레이블 관리](md-labels.md)
+ [이미지에 이미지 수준 레이블 지정](md-assign-image-level-labels.md)
+ [경계 상자로 객체에 레이블 지정](md-localize-objects.md)

# 레이블 관리
<a name="md-labels"></a>

Amazon Rekognition Custom Labels 콘솔을 사용하여 레이블을 관리할 수 있습니다. 레이블 관리를 위한 특정 API는 없습니다. 레이블은 `CreateDataset`로 데이터 세트를 생성하거나 `UpdateDatasetEntries`로 데이터 세트에 이미지를 더 추가할 때 데이터 세트에 추가됩니다.

**Topics**
+ [레이블 관리(콘솔)](#md-labels-console)
+ [레이블 관리(SDK)](#md-labels-sdk)

## 레이블 관리(콘솔)
<a name="md-labels-console"></a>

Amazon Rekognition Custom Labels 콘솔을 사용하여 데이터 세트에 레이블을 추가, 변경 또는 제거할 수 있습니다. 데이터 세트에 레이블을 추가하려면 새로 만든 레이블을 추가하거나 Rekognition의 기존 데이터 세트에서 레이블을 가져올 수 있습니다.

**Topics**
+ [새 레이블 추가(콘솔)](#md-add-new-labels)
+ [레이블 변경 및 제거(콘솔)](#md-edit-labels-after-adding)

### 새 레이블 추가(콘솔)
<a name="md-add-new-labels"></a>

데이터 세트에 추가하려는 새 레이블을 지정할 수 있습니다.

#### 편집 창을 사용하여 레이블을 추가합니다.
<a name="add-with-modal"></a>

**새 레이블을 추가하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 사용할 프로젝트를 선택합니다. 프로젝트의 세부 정보 페이지가 표시됩니다.

1. 훈련 데이터 세트에 레이블을 추가하려면 **훈련** 탭을 선택합니다. 그렇지 않으면 **테스트** 탭을 선택하여 테스트 데이터 세트에 레이블을 추가하세요.

1. **레이블 지정 시작**을 선택하여 레이블 지정 모드로 전환합니다.

1. 데이터 세트 갤러리의 **레이블** 항목에서 **레이블 관리**를 선택하여 **레이블 관리** 대화 상자를 엽니다.

1. 편집 상자에 새 레이블 이름을 입력합니다.

1. **레이블 추가**를 선택합니다.

1. 필요한 레이블을 모두 만들 때까지 9단계와 10단계를 반복합니다.

1. **저장**을 선택하여 추가한 레이블을 저장합니다.

### 레이블 변경 및 제거(콘솔)
<a name="md-edit-labels-after-adding"></a>

데이터 세트에 레이블을 추가한 후 이름을 바꾸거나 레이블을 제거할 수 있습니다. 이미지에 지정되지 않은 레이블만 제거할 수 있습니다.

**기존 레이블의 이름을 바꾸거나 제거하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 사용할 프로젝트를 선택합니다. 프로젝트의 세부 정보 페이지가 표시됩니다.

1. 훈련 데이터 세트에 레이블을 변경하거나 삭제하려면 **훈련** 탭을 선택합니다. 그렇지 않으면 **테스트** 탭을 선택하여 테스트 데이터 세트의 레이블을 변경하거나 삭제할 수 있습니다.

1. **레이블 지정 시작**을 선택하여 레이블 지정 모드로 전환합니다.

1. 데이터 세트 갤러리의 **레이블** 항목에서 **레이블 관리**를 선택하여 **레이블 관리** 대화 상자를 엽니다.

1. 편집 또는 삭제할 레이블을 선택합니다.  
![\[변경 사항을 저장하거나 취소할 수 있는 옵션과 함께 새 레이블을 추가하는 텍스트 필드와 “test”라는 기존 레이블을 보여주는 레이블 관리 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/change-delete-label.jpg)

   1. 삭제 아이콘(X)을 선택하면 목록에서 레이블이 제거됩니다.

   1. 레이블을 변경하려면 편집 아이콘(연필과 종이 패드)을 선택하고 편집 상자에 새 레이블 이름을 입력합니다.

1. **저장**을 선택하여 변경 사항을 저장합니다.

## 레이블 관리(SDK)
<a name="md-labels-sdk"></a>

데이터 세트 레이블을 관리하는 고유한 API는 없습니다. `CreateDataset`로 데이터 세트를 생성하면 매니페스트 파일 또는 복사된 데이터 세트에 있는 레이블이 초기 레이블 세트를 생성합니다. `UpdateDatasetEntries` API를 사용하여 이미지를 더 추가하면 항목에 있는 새 레이블이 데이터 세트에 추가됩니다. 자세한 내용은 [더 많은 이미지 추가(SDK)](md-add-images.md#md-add-images-sdk) 단원을 참조하십시오. 데이터 세트에서 레이블을 삭제하려면 데이터 세트에서 모든 레이블 주석을 제거해야 합니다.

**데이터 세트에서 레이블을 삭제하려면**

1. `ListDatasetEntries`를 직접 호출하여 데이터 세트 항목을 가져옵니다. 예제 코드는 [데이터 세트 항목 나열(SDK)](md-listing-dataset-entries-sdk.md) 항목을 참조하세요.

1. 파일에서 모든 레이블 주석을 제거합니다. 자세한 정보는 [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md) 및 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 섹션을 참조하세요.

1. 파일을 사용하여 `UpdateDatasetEntries` API로 데이터 세트를 업데이트하세요. 자세한 내용은 [더 많은 이미지 추가(SDK)](md-add-images.md#md-add-images-sdk) 단원을 참조하십시오.

# 이미지에 이미지 수준 레이블 지정
<a name="md-assign-image-level-labels"></a>

이미지 수준 레이블을 사용하여 이미지를 카테고리로 분류하는 모델을 훈련할 수 있습니다. 이미지 수준 레이블은 이미지에 객체, 장면 또는 개념이 포함되어 있음을 나타냅니다. 예를 들어 다음 이미지에는 강이 있습니다. 모델이 이미지를 강을 포함하는 것으로 분류하는 경우 강** 이미지 수준 레이블을 추가합니다. 자세한 내용은 [데이터 세트 목적 설정](md-dataset-purpose.md) 단원을 참조하십시오.

![\[일몰 또는 일출 시 구름과 산이 반사되어 비치는 잔잔한 호수입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/pateros.jpg)


이미지 수준 레이블이 포함된 데이터 세트에는 레이블이 두 개 이상 정의되어 있어야 합니다. 각 이미지에는 이미지의 객체, 장면 또는 개념을 식별하는 레이블이 하나 이상 지정되어야 합니다.

**이미지에 이미지 수준 레이블을 지정하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 사용할 프로젝트를 선택합니다. 프로젝트의 세부 정보 페이지가 표시됩니다.

1. 왼쪽 탐색 창에서 **데이터 세트**를 선택합니다.

1. 훈련 데이터 세트에 레이블을 추가하려면 **훈련** 탭을 선택합니다. 그렇지 않으면 **테스트** 탭을 선택하여 테스트 데이터 세트에 레이블을 추가하세요.

1. **레이블 지정 시작**을 선택하여 레이블 지정 모드로 전환합니다.

1. 이미지 갤러리에서 레이블을 추가할 이미지를 하나 이상 선택합니다. 한 번에 하나의 페이지에 있는 이미지만 선택할 수 있습니다. 한 페이지에서 연속된 이미지 범위를 선택하려면:

   1. 범위에 있는 첫 번째 이미지를 선택합니다.

   1. Shift 키를 길게 누릅니다.

   1. 마지막 이미지 범위를 선택합니다. 첫 번째 이미지와 두 번째 이미지 사이의 이미지도 선택됩니다.

   1. Shift 키를 놓습니다.

1. **이미지 수준 레이블 지정**을 선택합니다.

1. **선택한 이미지에 이미지 수준 레이블 지정** 대화 상자에서 이미지에 할당하려는 레이블을 선택합니다.

1. **지정**을 선택하여 이미지에 레이블을 지정합니다.

1. 모든 이미지에 필요한 레이블이 주석으로 달릴 때까지 레이블 지정을 반복합니다.

1. 변경 사항을 저장하려면 **변경 사항 저장**을 선택합니다.

## 이미지 수준 레이블 지정(SDK)
<a name="md-assign-image-level-labels-sdk"></a>

`UpdateDatasetEntries` API를 사용하여 이미지에 할당된 이미지 수준 레이블을 추가하거나 업데이트할 수 있습니다. `UpdateDatasetEntries`는 하나 이상의 JSON 라인을 사용합니다. 각 JSON 라인은 하나의 이미지를 나타냅니다. 이미지 수준 레이블이 있는 이미지의 경우 JSON 라인은 다음과 비슷합니다.

```
{"source-ref":"s3://custom-labels-console-us-east-1-nnnnnnnnnn/gt-job/manifest/IMG_1133.png","TestCLConsoleBucket":0,"TestCLConsoleBucket-metadata":{"confidence":0.95,"job-name":"labeling-job/testclconsolebucket","class-name":"Echo Dot","human-annotated":"yes","creation-date":"2020-04-15T20:17:23.433061","type":"groundtruth/image-classification"}}
```

`source-ref` 필드는 이미지 위치를 나타냅니다. JSON 라인에는 이미지에 지정된 이미지 수준 레이블도 포함됩니다. 자세한 내용은 [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md) 단원을 참조하십시오.

**이미지에 이미지 수준 레이블을 지정하려면**

1. `ListDatasetEntries`를 사용하여 기존 이미지의 get JSON 라인을 가져옵니다. `source-ref` 필드에 레이블을 지정하려는 이미지의 위치를 지정합니다. 자세한 내용은 [데이터 세트 항목 나열(SDK)](md-listing-dataset-entries-sdk.md) 단원을 참조하십시오.

1. [매니페스트 파일의 이미지 수준 레이블 가져오기](md-create-manifest-file-classification.md)의 정보를 사용하여 이전 단계에서 반환된 JSON 라인을 업데이트하세요.

1. 이미지를 업데이트하려면 `UpdateDatasetEntries`를 직접 호출하세요. 자세한 내용은 [데이터 세트에 더 많은 이미지 추가](md-add-images.md) 단원을 참조하십시오.

# 경계 상자로 객체에 레이블 지정
<a name="md-localize-objects"></a>

모델이 이미지 내 객체의 위치를 감지하도록 하려면 객체가 무엇이고 이미지 내 어디에 있는지 식별해야 합니다. 경계 상자는 이미지에서 객체를 분리하는 상자입니다. 경계 상자를 사용하여 동일한 이미지에서 서로 다른 객체를 감지하도록 모델을 훈련할 수 있습니다. 경계 상자에 레이블을 지정하여 객체를 식별합니다.

**참고**  
이미지 수준 레이블로 객체, 장면, 개념을 찾도록 모델을 훈련하는 경우에는 이 단계를 수행할 필요가 없습니다.

예를 들어 Amazon Echo Dot 디바이스를 탐지하는 모델을 훈련하려면 이미지의 각 Echo Dot** 주위에 경계 상자를 그리고 Echo Dot이라는 레이블을 경계 상자에 지정합니다. 다음 이미지는 Echo Dot 디바이스 주위의 경계 상자를 보여줍니다. 이미지에는 경계 상자가 없는 Amazon Echo도 포함되어 있습니다.

![\[Amazon Echo Dot 및 Echo 디바이스로, Echo Dot 주위에 경계 상자가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/dot.jpg)


## 경계 상자가 있는 객체 찾기(콘솔)
<a name="md-localize-objects-console"></a>

 이 절차에서는 콘솔을 사용하여 이미지의 객체 주위에 경계 상자를 그립니다. 경계 상자에 레이블을 지정하여 이미지 내의 객체를 식별할 수도 있습니다.

**참고**  
Safari 브라우저를 사용하여 이미지에 경계 상자를 추가할 수는 없습니다. 지원되는 브라우저에 대한 내용은 [Amazon Rekognition Custom Labels 설정](setting-up.md) 항목을 참조하세요.

경계 상자를 추가하려면 먼저 데이터 세트에 하나 이상의 레이블을 추가해야 합니다. 자세한 내용은 [새 레이블 추가(콘솔)](md-labels.md#md-add-new-labels) 단원을 참조하십시오.

****

**이미지에 경계 박스를 추가하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 사용할 프로젝트를 선택합니다. 프로젝트의 세부 정보 페이지가 표시됩니다.

1. 프로젝트 세부 정보 페이지에서 **레이블 이미지**를 선택합니다.

1. 훈련 데이터 세트 이미지에 경계 상자를 추가하려면 **훈련** 탭을 선택하세요. 그렇지 않으면 **테스트** 탭을 선택하여 테스트 데이터 세트 이미지에 경계 상자를 추가할 수 있습니다.

1. **레이블 지정 시작**을 선택하여 레이블 지정 모드로 전환합니다.

1. 이미지 갤러리에서 경계 상자를 추가할 이미지를 선택합니다.

1. **경계 상자 그리기**를 선택합니다. 경계 상자 편집기가 표시되기 전에 일련의 팁이 표시됩니다.

1. 오른쪽의 **레이블** 창에서 경계 상자에 지정할 레이블을 선택합니다.

1. 그리기 도구에서 원하는 객체의 왼쪽 상단 영역에 포인터를 놓습니다.

1. 마우스 왼쪽 버튼을 누르고 객체 주위에 상자를 그립니다. 경계 상자를 객체에 최대한 가깝게 그리세요.

1. 마우스 버튼을 놓습니다. 경계 상자가 강조 표시됩니다.

1. 레이블을 지정할 이미지가 더 많으면 **다음**을 선택합니다. 그렇지 않으면 **완료**를 선택하여 레이블 지정을 마칩니다.  
![\[이미지 주위에 경계 상자를 그리는 UI로, 이미지는 목재 표면에 있는 Amazon Echo 및 Echo Dot 스마트 스피커입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/draw-bounding-box.png)

1. 객체가 포함된 각 이미지에 경계 상자를 만들 때까지 1\$17단계를 반복합니다.

1. 변경 사항을 저장하려면 **변경 사항 저장**을 선택합니다.

1. **종료**를 선택하여 레이블 지정 모드를 종료합니다.

## 경계 상자로 객체 찾기(SDK)
<a name="md-localize-objects-sdk"></a>

`UpdateDatasetEntries` API를 사용하여 이미지에 대한 객체 위치 정보를 추가하거나 업데이트할 수 있습니다. `UpdateDatasetEntries`는 하나 이상의 JSON 라인을 사용합니다. 각 JSON 라인은 하나의 이미지를 나타냅니다. 객체 위치 파악의 경우 JSON 라인은 다음과 유사합니다.

```
{"source-ref": "s3://bucket/images/IMG_1186.png", "bounding-box": {"image_size": [{"width": 640, "height": 480, "depth": 3}], "annotations": [{ "class_id": 1,	"top": 251,	"left": 399, "width": 155, "height": 101}, {"class_id": 0, "top": 65, "left": 86, "width": 220,	"height": 334}]}, "bounding-box-metadata": {"objects": [{ "confidence": 1}, {"confidence": 1}],	"class-map": {"0": "Echo",	"1": "Echo Dot"}, "type": "groundtruth/object-detection", "human-annotated": "yes",	"creation-date": "2013-11-18T02:53:27", "job-name": "my job"}}
```

`source-ref` 필드는 이미지 위치를 나타냅니다. JSON 라인에는 이미지의 각 객체에 대한 레이블이 지정된 경계 상자도 포함됩니다. 자세한 내용은 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 단원을 참조하십시오.

**이미지에 경계 상자를 지정하려면**

1. `ListDatasetEntries`를 사용하여 기존 이미지의 get JSON 라인을 가져옵니다. `source-ref` 필드에 이미지 수준 레이블을 지정할 이미지의 위치를 지정합니다. 자세한 내용은 [데이터 세트 항목 나열(SDK)](md-listing-dataset-entries-sdk.md) 단원을 참조하십시오.

1. [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md)의 정보를 사용하여 이전 단계에서 반환된 JSON 라인을 업데이트하세요.

1. 이미지를 업데이트하려면 `UpdateDatasetEntries`를 직접 호출하세요. 자세한 내용은 [데이터 세트에 더 많은 이미지 추가](md-add-images.md) 단원을 참조하십시오.

# 데이터 세트 디버깅
<a name="debugging-datasets"></a>

데이터 세트 생성 중에는 터미널 오류**와 비터미널 오류**라는 두 가지 유형의 오류가 발생할 수 있습니다. 터미널 오류로 인해 데이터 세트 생성 또는 업데이트가 중단될 수 있습니다. 비터미널 오류는 발생해도 데이터 세트 생성 또는 업데이트가 중단되지 않습니다.

**Topics**
+ [터미널 데이터세트 오류 디버깅](debugging-datasets-terminal-errors.md)
+ [비터미널 데이터세트 오류 디버깅](debugging-datasets-non-terminal-errors.md)

# 터미널 데이터세트 오류 디버깅
<a name="debugging-datasets-terminal-errors"></a>

 터미널 오류에는 두 가지 유형이 있습니다. 하나는 데이터 세트 생성에 실패하게 하는 파일 오류이고, 다른 하나는 Amazon Rekognition Custom Labels가 데이터 세트에서 제거하는 콘텐츠 오류입니다. 콘텐츠 오류가 너무 많으면 데이터 세트 생성이 실패합니다.

**Topics**
+ [터미널 파일 오류](#debugging-datasets-terminal-file-errors)
+ [터미널 콘텐츠 오류](#debugging-datasets-terminal-content-errors)

## 터미널 파일 오류
<a name="debugging-datasets-terminal-file-errors"></a>

다음은 파일 오류입니다. `DescribeDataset`를 직접 호출하고 `Status` 및 `StatusMessage` 필드를 확인하여 파일 오류에 대한 정보를 얻을 수 있습니다. 예제 코드는 [데이터 세트 설명(SDK)](md-describing-dataset-sdk.md) 항목을 참조하세요.
+ [ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT](#md-error-status-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT)
+ [ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE](#md-error-status-ERROR_MANIFEST_SIZE_TOO_LARGE).
+ [ERROR\$1MANIFEST\$1ROWS\$1EXCEEDS\$1MAXIMUM](#md-error-status-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM)
+ [ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET](#md-error-status-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET)
+ [ERROR\$1TOO\$1MANY\$1RECORDS\$1IN\$1ERROR](#md-error-status-ERROR_TOO_MANY_RECORDS_IN_ERROR)
+ [ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS](#md-error-status-ERROR_MANIFEST_TOO_MANY_LABELS)
+ [ERROR\$1INSUFFICIENT\$1IMAGES\$1PER\$1LABEL\$1FOR\$1DISTRIBUTE](#md-error-status-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_DISTRIBUTE)

### ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT
<a name="md-error-status-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT"></a>

매니페스트 파일 확장명 또는 콘텐츠가 유효하지 않습니다.

훈련 또는 테스트 매니페스트 파일에 파일 확장자가 없거나 해당 내용이 유효하지 않습니다.

**ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT** 오류를 수정하려면**
+ 훈련 매니페스트 파일과 테스트 매니페스트 파일 모두에서 다음과 같은 가능한 원인을 확인하세요.
  + 매니페스트 파일에 파일 확장명이 없습니다. 일반적으로 파일 확장자는 `.manifest`입니다.
  +  매니페스트 파일의 Amazon S3 버킷 또는 키를 찾을 수 없습니다.

### ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE
<a name="md-error-status-ERROR_MANIFEST_SIZE_TOO_LARGE"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_MANIFEST_SIZE_TOO_LARGE"></a>

매니페스트 파일 크기가 지원되는 최대 크기를 초과합니다.

훈련 또는 테스트 매니페스트 파일 크기(바이트)가 너무 큽니다. 자세한 내용은 [Amazon Rekognition Custom Labels 지침 및 할당량](limits.md) 단원을 참조하십시오. 매니페스트 파일은 최대 JSON 라인 수보다 적으면서도 최대 파일 크기를 초과할 수 있습니다.

Amazon Rekognition Custom Labels 콘솔로는 매니페스트 파일 크기가 지원되는 최대 크기를 초과합니다** 오류를 수정할 수 없습니다.

**ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE** 오류를 수정하려면**

1. 훈련 및 테스트 매니페스트 중에 어떤 것이 최대 파일 크기를 초과하는지 확인하세요.

1. 매니페스트 파일에서 너무 큰 JSON 라인 수를 줄이세요. 자세한 내용은 [매니페스트 파일 생성](md-create-manifest-file.md) 단원을 참조하십시오.

### ERROR\$1MANIFEST\$1ROWS\$1EXCEEDS\$1MAXIMUM
<a name="md-error-status-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

매니페스트 파일에 행이 너무 많습니다.

#### 추가 정보
<a name="md-error-description-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

매니페스트 파일의 JSON 라인 수(이미지 수)가 허용 한도보다 큽니다. 이미지 수준 모델과 객체 위치 모델의 한도는 다릅니다. 자세한 내용은 [Amazon Rekognition Custom Labels 지침 및 할당량](limits.md) 단원을 참조하십시오.

JSON 라인 수가 `ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM` 한도에 도달할 때까지 JSON 라인 오류가 검증됩니다.

Amazon Rekognition Custom Labels로는 `ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM` 오류를 수정할 수 없습니다.

**`ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM` 오류를 수정하려면**
+ 매니페스트에 있는 JSON 라인 수를 줄입니다. 자세한 내용은 [매니페스트 파일 생성](md-create-manifest-file.md) 단원을 참조하십시오.



### ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET
<a name="md-error-status-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET"></a>

S3 버킷 권한이 올바르지 않습니다.

Amazon Rekognition Custom Labels가 훈련 및 테스트 매니페스트 파일이 들어 있는 하나 이상의 버킷에 대한 권한이 없습니다.

Amazon Rekognition Custom Labels 콘솔로는 이 오류를 수정할 수 없습니다.

**ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET** 오류를 수정하려면**
+ 훈련 및 테스트 매니페스트가 포함된 버킷의 권한을 확인하세요. 자세한 내용은 [2단계: Amazon Rekognition Custom Labels 콘솔 권한 설정](su-console-policy.md) 단원을 참조하십시오.

### ERROR\$1TOO\$1MANY\$1RECORDS\$1IN\$1ERROR
<a name="md-error-status-ERROR_TOO_MANY_RECORDS_IN_ERROR"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_TOO_MANY_RECORDS_IN_ERROR"></a>

 매니페스트 파일에 터미널 오류가 너무 많습니다.

**`ERROR_TOO_MANY_RECORDS_IN_ERROR` 오류를 수정하려면**
+ 터미널 콘텐츠 오류가 있는 JSON 라인(이미지) 수를 줄이세요. 자세한 내용은 [터미널 매니페스트 콘텐츠 오류](tm-debugging-aggregate-errors.md) 단원을 참조하십시오.

Amazon Rekognition Custom Labels 콘솔로는 이 오류를 수정할 수 없습니다.

### ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS
<a name="md-error-status-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

매니페스트 파일에 레이블이 너무 많습니다.

##### 추가 정보
<a name="md-error-description-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

매니페스트(데이터 세트)의 고유 레이블 수가 허용된 한도를 초과했습니다. 훈련 데이터 세트를 분할하여 테스트 데이터 세트를 만드는 경우 분할 후 레이블 수가 결정됩니다.

**ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS 오류를 수정하려면(콘솔)**
+ 데이터 세트에서 레이블을 제거합니다. 자세한 내용은 [레이블 관리](md-labels.md) 단원을 참조하십시오. 데이터 세트의 이미지와 경계 상자에서 레이블이 자동으로 제거됩니다.



**ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS 오류를 수정하려면(JSON 라인)**
+ 이미지 수준 JSON 라인이 있는 매니페스트: 이미지에 하나의 레이블이 있는 경우 원하는 레이블을 사용하는 이미지의 JSON 라인을 제거하세요. JSON 라인에 여러 레이블이 포함된 경우 원하는 레이블의 JSON 객체만 제거하세요. 자세한 내용은 [이미지에 여러 이미지 수준 레이블 추가](md-create-manifest-file-classification.md#md-dataset-purpose-classification-multiple-labels) 단원을 참조하십시오.

  객체 위치가 있는 매니페스트 JSON 라인: 제거하려는 레이블의 경계 상자 및 관련 레이블 정보를 제거합니다. 원하는 레이블이 포함된 각 JSON 라인에 대해 이 작업을 수행하세요. `class-map` 배열과 `objects` 및 `annotations` 배열의 해당 객체를 레이블에서 제거해야 합니다. 자세한 내용은 [매니페스트 파일의 객체 위치 파악](md-create-manifest-file-object-detection.md) 단원을 참조하십시오.

### ERROR\$1INSUFFICIENT\$1IMAGES\$1PER\$1LABEL\$1FOR\$1DISTRIBUTE
<a name="md-error-status-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_DISTRIBUTE"></a>

#### 오류 메시지
<a name="md-error-message-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

매니페스트 파일에 레이블 지정된 이미지가 부족하여 데이터 세트를 배포할 수 없습니다.



Amazon Rekognition Custom Labels가 훈련 데이터 세트를 분할하여 테스트 데이터 세트를 생성할 때 데이터 세트 배포가 발생합니다. `DistributeDatasetEntries` API를 직접 호출하여 데이터 세트를 분할할 수도 있습니다.

**ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS** 오류를 수정하려면**
+ 훈련 데이터 세트에 레이블이 지정된 이미지를 더 추가하세요.

## 터미널 콘텐츠 오류
<a name="debugging-datasets-terminal-content-errors"></a>

다음은 터미널 콘텐츠 오류입니다. 데이터 세트를 생성하는 동안 터미널 콘텐츠 오류가 있는 이미지는 데이터 세트에서 제거됩니다. 해당 데이터 세트는 여전히 훈련에 사용할 수 있습니다. 콘텐츠 오류가 너무 많으면 데이터 세트 또는 업데이트가 실패합니다. 데이터 세트 작업과 관련된 터미널 콘텐츠 오류는 콘솔에 표시되지 않으며 `DescribeDataset` 또는 다른 API에서 반환되지 않습니다. 데이터 세트에서 이미지나 주석이 누락된 것을 발견하면 데이터 세트 매니페스트 파일에 다음과 같은 문제가 있는지 확인하세요.
+ JSON 라인 길이가 너무 깁니다. 최대 길이는 100,000자입니다.
+ JSON 라인에서 `source-ref` 값이 누락되었습니다.
+ JSON 라인의 `source-ref` 값 형식이 잘못되었습니다.
+ JSON 라인의 내용이 유효하지 않습니다.
+ `source-ref` 필드의 값이 두 번 이상 나타납니다. 데이터 세트에서 이미지는 한 번만 참조될 수 있습니다.

`source-ref` 필드에 대한 자세한 내용은 [매니페스트 파일 생성](md-create-manifest-file.md) 항목을 참조하세요.

# 비터미널 데이터세트 오류 디버깅
<a name="debugging-datasets-non-terminal-errors"></a>

다음은 데이터 세트 생성 또는 업데이트 중에 발생할 수 있는 비터미널 오류입니다. 이러한 오류는 전체 JSON 라인을 무효화하거나 JSON 라인 내의 주석을 무효화할 수 있습니다. JSON 라인에 오류가 있는 경우 훈련에 사용되지 않습니다. JSON 라인 내의 주석에 오류가 있는 경우에도 JSON 라인은 여전히 학습에 사용되지만 주석이 깨지지는 않습니다. JSON 라인에 관한 자세한 정보는 [매니페스트 파일 생성](md-create-manifest-file.md) 항목을 참조하세요.

콘솔에서 `ListDatasetEntries` API를 직접 호출하여 비터미널 오류에 액세스할 수 있습니다. 자세한 내용은 [데이터 세트 항목 나열(SDK)](md-listing-dataset-entries-sdk.md) 단원을 참조하십시오.

훈련 중에 다음과 같은 오류도 반환됩니다. 모델을 훈련하기 전에 이러한 오류를 수정하는 것이 좋습니다. 자세한 내용은 [비터미널 JSON 라인 검증 오류](tm-debugging-json-line-errors.md) 섹션을 참조하세요.
+ [ERROR\$1NO\$1LABEL\$1ATTRIBUTES](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_LABEL_ATTRIBUTES)
+ [ERROR\$1INVALID\$1LABEL\$1ATTRIBUTE\$1FORMAT](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_FORMAT)
+ [ERROR\$1INVALID\$1LABEL\$1ATTRIBUTE\$1METADATA\$1FORMAT](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_METADATA_FORMAT)
+ [ERROR\$1NO\$1VALID\$1LABEL\$1ATTRIBUTES](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_LABEL_ATTRIBUTES)
+ [ERROR\$1INVALID\$1BOUNDING\$1BOX](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_BOUNDING_BOX)
+ [ERROR\$1INVALID\$1IMAGE\$1DIMENSION](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_IMAGE_DIMENSION)
+ [ERROR\$1BOUNDING\$1BOX\$1TOO\$1SMALL](tm-debugging-json-line-errors.md#tm-error-ERROR_BOUNDING_BOX_TOO_SMALL)
+ [ERROR\$1NO\$1VALID\$1ANNOTATIONS](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_ANNOTATIONS)
+ [ERROR\$1MISSING\$1BOUNDING\$1BOX\$1CONFIDENCE](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_BOUNDING_BOX_CONFIDENCE)
+ [ERROR\$1MISSING\$1CLASS\$1MAP\$1ID](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_CLASS_MAP_ID)
+ [ERROR\$1TOO\$1MANY\$1BOUNDING\$1BOXES](tm-debugging-json-line-errors.md#tm-error-ERROR_TOO_MANY_BOUNDING_BOXES)
+ [ERROR\$1UNSUPTED\$1USE\$1CASE\$1TYPE](tm-debugging-json-line-errors.md#tm-error-ERROR_UNSUPPORTED_USE_CASE_TYPE)
+ [ERROR\$1INVALID\$1LABEL\$1NAME\$1LENGTH](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_NAME_LENGTH)

## 비터미널 오류에 액세스
<a name="debugging-dataset-access-non-terminal-errors"></a>

콘솔을 사용하여 데이터 세트에서 비터미널 오류가 있는 이미지를 찾을 수 있습니다. `ListDatasetEntries` API를 직접 호출하여 오류 메시지를 받을 수도 있습니다. 자세한 내용은 [데이터 세트 항목 나열(SDK)](md-listing-dataset-entries-sdk.md) 단원을 참조하십시오.

**비터미널 오류에 액세스하려면(콘솔)**

1. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)에서 Amazon Rekognition 콘솔을 엽니다.

1. **사용자 지정 레이블 사용**을 선택합니다.

1. **Get started**를 선택합니다.

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

1. **프로젝트** 페이지에서 사용할 프로젝트를 선택합니다. 프로젝트의 세부 정보 페이지가 표시됩니다.

1. 훈련 데이터 세트의 비터미널 오류를 보려면 **훈련** 탭을 선택하세요. 그렇지 않으면 **테스트** 탭을 선택하여 테스트 데이터 세트의 비터미널 오류를 확인할 수 있습니다.

1. 데이터 세트 갤러리의 **레이블** 항목에서 **오류**를 선택합니다. 데이터 세트 갤러리는 오류가 있는 이미지만 표시하도록 필터링됩니다.

1. 이미지 아래에 있는 **오류**를 선택하면 오류 코드를 확인할 수 있습니다. [비터미널 JSON 라인 검증 오류](tm-debugging-json-line-errors.md)의 정보를 사용하여 오류를 수정하세요.  
![\[‘데이터세트 레코드 오류’ 아래에 'ERROR_UNSUPPORTED_USE_CASE_TYPE' 및 'ERROR_NO_VALID_LABEL_ATTRIBUTES'가 표시된 오류 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/rekognition/latest/customlabels-dg/images/dataset-non-terminal-error.jpg)