시작하기 / 실습 / ...

기계 학습을 위한 훈련 데이터 레이블링

자습서

개요

이 자습서에서는 Amazon SageMaker Ground Truth에서 기계 학습(ML) 모델의 훈련 데이터에 주석을 추가하는 레이블링 작업을 설정하는 방법을 학습합니다. 

레이블링된 데이터 세트는 ML 모델의 지도 훈련에서 중요한 역할을 합니다. 방대한 데이터 세트가 있지만 데이터에 연결된 레이블이 없는 조직이 많습니다. Amazon SageMaker Ground Truth를 사용하면 데이터를 손쉽게 레이블링할 수 있습니다. 이 서비스는 Amazon Mechanical Turk, 서드 파티 공급업체 또는 자체 개인 인력을 통해 사람에게 주석 업무를 맡길 수 있는 옵션도 제공합니다. 

이 자습서에서는 SageMaker Ground Truth를 사용하여 항공기, 자동차, 선박, 헬리콥터 및 오토바이와 같은 교통 수단 이미지 세트를 레이블링합니다. 이 자습서에서는 민감하지 않은 데이터 세트를 사용하므로 Amazon Mechanical Turk 옵션을 사용합니다.

학습 목표

이 가이드에서는 다음을 수행합니다.

  • 데이터 레이블링 작업을 생성하고 구성
  • 레이블링 작업의 결과 검토

사전 요구 사항

이 가이드를 시작하기 전에 필요한 사항은 다음과 같습니다.

  • AWS 계정: 아직 계정이 없는 경우 환경 설정 시작하기 가이드를 간단히 참조하여 만들 수 있습니다. 

 AWS 경험

초보자

 소요 시간

30분

 완료 비용

이 자습서의 예상 비용은 SageMaker 요금을 참조하세요.

 필요 사항

AWS 계정에 로그인해야 합니다.

 사용 서비스

Amazon SageMaker Ground Truth

 최종 업데이트 날짜

2022년 7월 6일

구현

1단계: Amazon SageMaker 노트북 인스턴스 설정

AWS Console 검색 창에 SageMaker를 입력하고 Amazon SageMaker를 선택하여 SageMaker 콘솔을 엽니다.

왼쪽 탐색 창에서 ‘노트북(Notebook)’을 클릭합니다.  노트북 인스턴스(Notebook instances)를 선택한 다음 노트북 인스턴스 생성(Create notebook instance)을 선택합니다.

노트북 인스턴스 생성(Create notebook instance) 페이지의 노트북 인스턴스 설정(Notebook instance settings) 상자에서 노트북 인스턴스 이름(Notebook instance name)SageMaker-Ground-Truth-Tutorial을 입력합니다. 노트북 인스턴스 유형(Notebook instance type)에 대해 ml.t2.medium을 선택합니다. 

권한 및 암호화(Permissions and encryption) 섹션에서 IAM 역할(IAM role)에 대해 새 역할 생성(Create a new role)을 선택합니다. IAM 역할 생성(Create an IAM role) 대화 상자에서 모든 S3 버킷(Any S3 bucket)을 선택하고 역할 생성(Create role)을 선택합니다. 모범 사례로, 프로덕션 환경에서는 필요한 최소 권한을 가진 특정 IAM 역할로 S3 버킷 액세스를 제한합니다. 끝에 정리를 위해 이 역할 이름을 기록해 둡니다.

SageMaker가 AmazonSageMaker-ExecutionRole-<role-id> 역할을 생성합니다. 나머지 설정은 기본 설정을 그대로 유지하고 노트북 인스턴스 생성(Create notebook instance)을 선택합니다.

노트북 인스턴스(Notebook instances) 섹션에서 새로 생성된 SageMaker-Ground-Truth-Tutorial 노트북 인스턴스의 상태는 보류 중(Pending)으로 표시됩니다. 노트북이 준비되면 상태(Status)InService로 변경됩니다.

2단계: 레이블링 작업 생성

