슈퍼브에이아이 플랫폼으로 품질 관리 완전 정복 및 이상적인 정답 데이터셋 구축하기
들어가며
파트 2에서는 라벨링의 종류와 적절한 적용 방법 및 사례, 그리고 슈퍼브에이아이 스위트를 팀에 맞게 최적화하는 방법에 대해 다뤘습니다. 파트 3에서는 이슈를 모니터링 및 해결하는 품질 관리 (Quality Assurance, QA) 전략과 모범적인 검수 방법(auditing), 정답 (Ground Truth, GT) 데이터셋을 생성하는 방법, 그리고 데이터를 분리하는 최적의 방법에 대해 다룹니다.
워크플로우 자동화에 대해 다루기 전에, 팀은 다양한 데이터셋과 적절한 검사 과정으로 구성된 성공적인 머신러닝 파이프라인을 구축해야 합니다. 데이터를 분리하는 방법과 스위트의 인터페이스를 최적화하는 방법을 알면, 팀을 성공으로 이끄는 것은 시간 문제입니다.
파트 3에서는 아래 내용을 다룹니다.
- 라벨링 문제를 해결하는 방법
- 슈퍼브에이아이 스위트를 활용해 라벨링 검수하기
- 정답 데이터셋 구축하기
- 자동화를 위한 데이터 내보내기
이슈 해결하기
데이터를 올바르게 라벨링하는 방법을 아는 것도 중요하지만, 그에 못지 않게 중요한 것이 라벨링 오류를 식별하는 것입니다. 이 과정에서 가장 중요한 부분은 바로 팀원 간의 커뮤니케이션 채널을 구축하는 것입니다.
슈퍼브에이아이의 “이슈(Issues)” 기능은 라벨링의 진행률과 어노테이션의 차이를 트래킹하는 강력한 QA 툴입니다.
라벨 리스트의 필터링 툴을 활용해 사용자는 이미 해결 후 다시 제출된 이슈만 모아서 볼 수 있습니다. 이를 통해 훨씬 더 간편하게 라벨링 진행률을 확인할 수 있습니다.
”이슈“ 기능의 단계별 가이드는 아래 영상을 참고하세요.
이슈 단축키
단축키를 사용하면 슈퍼브에이아이의 이슈 관리 툴을 더 편리하게 활용할 수 있습니다. 보기 설정에 따라 이슈를 숨기거나 노출하고, 코멘트를 추가하는 등 더 쉽게 이슈 탭을 활용할 수 있습니다. 키보드 단축키 리스트는 아래에서 확인하세요.
자주 발생하는 분류 오류
분류(Classification) 프로세스는 머신러닝 모델이 오브젝트를 식별하고 해석하는 데 도움을 주지만, 실제로 이 액션을 올바르게 수행하기 위해서는 라벨러의 역할이 중요합니다. 라벨 오분류는 배경을 인식할 수 없게 되는 것 뿐만 아니라 머신러닝 모델의 퍼포먼스에도 치명적인 영향을 미치는 오류로 이어질 수 있기 때문에 품질 관리 프로세스에서 충분한 주의가 필요한 부분입니다.
부정확한 라벨링
라벨러들은 대상을 최대한 정확하게 그려야 합니다. 그렇지 않을 경우, 모델이 형편없는 수준의 해석 결과를 내놓게 됩니다. 어노테이션의 종류에 따라 가지각색의 라벨링 실패 사례가 존재하기 때문에, 처음부터 팀에 제대로 된 가이드를 제공하는 것이 매우 중요합니다.
바운딩 박스의 경계 간 여백이 과도하거나, 폴리곤 세그멘테이션이 오브젝트의 일부를 포함하지 않는 경우가 가장 빈번하게 발생하면서 가장 문제가 되는 라벨링 오류의 사례입니다. 이러한 이슈는 팀원들을 제대로 트레이닝 시키는 것을 통해 방지할 수 있습니다.
불완전한 라벨링
오브젝트를 실수로 건너뛰는 등의 미흡한 진행은 퍼포먼스 문제를 야기할 수 있습니다. 라벨러들이 세세한 디테일이나 이미지 속 흐릿한 부분을 자주 놓치고는 하는데, 이런 실수들이 모델 실행 시의 걸림돌이 되기도 합니다. 리뷰 프로세스를 성공적으로 진행하기 위해서는 각각의 오브젝트를 올바르게 라벨링하는 것이 필수적입니다.
결과 검수하기
품질 관리와 워크플로우 검수는 효과적인 머신러닝 모델 구축의 필수 요소로, 슈퍼브에이아이 스위트는 특별히 이러한 검수 과정까지 포함하도록 특별히 설계되었습니다. 모델 개발 워크플로우를 위한 효율적인 품질 관리 및 검수 프로세스를 생성하는 방법이 궁금하신가요? 아래의 아카데미 영상에서 단계별 가이드를 확인하세요.
핵심으로 넘어가기 전에, 몇 가지 사항에 대해 지금 바로 체크해보세요.
- 오브젝트 클래스가 올바르게 되어있는지
- 어노테이션이 빠진 오브젝트는 없는지
- 오브젝트 일부에 라벨링이 누락되지 않았는지
이미지를 “승인(approve)”할지 “반려(reject)”할지는 페이지 상단에서 선택할 수 있습니다. 만약 문제가 있다면, “이슈” 기능을 활용해 팀원 간에 알려줄 수 있도록 해야합니다. 문제가 있을 경우 가장 바람직한 것은 메뉴 상단에서 ”반려“를 선택하는 것입니다. 반려나 승인은 단순히 이미지를 그렇게 표시하는 것에 그치지 않고, 상태 바 상의 이미지 상태까지 변경해줍니다.
이미지가 제출되면 상태 바에서 “제출 완료(Submitted)”로 표시되며, 반려된 이미지는 “진행 중(In progress)”으로 표시됩니다. 상태 표시는 라벨링 워크플로우의 효율을 높여 워크플로우가 일관성있게 실행되도록 해줍니다. 추가로, 이미지를 승인 또는 반려하면 리뷰어의 작업 대기열이 정리돼, 리뷰어가 진행도를 더 쉽게 확인할 수 있습니다.
매뉴얼 리뷰 통계
실시간으로 검수 구조의 강점과 약점을 확인하는 것을 통해 유관 인력들이 검수 프로세스의 성과와 실패를 파악하는 것이 가능합니다. 라벨링 소프트웨어에 포함된 매니지먼트 툴은 모델의 성공 여부와 진행도, 그리고 평가 구조를 정의하기 위해 어떤 측면을 고려해야 할지 알려줍니다.
매니저로서 작업 기한까지 검수 진행 상황과 성공 여부를 파악하는 것은 유관 인력의 작업 진행률을 파악할 수 있게 도와줌과 동시에 작업자들이 일에 집중할 수 있게 도와줍니다. 외부 툴을 사용하거나 수기로 진행률 또는 성공 여부를 파악하는 것은 체계적이지 못한 방법인 동시에 팀의 방해 요소가 될 수도 있습니다. 반면에, 슈퍼브에이아이의 오버뷰 메뉴(Overview Menu)는 매니저와 라벨러에게 시각적 레퍼런스를 제공합니다.
라벨링 현황
라벨링 현황(Labeling Status)에서는 팀의 라벨링 진척 상황과 현황을 실시간으로 확인할 수 있습니다. 진행 중인 라벨링이 몇 건인지 확인할 수 있고, 반려된 이미지 건수는 적색으로, 제출되지 않은 이미지 건수는 황색으로 표시됩니다.
제출된 라벨 건수는 진녹색으로 표시되며, 그 중 몇 건이 승인되었는지도 표시해줍니다. 그리고 제출은 완료되었지만 아직 리뷰 중인 건들은 연녹색으로 표시됩니다.
스킵된 라벨 건수도 확인할 수 있습니다. 진회색은 승인된 라벨을, 연회색은 스킵된 라벨을 의미합니다.
구성원별 역할
역할(Member Roles) 메뉴에서는 팀 구조를 한눈에 파악할 수 있습니다. 이 팀에 각각 몇 명의 어드민, 매니저, 라벨러가 있는지 확인할 수 있습니다. 검수 프로세스가 어떻게 운영되는지 더 쉽게 확인할 수 있도록 근시일 내에 리뷰어 역할도 추가할 예정입니다.
어노테이션을 위한 검수 레퍼런스
어노테이션 가이드라인을 참고해 검수 워크플로우를 운영하는 것도 가능합니다. 프로젝트 오버뷰(Project Overview) 메뉴에서 가이드라인에 접근할 수 있으며, 검수자(auditor)들에게도 접근 권한이 부여되어야 합니다. 검수자들이 리뷰 시에 어노테이션 가이드라인을 쉽게 확인할 수 있으면 리뷰 프로세스를 더 원활하게 진행할 수 있습니다.
유용한 링크
이 섹션은 검수자들이 특정 라벨을 찾기 위해 어떤 필터를 사용해야 하는지 알려주는 것이 목적입니다. 라벨 상태를 기준으로 라벨을 분리해, 제출이 완료되었거나, 오늘 확인했거나, 이슈가 확인된 라벨만 모아서 볼 수 있고, 이를 통해, 더 정확하고 진정성 있는 리뷰 프로세스를 진행할 수 있습니다. 이 정보를 수시로 확인함으로써 팀을 체계적으로 유지하고, 리뷰 프로세스의 상태 세그먼트에 대해 완전히 이해할 수 있습니다.
정답 데이터셋 생성하기
슈퍼브에이아이 스위트는 광범위한 리소스 플랫폼으로, 플랫폼을 구성하는 툴의 활용 방법을 이해하는 것이 중요합니다. 기초 원리를 마스터하고 나면 정답 데이터셋을 구성해 워크플로우 자동화를 위한 모델을 준비할 수 있게 됩니다.
초심자를 위한 정답 데이터 가이드
정답 데이터가 정확히 무슨 뜻일까요? 정답 데이터는 매뉴얼 라벨링을 거친 데이터셋을 일컫는 용어로, 모델이 “참(true)”을 판단하는 근거가 됩니다. 정답 데이터셋을 생성할 때 몇 가지 고려해야 할 사항이 있습니다. 모델에 한 번에 아무 데이터나 투입해버려서는 안 됩니다. 양질의 데이터와 그 중 투입할 데이터를 선택하는 것은 이터레이션에 필수적인 요소이며, 정답 데이터셋을 구성할 때는 그 중요성이 더더욱 높아집니다.
기초 원리 이해하기
라벨링 플랫폼은 서로 다를 수 있지만, 유효한 정답 데이터를 구성하는 데에 필요한 공통 요소가 있습니다.
1. 필요한 라벨의 갯수
자급자족이 가능한 자동화된 프로세스를 생성하기 위해서는 상당한 양의 정답 데이터가 필요합니다. 이 양은 가지고 있는 데이터셋의 사이즈와 라벨링 플랫폼의 최소 요구 조건에 따라 달라집니다. 슈퍼브에이아이의 커스텀 오토 라벨(Custom Auto-Label) 기술은 트레이닝과 실제 활용에 최소 100개의 라벨을 요구하지만, 통상적으로는 각각의 오브젝트 카테고리마다 최소 2,000개의 라벨이 필요합니다. 따라서 이미지의 양도 마찬가지로, 각각의 분류 및 이미지 디테일에 따라 달라집니다.
모델이 최대 효율로 실행되기 위해서는 각각의 클래스마다 충분한 수의 라벨이 필요합니다. 모델에 라벨이 충분히 제공되지 않을 경우 기능에 부정적인 영향을 미칩니다. 추가로 어떤 라벨은 하이퍼파라미터(hyperparameter)의 최적화와 예측 모델의 퍼포먼스를 위해 미리 제외해두어야 합니다.
만약 충분한 데이터를 가지고 있지 않다면 이러한 태스크를 수행하는 것은 거의 불가능에 가깝습니다. 왜냐하면 클래스 스코어의 기준값(Class Score Threshold)의 설정이나 어노테이션이 필요한지의 여부를 판단하는 것이 불가능하기 때문입니다. 게다가 너무 많은 긍정 오류(false positive)와 부정 오류(false negative) 판정을 내리게 되고, 이는 시간이 갈수록 악화되기만 할 것입니다.
2. 데이터셋 다양화하기
모델이 올바르게 기능하기 위해서는 데이터셋 간의 간섭이 발생하지 않는 다양한 세트의 예시가 포함되어야 합니다. 정답 데이터를 생성하는 것도 마찬가지입니다. 각각의 오브젝트 클래스별로 지정된 수의 어노테이션을 요구하는 것도 같은 이유에서입니다. 각 클래스별로 포함된 어노테이션의 갯수가 동일하면 편향이 발생할 가능성을 최소화해 더 바람직한 성과를 냅니다.
3. 클래스 정의하기
클래스 그룹화를 결정할 때 딱 정해져있는 클래스의 숫자가 있는 것은 아닙니다. 다만, 가능한 한 적은 수의 클래스를 활용하는 것을 권장합니다. 오브젝트 클래스의 수가 너무 많아지면 모델이 느려지거나 혼란이 발생할 수 있기 때문입니다. 하위 카테고리가 필요하다면 생성해도 괜찮습니다. 하지만 특이한 오브젝트, 또는 동일한 카테고리로 묶기에 애매한 오브젝트를 그룹화하는 것은 피해야 합니다. 이는 클래스에 너무 많은 오브젝트가 포함되는 것을 방지해 라벨러의 작업을 더 쉽게 만들고, 모델이 하이퍼파라미터를 조정해 퍼포먼스가 저하되는 것을 방지합니다.
4. 이미지 세트 구조화하기
편향되지 않은 애그노스틱 정답 데이터셋을 구축하기 위해서는 이미지들이 모든 클래스를 가능한 한 동등하게 담고 있어야 합니다. 추가로, 데이터를 훈련용, 검증용, 테스트용 데이터셋 등 개별적인 하위 셋으로 쪼개는 것이 어떤 의미인지 고려해야 합니다. 앞선 파트 1에서 데이터셋을 업로드하는 방법과 이름을 지정하는 방법에 대해 다뤄봤습니다. 이제, 아래 카테고리로 데이터셋을 쪼개보세요.
학습용 데이터셋
학습용 데이터셋은 데이터로 모델을 학하고 트레이닝하고 테스트하는 데에 활용되며, 모델은 각각의 이터레이션을 통해 다양한 특징(features)과 패턴을 학습합니다. 통상적으로 머신러닝 실무자들은 데이터의 80% 정도를 훈련용 데이터셋에 할당합니다.
검증용 데이터셋
검증용 데이터셋은 데이터를 비교하는 황금률의 기준이 됩니다. 테스트 셋은 훈련용 트레이닝 셋과 검증용 셋과는 구별됩니다. 테스트 셋은 훈련이 완료된 후에 모델의 성능을 테스트하는 데에 활용되며, 모델이 얼마나 잘 작동하는지를 평가할 수 있는 하나의 방법입니다.
팁: 검증 세트를 __VALIDATION__이라는 이름으로 세팅하면, 시스템은 이 데이터셋을 정적 검증용 데이터셋으 로 활용하는 것으로 인식합니다. 이렇게 세팅하는 것은 나중 단계에서 도움이 됩니다.
데이터셋 분리하기
앞서 말했듯, 데이터셋을 분리할 때 몇 가지 고려해야할 점이 있습니다. 무엇보다 이미지 클래스가 고르게 분포될 수 있도록 유지하는 것과 데이터 양을 충분하게 유지하는 것이 가장 중요하겠지만, 이외에도 고려해야 할 사항이 있습니다.
하이퍼파라미터
충분한 수의 하이퍼파라미터를 보유한 머신러닝 모델은 다른 모델에 비해 더 큰 사이즈의 검증용 데이터셋이 필요합니다. 하이퍼파라미터는 대량의 이터레이션, 의사 결정 나무(decesion tree)의 가지(branches), 또는 학습 진행률 등이 포함될 수 있는데, 검증용 데이터셋은 이 모든 요소를 다룰 수 있도록 준비되어야 하기 때문에 사이즈가 커질 수 밖에 없습니다.
이터레이션 횟수
정밀하지 못하게 조정된 모델은 퍼포먼스가 현저히 저하됩니다. 만약 모델의 정확도를 정밀도(precision) 기준으로 판단한다면, 매 이터레이션마다 데이터를 재평가해야합니다. 예를 들어, 여러가지 질병을 감지하는 메디컬 앱을 설계중이라면, 단 한 건의 진단 오류가 환자의 치료 계획에 부정적인 영향을 미칠 수 있습니다.
너무 적은 양의 훈련용 데이터
트레이닝 데이터의 부족은 높은 가변성(variability)를 낳습니다. 랜덤한 변수값과 머신러닝의 기대값을 비교한 값의 차이를 가변성이라고 합니다. 훈련용 데이터셋마다 가변성이 너무 높으면 알고리즘이 모델의 결과를 올바르게 예측하기가 어렵습니다.
부족한 테스트 데이터
훈련용 데이터와 마찬가지로, 테스트 데이터가 부족하면 가변성이 높아 모델의 성과 지표에 영향을 미칠 수 있습니다.
궁극적으로는, 데이터를 분리하는 방법에 정답은 없습니다. 하지만 머신러닝 실무자들이 사용하는 몇 가지 일반적인 방법을 아래에서 소개하겠습니다.
샘플링 기법
검증용, 훈련용, 테스트용으로 데이터를 분리하는 것은 각각의 데이터셋이 적절하게 분산될 수 있도록 전략적으로 이루어져야 합니다. 머신러닝 실무자들은 일반적으로 아래와 같은 기법을 사용합니다.
랜덤 샘플링
이 기법에서는 마치 카드덱을 섞듯 데이터를 섞습니다. 그 후에 팀의 목적에 맞게 데이터를 테스트용, 검증용, 훈련용으로 나누게 됩니다.
데이터 선택 과정에서 편향이 생기지 않는다는 장점이 있는 반면, 단점도 있습니다. 만약 오브젝트 클래스의 차원에서 데이터에 균형이 부족하면 데이터셋이 하나의 클래스에 편중되기 쉬우며, 이는 훈련용 데이터셋과 검증용 데이터셋이 균일하게 나뉘는 것을 방해해 모델의 퍼포먼스에 부정적인 영향을 미칠 수 있습니다.
계층화된 샘플링
계층화된 샘플링은 데이터를 랜덤으로 선택하지 않고 클래스를 기준으로 데이터를 할당해 데이터 구조의 균형이 무너지는 것을 방지합니다.
랜덤 샘플링의 경우 데이터 분산의 균형이 깨질 확률이 상당히 높은 편이지만, 계층화된 샘플링의 경우에는 추가 파라미터를 활용해 이러한 문제를 컨트롤 할 수 있습니다. 이 파라미터들은 특정 데이터셋에 몇 퍼센트의 데이터를 할당할지 지정하는 것을 통해 편향을 줄여줍니다.
교차 검증
교차 검증은 데이터에 더 많은 관여를 요구하지만, 또 다른 인기있는 기법 중 하나입니다. 이 방법은 데이터를 균등하게 하위 셋으로 분산시키며, 다양한 샘플을 활용해 수천번의 평가를 진행합니다.
교차 검증을 활용하면 데이터의 하위 셋이 허용하는 한 많은 수의 조합으로 데이터를 테스트와 검증에 모두 사용할 수 있습니다. 예를 들어, 4개의 데이터셋에 2,000장의 이미지가 클래스마다 균등하게 분배된 데이터셋이 있다고 가정합시다. 교차 검증을 통해 이 데이터를 각각 400개의 이미지로 구성된 5개의 동일한 사이즈의 하위 셋으로 나눌 수 있습니다. 그런 다음, 4개의 하위 셋으로 훈련하고 나머지 데이터로 검증할 수 있습니다. 각각의 이터레이션은 편향을 줄이기 위해 서로 다른 조합의 데이터셋으로 구성됩니다. 다만, 한가지 유의할 점은 데이터를 분리할 때 데이터가 균일하게 분포되도록 신경써야 한다는 점입니다.
슈퍼브에이아이 스위트에서 데이터 나누기
클래스가 균일하게 분포된 데이터셋들을 스위트에 추가했다면, 이제 우리가 아는 데이터 할당에 관한 모든 지식을 프로젝트에 적용하면 됩니다. 먼저, 라벨(Labels) 페이지로 가서 아래 절차를 수행하세요.
- 페이지 좌상단 필터 옵션을 활용해 다양한 데이터에서 원하는 라벨을 분리하세요. “필터링 기준(Filter by)”을 클릭하면 선택할 수 있는 여러가지 옵션이 표시됩니다. 스크롤을 내려 “데이터셋(Dataset)”을 선택하세요.
- 검색 필드에 훈련용 데이터셋의 이름을 입력하세요.
- 체크 옵션을 사용해 전체를 선택하세요.
- 페이지 우측의 ”태그 편집(Edit Tags)” 옵션을 선택하세요. 여기에서 태그 이름을 입력할 수 있는데, 이름은 각 데이터 그룹의 특색을 잘 반영할 수 있는 명확한 이름을 선택하실 것을 권장합니다. 이번 예시에서는 데이터셋의 이름을 “train” 또는 “training”이라고 설정하는 것이 좋아 보입니다.
- 검증 셋과 테스트 셋에도 동일한 과정을 반복합니다.
- 팀원들에게 데이터를 할당하고 라벨링을 시작하세요. 자세한 과정은 파트 1을 참고하세요.
데이터 내보내기
라벨링이 끝난 데이터는 최초의 정답 데이터셋으로 사용하거나 추후 커스텀 오토라벨에 활용하기 위해 내보낼 수 있습니다. 버튼 두 개만 누르면 끝나는 간단한 과정입니다.
- 태깅이 완료된 훈련 데이터와 검증 데이터를 모아주세요.
- 좌상단 박스를 선택해 수집된 이미지 전체를 선택해주세요.
- 우상단의 “내보내기” 버튼을 클릭하면 스위트가 데이터 내보내기를 시작합니다.
다음 주제
효율적이고 성공적인 방법으로 프로젝트를 실행하기 위해서는 프로젝트를 적절하게 세팅하고, 최선의 방법으로 라벨링하고, 이미지를 구조화하는 것이 무엇보다도 중요합니다. 다음 포스트에서는 정답 데이터를 활용해 적응형 모델을 훈련하는 방법과, 퍼포먼스를 개선하는 방법, 그리고 자동화 프로세스 최적화를 통해 시간과 비용은 절감하고 정확도는 향상시키는 방법에 대해 다뤄보겠습니다.