이미지 라벨링(Image Labeling), 노가다가 답일까?

MUSINSA tech
MUSINSA tech
Published in
13 min readMay 27, 2021

Amazon Sagemaker Ground Truth를 이용한 image labeling

안녕하세요. 무신사 데이터솔루션팀에서 데이터 분석 및 모델링 업무를 담당하고 있는 박지혜입니다.

무신사에는 하루 약 2만 건의 후기가 올라옵니다. 모든 후기는 적립금 지급을 위해 검수 작업을 직접 진행하고 있는데요. 데이터솔루션팀에서는 보다 효율적인 업무를 위해 후기 이미지를 자동 검수해주는 모델을 개발하고 있습니다.

이런 모델을 만들기 위해서는 많은 인풋 데이터가 필요하고, 이미지 라벨링(Image Labeling) 작업이 선행되어야 합니다. 이미지에 일일이 라벨을 붙일 생각을 하면, 자연스럽게 제목처럼 ‘노가다가 답일까?’라는 질문이 떠오르실 텐데요. 답부터 말씀드리면 노가다(?)는 피할 수 없습니다. 하지만 저희 팀에서 조금 더 효율적으로 작업할 수 있는 방법을 찾았고, 비슷한 고민을 하시는 다른 분들에게 도움이 되기를 바라며 글을 시작합니다.

후기 이미지 자동 검수란?

먼저 무신사에는 4가지 종류의 후기가 있습니다.

① 일반 후기: 20자 이상의 텍스트 후기

② 상품 사진 후기: 상품 사진을 첨부한 20자 이상의 텍스트 후기

③ 스타일 후기: 상품을 착용한 전신 사진을 첨부한 20자 이상의 텍스트 후기

④ 사이즈 추천: 성별, 키, 몸무게에 따라 사이즈가 어땠는지 선택하는 후기

고객이 후기를 등록하면 후기 작성 규정에 부합하는지 검수하고, 기준에 부합할 경우 소정의 적립금을 드리고 있습니다. 예를 들어 ‘상품 사진 후기’는 포장이 제거된 상태로 상품의 윤곽이 명확하게 나와야 하고, ‘스타일 후기’는 고객의 패션 스타일을 다른 고객이 참고할 수 있게 하는 것이 목적이기 때문에 상품을 착용하고 전신이 다 나와야 합니다.

여러 커뮤니티에서 이슈가 되었던 에어팟 스타일 후기. 보다 나은 서비스를 위해 상품 카테고리별 특성을 반영한 후기 유형들이 추가될 예정입니다.

무신사에 등록되는 후기는 일 평균 2만 건에 달합니다. 이 중 이미지가 첨부되는 상품 후기와 스타일 후기는 약 8천 건인데, 모두 담당자가 직접 검수하고 있습니다. 저희 팀에서는 효율적인 작업을 위해 ‘포장’, ‘신체 일부’, ‘전신’, ‘상품’ 등의 분류 기준을 세워놓고, 이미지를 이에 맞게 자동 분류하는 CNN(Convolutional Neural Network) 기반 모델을 만들고 있습니다.

이미지 라벨링 IMAGE LABELING

이런 모델을 만들기 위해서는 인풋 데이터가 무척 중요한데요. 단순히 이미지만 있으면 되는 것이 아니라 이미지와 그에 맞는 라벨이 붙어있어야 합니다. 그래서 사람이 수작업으로 이미지마다 라벨을 붙여주는 작업이 필요한데, 문제는 굉장한 시간과 노력이 필요하다는 것입니다.

처음에는 저도 디렉토리를 만들어 하나하나 보면서 옮겼습니다만, 진행하면서 2가지 문제가 발생했습니다.

  1. 귀찮다 (번거롭고 비효율적인 방식에 장시간 투입되어야 한다)
  2. 실수 가능성이 크다 (혼자 분류하면 잘못 분류할 수도 있고, 여러 사람이 보더라도 기준 해석에 따라 다르게 판단할 수 있다)

이 2가지 문제점을 해결해줄 수 있는 방법을 고민하다 Amazon Sagemaker Ground Truth를 적용해보았는데, 결과는 성공적이였습니다. 어떤 서비스인지 더 자세히 설명해드리겠습니다.

Amazon Sagemaker란?

Amazon Sagemaker 전체 FLOW (출처: Amazon)

Amazon SageMaker는 데이터 수집, 모델링, 배포까지 모두 진행할 수 있는 완전 관리형 서비스입니다. 하나의 서비스 안에서 모든 것을 진행할 수 있다 보니, 업무를 심리스(seamless)하게 진행할 수 있다는 것이 장점입니다. Ground truth에서 생성된 아웃풋을 바로 Sagemaker Notebook Instance에서 불러와 모델 학습을 시킬 수도 있죠.

특히 이미지 처리는 다른 데이터들보다 연산량이 많아 컴퓨팅 파워가 뒷받침 되어주지 않으면 실행조차 어려운 경우가 많습니다. 그래서 Amazon SageMaker를 이용해 로컬보다 쾌적한 환경에서 빠르게 학습 및 테스트를 진행할 수 있었습니다.

