본문 바로가기
공부/AWS

[AWS SageMaker] Ground Truth 사용해보기 (Private 작업자)

by haejang 2021. 7. 31.
728x90
728x90

 

0. SageMaker Ground Truth란?


  • ML을 위한 완전 관리형 데이터 레이블링 서비스
  • 레이블링 방식
    • Amazon Mechanical Turk : 쉽게 말해 외주 맡기는 일. 전 세계 500,000명 정도의 독립 계약자들에 온디맨드 24/7 방식 액세스를 제공한다고 함 (데이터가 민감하지 않아야 사용 가능)
    • Private 인력 : 직접 지정한 사람이 작업 (자체 직원 또는 계약자)
    • 공급업체 인력 : AWS Marketplace를 통해 전문적인 데이터 레이블 지정 서비스를 제공하는 제 3자 공급업체 목록에 액세스
    • 참고 : https://aws.amazon.com/ko/getting-started/hands-on/build-training-datasets-amazon-sagemaker-ground-truth/
  • 본 포스팅에서는 직접 레이블링을 하는 "Private 인력"을 사용

 

 

1. Dataset 준비 (S3)


 

이 사진들을 S3 버킷의 dataset 폴더에 업로드 해 두었다

* test demo이므로 대충 아무거나 10장만 쓰는 것이며, Auto Labeling을 사용하려면 적어도 1,250장의 데이터가 필요하다

 

 

 

2. Ground Truth Job 생성


AWS Console > SageMaker > Ground Truth > 레이블링 작업 > 레이블 지정 작업 생성

 

 

작업 이름과 입력 데이터 설정을 해 준다

 

 

데이터들이 있는 폴더와, 해당 버킷에 접근할 수 있는 새 IAM 역할도 만들어준 후, 데이터 설정을 완료하면 

 

 

입력 데이터세트가 바뀌어 있다 - 해당 폴더 내의 데이터들을 가리키는 manifest 파일이 자동으로 생성됨

해당 manifest 파일은 아래와 같다

 

 

그러고 작업 유형으로 내려와서, 이미지 > 경계 상자를 선택해 주었다 (본인 라벨링에 맞는 유형 선택)

 

 

그러고 Next로 넘어가서, 작업자 설정을 해 주자

 

 

내가 직접 작업할 것이기 때문에 프라이빗 설정에서 내 이메일을 적어놓았다

여기서 생성된 팀은 Cogniton에서 관리된다

 

추가적으로, 여기선 설정을 안하지만 설명을 하자면

  • 데이터 레이블 지정 자동화
    • 사실 Ground Truth를 사용하는 이유이자 목적이지만, 적어도 1,250개의 데이터가 있어야 사용 가능하기 때문에 여기선 사용하지 않는다 (아니 못한다...)
    • 참고로 활성화 시, 전체 데이터가 5,000개 미만이면 20%, 이상이면 10%의 라벨링 작업을 마쳐야지 Auto Labeling이 시작된다
    • https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/sms-automated-labeling.html
  • 데이터 세트 객체당 작업자 수
    • 말 그대로 데이터 한 장당 몇 명이 작업할 것이냐이다
    • 1로 설정해두면 한 데이터는 한명의 검수만 받으면 작업이 완료된다
    • 그러나 2 이상으로 설정해둔다면, 각 데이터는 설정된 수만큼의 검수를 받아야지만 작업 완료 상태가 된다

 

밑으로 내려가서 작업자가 작업할 수 있는 도구를 설정해준다

 

 

Good Example과 Bad Example 사진을 대충 만들고 이미지 URL을 만들어서 가이드 화면에 임베드 해주었고, 설명과 레이블 을 설정해두었다

오른쪽 상단 위의 미리보기를 누르면 작업자가 작업할 화면을 확인할 수 있다

 

 

설정한 레이블들이 오른쪽에 표시되며, 왼쪽 상단의 Instruction을 누르면 내가 설정한 가이드 화면이 나온다

 

이렇게까지 하고 생성을 누르면 Ground Truth Job 생성이 완료된다

 

 