이 자습서에서 레이블링한 샘플 이미지는 공개적으로 사용 가능한 Caltech 101 데이터 세트(Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P. (2022). Caltech 101(버전 1.0)[데이터 세트]. CaltechDATA)에서 가져온 것이며 101 객체 범주의 사진을 포함합니다. 이 자습서에서는 자습서 비용을 최소화하기 위해 항공기, 자동차, 선박, 헬리콥터 및 오토바이라는 각 범주의 이미지가 2개씩 포함된 10개 이미지의 샘플 세트를 사용합니다. 그러나 이 자습서의 단계는 대규모 데이터 세트에 대한 레이블링 작업을 시작하는 단계와 동일합니다. 10개 이미지의 샘플 세트는 Amazon S3 버킷 sagemaker-sample-files에서 이미 사용할 수 있습니다.

이 단계에서는 SageMaker 노트북 인스턴스를 사용하여 sagemaker-sample-files S3 버킷의 샘플 이미지를 기본 S3 버킷 sagemaker-<your-Region>-<your-aws-account-id>에 업로드하는 python 코드를 작성합니다. SageMaker-Ground-Truth-Tutorial 노트북 인스턴스 상태가 InService로 변경되면 Jupyter 열기(Open Jupyter)를 선택합니다.

Jupyter Notebook에서 새로 만들기(New)에 대해 conda_python3를 선택합니다.

Untitled.ipynb를 클릭하여 노트북을 엽니다. Jupyter Notebook의 새 코드 셀에 다음 코드를 복사하여 붙여 넣고 셀을 실행합니다.

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

코드가 성공적으로 실행된 후 Amazon S3 콘솔을 열고 sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images 위치로 이동하여 10개 이미지가 업로드되었는지 확인합니다.

SageMaker 콘솔을 엽니다. 왼쪽 탐색 패널에서 Ground Truth, 레이블링 작업(Labeling jobs)을 차례로 선택합니다. 그런 다음 레이블링 작업 생성(Create labeling job)을 선택합니다.

작업 세부 정보 지정(Specify job details) 페이지의 작업 개요(Job overview)에서 작업 이름(Job name) 상자에 vehicle-labeling-demo를 입력합니다. 입력 데이터 설정(Input data setup)에서 자동화된 데이터 설정(Automated data setup)을 선택합니다. 

자동화된 데이터 설정을 사용하면 SageMaker Ground Truth 콘솔에서 Amazon S3에 저장된 이미지, 비디오, 비디오 프레임, 텍스트(.txt) 파일 및 쉼표로 구분된 값(.csv) 파일을 사용하여 레이블링 작업에 대한 매니페스트 파일을 생성할 수 있습니다. 자동화된 데이터 설정을 사용하는 경우 입력 데이터가 저장되는 Amazon S3 위치를 지정하고 입력 데이터 유형을 지정합니다. 그러면 SageMaker Ground Truth가 지정된 위치에서 해당 유형과 일치하는 파일을 찾습니다.