Amazon Sagemaker Ground Truth란?

간단히 소개하면 라벨링 서비스입니다. 이미지 분류(Image Classification) 분야에서 유명한 이미지넷(ImageNet) 데이터셋 역시 이 서비스를 이용해서 라벨링을 진행했다고 합니다. 무신사가 이 서비스를 택하게 된 이유는 앞서 말씀드린 2가지 문제점을 명확하게 해결해주기 때문입니다.

1. 귀찮음 해결

a. 하나하나 비교해서 작업 vs. 원클릭 (심지어 단축키!)

내부 관리 툴에서는 후기마다 이미지를 클릭해 확인하고 후기번호와 라벨을 별도의 스프레드시트에 작성하는 과정이 필요했습니다. 하지만 Ground Truth 서비스에서는 원클릭으로 해당 작업을 진행할 수 있었습니다.

b. 오토 라벨링(Auto labeling) 기능이 있어 어느 정도 수작업으로 분류되고 나면, 이를 기반으로 자체 분류 모델을 만듭니다. 이에 따라 수작업량이 감소합니다.

2. 실수 가능성 작아짐

a. 동일 이미지에 대해 여러 작업자가 분류하기 때문에 신뢰성이 올라갑니다.

b. 심지어 작업자별로 신뢰도를 분류해서, 더 잘 분류하는 작업자 결과물의 영향을 받으니 더더욱 신뢰성이 올라갑니다.

직접 이용해보자!

저희는 약 1만 장의 이미지를 더블 체크하는 방식으로 분류하는 작업을 진행했습니다. 결과적으로는 2만 장 가량을 확인했는데요. 임직원분들이 분류 작업에 적극적으로 자원해주셔서 약 5일 만에 해당 작업을 완료할 수 있었습니다.

사내 volunteer 모집 과정! 무신사에서는 이런 angel분들과 함께 일할 수 있습니다.

작업 진행 과정은 다음과 같습니다.

1 Labeling Job 생성

a. 자동화된 데이터 설정(Auto labeling) 이용

b. 단일 레이블 분류

c. 프라이빗 팀 / 더블체크

저희는 임직원들의 도움을 받아 진행했기 때문에 프라이빗 팀으로 설정을 하고, 실수 방지를 위해 한 이미지에 대해 2명의 작업자가 분류하도록 설정했습니다.

2. 작업자 추가

굳이 AWS 계정이 없더라도 이메일 주소만으로 작업자를 추가해 진행할 수 있고, 여러 명의 작업자가 동시 작업할 수도 있습니다.

3. 메일로 작업 링크 발송

4.작업 진행

a. human-annotation

b. machine-annotation

— Auto labeling을 위한 model training

— training 관련 hyper parameter

c. 위의 a, b 단계를 반복

5. 결과물 s3에 저장

적인 듯 아군인 듯 알 수 없는 Auto Labeling

담당자 입장에서 Auto Labeling을 도입하기 전에 얼마나 자동으로 분류될 것이며, 얼마나 시간이 걸릴지 확인하는 것이 중요합니다. 그러나 Sagemaker나 Ground Truth에 관한 설명은 조금만 구글링해도 나오는 것에 비해 Auto Labeling에 대한 내용은 찾기 어려웠습니다. 아무래도 분류하고자 하는 이미지의 양과 질에 영향을 받는 기능이라 글로 설명하기에 복잡하고 어렵기 때문이라 생각됩니다.

그래서 저희처럼 Auto Labeling을 시도하고자 하는 분들에게 조금이나마 도움되도록, 저희 데이터로 측정된 지표를 공유 드립니다. 저희가 진행한 Auto Labeling 과정은 아래와 같습니다.

먼저 라벨이 붙지 않은 이미지들에 대해, 사람이 분류 작업을 진행합니다. 초반 이터레이션(iteration) 1, 2에서는 training 용 데이터를 모으고, 이터레이션3에서는 validation 용 데이터를 모아서, 이 둘을 이용해서 자동 분류를 할 모델을 생성합니다.

여기서부터가 조금 복잡합니다만, 최대한 쉽게 2개 단계로 설명 드리겠습니다.

1. threshold 설정

  • 모델이 산출하는 값은 해당 이미지가 특정 라벨에 속할 확률인데, 이 확률이 어느 정도여야 믿을만한 결과인지 정하기 위해서 threshold 값 설정이 필요합니다. 이터레이션4에서는 사람이 추가로 작업한 이미지에 대해서 모델이 추론한 결과와 비교해서 이 threshold 값을 설정하게 됩니다.

2. auto-annotated

  • 이후, 라벨링이 진행되지 않은 이미지에 대해서 모델이 inference하고, 그 확률이 위에서 정한 threshold보다 높은 이미지에 대해서만 auto-annotated 라는 태그가 붙습니다.
  • 이런 이미지들은 더 이상 사람이 작업하지 않아도 되고, threshold 이하인 이미지에 대해서는 다시 작업자에게 분배되게 됩니다. 이런 과정을 반복하면서 점점 라벨을 채워가게 됩니다.

