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을 눌러 시작할 수 있다
우측 상단 버튼들의 의미는 아래와 같다
- 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로도 불가) 그저 과금을 막기 위한 중지만이 있을 뿐이다
끝!
'공부 > AWS' 카테고리의 다른 글
[AWS] Directory Service & WorkSpaces 생성하고 사용해보기 (0) | 2021.08.28 |
---|---|
[AWS S3] 다른 계정 간 S3 Bucket Sync (1) | 2021.08.13 |
[AWS] VPC - 관리형 접두사 목록(Managed Prefix list) (1) | 2021.07.27 |
[AWS] Linux EC2 기본 User Name 정리 (0) | 2021.07.20 |
[AWS] AWS EC2에 접속하는 방법 5가지 (SSH, RDP) (0) | 2021.07.19 |
댓글