생성이 모두 완료될 때 까지 좀만 기다려주자..

 

 

2. 라벨링 작업 하기 (Private)


이메일이 하나 도착했다

 

 

Private 작업자를 위한 임시 패스워드가 도착했다

 

AWS Console > SageMaker > Ground Truth > 레이블링 인력 > 프라이빗 > 레이블 지정 포탈 로그인 URL 

을 눌러서 로그인 후 작업자 화면으로 들어갈 수 있다

 

 

이메일과 임시 패스워드를 입력해주면 이렇게 새 비밀번호를 입력하라고 뜬다

 

 

비번까지 설정하면 아래와 같은 화면이 나온다

 

 

내게 할당된 작업들을 여기서 모두 확인할 수 있고, 특정 작업을 선택 후 Start Working을 눌러 시작할 수 있다

 

작업 화면

 

우측 상단 버튼들의 의미는 아래와 같다

공식 문서 : https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video-od-worker-instructions.html#sms-video-worker-instructions-skip-reject-od

  • Decline task (작업 거부) : 이미지가 잘못된 경우, 해당 이미지 거부
  • Release task (작업 해제) : 작업 자체를 해제함 - 다른 작업자들이 선택해서 작업할 수 있게 됨 (본인이 다시 선택 후 재작업 또한 가능)
  • Stop and resume later (작업 일시 정지) : 말 그대로 작업을 잠시 중지시킨 후, 다음에 이어서 할 수 있게 함

 

 

3장 작업하니까 이렇게 뜬다

끝까지 완료해보겠다

 

작업 끝!

 

 

작업이 완료되었다 - 출력 데이터 세트 위치로 가 보면 이런 폴더들이 만들어져 있다

 

 

manifest > output > output.manifest 파일을 확인해보면

 

 

이렇게 작업이 끝난 이미지들에 대한 정보가 적힌 manifest 파일이 있다

 

한 항목만 좀 자세히 봐보자면

{
	"source-ref":"s3://honglab-groundtruth/dataset/haejang 1.png",
	"honglab-gt-test1":{
		"image_size":[
			{"width":240,"height":240,"depth":3}
		],
		"annotations":[
			{"class_id":0,"top":114,"left":65,"height":10,"width":37},
			{"class_id":0,"top":118,"left":125,"height":10,"width":38},
			{"class_id":1,"top":148,"left":82,"height":15,"width":58},
			{"class_id":2,"top":53,"left":40,"height":44,"width":35},
			{"class_id":2,"top":62,"left":155,"height":39,"width":48}
		]
	},
	"honglab-gt-test1-metadata":{
		"objects":[
			{"confidence":0},
			{"confidence":0},
			{"confidence":0},
			{"confidence":0},
			{"confidence":0}
		],
		"class-map":{
			"0":"eye",
			"1":"mouth",
			"2":"ear"
		},
		"type":"groundtruth/object-detection",
		"human-annotated":"yes",
		"creation-date":"2021-07-31T13:24:26.831981",
		"job-name":"labeling-job/honglab-gt-test1"
	}
}

 

입력 manifest에 비해 많은 정보들이 생긴 걸 확인할 수 있다

이 파일을 가지고 다른 서비스들로 보내서 다양한 머신 러닝을 할 수 있을 것이다

 

작업이 완료되지 않고 중간에 중지를 시켜도 작업한 내용들에 대한 정보가 적힌 output.manifest 파일은 얻을 수 있으며, chain job(작업 연결)을 통해 이어서 중단되었던 job도 이어서 할 수 있다

참고 : https://docs.aws.amazon.com/sagemaker/latest/dg/sms-reusing-data.html

clone job(작업 복제)는 그냥 똑같은 job을 하나 더 만드는 것이다 (물론 속성 변경 가능)

 

참고로 작업 삭제는 불가능하다 (CLI로도 SDK로도 불가) 그저 과금을 막기 위한 중지만이 있을 뿐이다

 

끝!

 

 

728x90
728x90

댓글