데이터 설정(Data setup) 섹션에서 입력 데이터 세트의 S3 위치(S3 location for input datasets)에 대해 S3 찾아보기(Browse S3)를 선택한 다음 S3 위치 s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images/(이전 단계에서 이미지를 업로드한 위치)를 선택합니다. 출력 데이터 세트의 S3 위치(S3 location for output datasets)에 대해 새 위치 지정(Specify a new location)을 선택합니다. 그런 다음 레이블링된 이미지를 저장할 경로를 지정합니다. s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/labeled-data/데이터 유형(Data type에 대해 이미지(Image)를 선택합니다. IAM 역할(IAM Role)에 대해 새 역할 생성(Create a new role)을 선택합니다. 또는 앞서 실행한 Jupyter Notebook의 인쇄 문에서 해당하는 값을 사용할 수도 있습니다.

IAM 역할 생성(Create an IAM role) 팝업에서 모든 S3 버킷(Any S3 bucket)을 선택한 다음 생성(Create)을 선택합니다.

SageMaker Ground Truth가 IAM 역할을 자동으로 생성하고 IAM 역할(IAM Role) 상자에 입력합니다. 데이터 설정 완료(Complete data setup)를 선택합니다. 입력 데이터 연결 성공(Input data connection was successful)이라는 확인 메시지가 나타납니다.

태스크 유형(Task type) 섹션에서 태스크 범주(Task category)에 대해 이미지(Image)를 선택합니다. 태스크 선택(Task selection)에 대해 이미지 분류(단일 레이블)(Image Classification (Single Label))을 선택하고 다음(Next)을 선택합니다.

작업자 선택 및 도구 구성(Select workers and configure tool) 페이지에서 작업자 유형(Worker types)에 대해 Amazon Mechanical Turk를 선택합니다.

데이터 세트에 성인 콘텐츠가 없습니다(The dataset does not contain adult content)을 선택합니다. 

Amazon Mechanical Turk 인력은 전 세계에 위치한 독립 계약업체로 구성되며 기밀 정보, 개인 정보 또는 개인 건강 정보를 이 인력과 공유해서는 안 된다는 것을 이해하고 이에 동의합니다(You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce)를 선택합니다.

 

이미지 분류(단일 레이블)(Image classification (Single Label)) 레이블링 도구 섹션에서 다음 정보를 입력합니다.

태스크의 간략한 설명(brief description of task)아래의 이미지와 가장 일치하는 레이블을 선택하세요(Please select the label that best matches the image below)를 입력합니다. 이미지당 1개 레이블만 선택할 수 있습니다.

옵션 선택(Select an option)에서 개별 상자에 항공기(Airplane), 자동차(Car), 선박(Ferry), 헬리콥터(Helicopter), 오토바이(Motorbike)라는 레이블을 입력합니다.

추가 지침(Additional instructions)을 확장하고 3단계에 다음 텍스트를 추가합니다. 단일 이미지에 다수의 교통 수단이 있는 경우 이미지에서 가장 두드러진 교통 수단을 선택하세요(If there are multiple vehicles in a single image, choose the most prominent vehicle in the image).

레이블 담당자에게 레이블링 도구가 어떻게 표시되는지 확인하려면 미리 보기(Preview)를 선택합니다. 

생성(Create)을 선택합니다.

새로운 vehicle-labeling-demo 레이블링 작업이 SageMaker 콘솔의 레이블링 작업(Labeling jobs) 섹션에 나열됩니다. 상태(Status)진행 중(In progress)이고 태스크 유형(Task type)이미지 분류(단일 레이블)(Image Classification (Single Label))입니다. 레이블링 작업은 완료하는 데 몇 분이 걸릴 수 있습니다. Amazon Mechanical Turk 공공 인력에 의한 데이터 레이블링이 완료되면 상태(Status)완료(Complete)로 변경됩니다.

3단계 - 레이블링 작업 결과 검토

레이블링 작업 결과 검토는 레이블링 품질을 평가하고 지침 및 데이터를 개선해야 할지 여부를 식별하는 데 중요합니다.

SageMaker 콘솔의 왼쪽 창에서 레이블링 작업(Labeling jobs)을 선택한 다음 vehicle-labeling-demo를 선택합니다.

 

vehicle-labeling-demo 세부 정보 페이지에서 레이블링된 데이터 세트 객체(Labeled dataset objects) 섹션은 데이터 세트 이미지의 섬네일을 해당하는 레이블을 캡션으로 사용하여 보여줍니다.

 

레이블링 작업의 전체 결과에 액세스하려면 레이블링 작업 요약(Labeling job summary) 섹션에서 출력 데이터 세트 위치(Output dataset location) 링크를 선택합니다.

매니페스트(manifests), 출력(output), output.manifest를 차례로 선택합니다.

 

열기(Open)를 선택하여 레이블링 결과를 JSON Lines 형식으로 다운로드합니다. JSON Lines는 각 줄이 유효한 JSON 값인 정형 데이터를 저장하는 데 사용되는 줄 바꿈으로 구분된 형식입니다.

 

output.manifest에는 다음 데이터가 포함됩니다. 

source-ref: 입력 매니페스트 파일에서 이미지 항목의 위치를 지정합니다. 2단계에서 자동화된 데이터 설정(Automated data setup)을 선택했으므로 이러한 항목 및 입력 매니페스트 파일은 Amazon SageMaker Ground Truth를 통해 자동으로 생성되었습니다.

vehicle-labeling-demo: 대상 레이블을 0 인덱싱 숫자 값으로 지정합니다. 이 예제의 처음 5개 이미지 클래스의 경우 레이블은 0, 1, 2, 3 및 4입니다.

vehicle-labeling-demo-metadata: 신뢰도 점수, 작업 이름, 레이블 문자열 이름(예: 항공기, 자동차, 선박, 헬리콥터 및 오토바이) 및 사람 또는 기계 주석(활성 학습)과 같은 레이블링 메타데이터를 지정합니다. 

output.manifest 파일을 구문 분석하여 이미지 분류와 같은 다운스트림 애플리케이션에 대한 레이블링된 데이터 세트를 생성할 수 있습니다. Amazon SageMaker에서 output.manifest 파일을 사용하여 모델을 훈련할 수 있는 방법에 대한 자세한 내용은 SageMaker Ground Truth로 레이블링된 데이터 세트를 사용하여 모델을 쉽게 훈련하기 블로그 게시물을 읽어보세요.

4단계: 리소스 정리

필요하지 않은 리소스를 삭제하여 의도하지 않은 비용이 부과되지 않도록 하는 것이 모범 사례입니다.

S3 버킷을 삭제하려면 다음을 수행합니다. 

  • Amazon S3 콘솔을 엽니다. 탐색 모음에서 버킷(Buckets), sagemaker-<your-Region>-<your-account-id>를 선택한 다음 ground-truth-demo 옆의 확인란을 선택합니다. 그런 다음 삭제(Delete)를 선택합니다. 
  • 객체 삭제(Delete objects) 대화 상자에서 삭제할 객체를 올바르게 선택했는지 확인하고 이 객체를 영구적으로 삭제(Permanently delete objects) 확인 입력란에 영구 삭제(permanently delete)를 입력합니다. 

AWS Console의 검색 창에 IAM을 입력하고 IAM을 선택하여 AWS IAM 콘솔을 엽니다. IAM 콘솔의 왼쪽 탐색 패널에서 역할(Roles)을 선택합니다. 이 자습서에서 사용한 IAM 역할을 검색하려면 검색 창에 Amazon을 입력합니다. 역할 이름(Role name) 아래에서 역할을 선택하고 삭제(Delete)를 선택합니다. 이 작업을 수행하려면 계정에 관리자 권한이 연결되어 있어야 합니다.

SageMaker 콘솔을 열려면 AWS Console 검색 창에 SageMaker를 입력하고 검색 결과에서 Amazon SageMaker를 선택합니다. SageMaker 콘솔의 왼쪽 창에서 노트북 인스턴스(Notebook instances)를 선택하고 SageMaker-Ground-Truth-Tutorial을 선택합니다. 작업(Actions)에 대해 중지(Stop)를 선택합니다.

인스턴스 상태가 중지됨(Stopped)으로 변경되면 작업(Actions)을 선택한 다음 삭제(Delete)를 선택합니다. 확인 팝업에서 삭제(Delete)를 선택합니다.

결론

축하합니다! 기계 학습을 위한 훈련 데이터 레이블링 자습서를 완료하셨습니다. 

이 자습서에서는 Amazon SageMaker Ground Truth 및 Amazon Mechanical Turk를 사용하여 기계 학습을 위한 훈련 데이터 세트를 구축했습니다. 

아래의 다음 단계 섹션에 따라 Amazon SageMaker를 통한 기계 학습 여정을 계속할 수 있습니다.

이 페이지의 내용이 도움이 되었습니까?

ML 모델을 자동으로 생성

AutoML을 사용하여 코드 작성 없이 ML 모델을 개발하는 방법을 알아봅니다.
다음 »

훈련된 모델 배포

추론을 위해 훈련된 ML 모델을 배포하는 방법을 알아봅니다.
다음 »

추가 실습 자습서 찾기

심화 학습을 위한 다른 기계 학습 자습서를 살펴봅니다.
다음 »