예를 들어 inference 결과 이 이미지의 라벨이 ‘포장’일 확률이 97%로 나왔습니다. 그런데 threshold는 95%니까 이 이미지에는 auto-labeling 태그를 붙여주게 되는 방식이라고 이해하시면 됩니다.

저희 데이터로는 총 7번의 이터레이션이 진행 되었는데, 각 이터레이션별 지표는 아래와 같습니다. (training, validation 이미지 수가 0인 이터레이션에서는 학습이 진행되지 않았습니다.)

training, validation은 이전 이터레이션까지의 누적값이며, 그 외 지표는 각 이터레이션별 값입니다.

Image Labeling 결과

총 1만 장의 이미지를 더블 체크로 분류하는 데 22명의 작업자가 5일간 투입되었고, 약 $980의 비용이 소요되었습니다. 그렇게 분류된 이미지로 모델을 테스트 해본 결과, 동일 모델에 대해 커버리지는 최대 8.7%, 정확도는 최대 1.6% 증가하는 것을 확인했습니다. 이 외에도 테스트셋의 이미지 수를 확대해 실험할 기회도 생겼습니다.

모든 과정을 진행한 담당자로 회고하면, 아래 3가지 이유로 Ground Truth 서비스 자체는 만족스러웠습니다.

  1. 직접 옮기는 것보다 신뢰성 있는 결과물이 나온다.
  2. 서비스의 접근성과 작업성이 용이하다. (AWS 계정이 없어도 이메일 주소만으로 작업자를 추가할 수 있습니다. 여러 명의 작업자가 동시 작업하는 것도 가능합니다.)
  3. 같은 Sagemaker 내에서 학습을 진행할 때 manifest 파일만으로 바로 로드해서 데이터를 사용할 수 있다.

그러나 아래 3가지 이유로 Auto Labeling 기능을 추후 다시 사용할지는 잘 모르겠습니다.

  1. 작업 시 혼란스러운 부분이 있다. (Auto Labeling이 시작되는 기준이 명시되어 있지 않다 보니, 갑자기 Auto Labeling이 진행될 때는 사람이 수작업으로 라벨을 붙여주는 작업이 사라져 당황했습니다. 또한 언제 다시 생길지 예상 시간에 대한 정보도 없어서 계속 모니터링이 필요하다는 단점이 있습니다.)
  2. 작업이 연속적으로 진행되기 어렵다. (결과적으로 40%가량 수작업이 감소하였으나, Auto Labeling을 위한 모델 학습에 총 28시간이 소요되었습니다. 그 시간에 수작업으로 분류할 수 없다 보니 작업을 연속해서 진행하기 어려웠습니다)
  3. hyper parameter 조정이 어려웠다. (기본 epoch가 1000으로 설정되어 있는데, 초반 100~200회 사이에 이미 training과 validation accuracy가 수렴하는 경우가 많아 굳이 1,000회까지 돌리는 것은 시간과 인스턴스 비용 낭비라는 생각이 듭니다.)

마치며

컴퓨터 비전(Computer Vision)이라고 하면 이해할 수 없는 신의 영역일 것 같았는데, 모든 머신러닝이 거의 자동화 된 머신러닝(Auto ML) 수준으로 올라와 있듯이, CNN도 keras라는 딥러닝 패키지를 로드만 하면 코드 한 5줄 쓰고도 모델을 만들 수 있게 되었습니다. 결과적으로 인풋 이미지를 좋은 퀄리티로 충분히 확보하는 것이 가장 중요한 요소이며, 이를 위해 라벨링 서비스를 적재적소에 이용하는 것이 필요할 것 같습니다.

무신사는 이렇게 수집된 데이터 기반으로 만든 모델을 사용해 인력을 좀 더 효율적으로 배치하고, 검수 과정의 정확도를 높여 고객이 신뢰할 수 있는 후기 서비스로 발전시켜 나갈 것입니다.

마지막으로 Ground Truth 같은 서비스가 아무리 잘 되어 있어도, 결국엔 사람이 수작업으로 분류하는 작업이 필요합니다. 혼자서는 엄두가 안 나는 작업을 자원해 도와주신 임직원분들이 있어 빠른 시간에 작업을 마칠 수 있었습니다. 이 글을 통해 다시 한 번 동료분들에게 감사를 보냅니다.

야 너두 딥러닝 할 수 있어

다음 글에서는 위 방식으로 수집된 이미지를 활용해 만든 모델에 관해 써보려 합니다. 무신사는 Sagemaker에서 제공하는 모델을 이용하여 Image Classification을 진행하였고, 각 이미지별로 사람 착용인지, 상품 포장인지 등의 라벨별로 분류해주는 모델을 만들었습니다. 자세한 내용은 6월중 2편에서 소개해드리겠습니다. 많은 관심 부탁드립니다.

1편) Amazon Sagemaker Ground Truth를 이용한 image labeling 작업 과정

2편) Amazon Sagemaker와 Apache Airflow를 이용한 모델 서빙 과정

참고

- https://aws.amazon.com/ko/sagemaker/
- https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html
- https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/sms.html

--

--