Data Labeling
데이터 레이블링은 원시 데이터에 클래스, 박스, 마스크, 키포인트를 붙여 지도 학습 모델이 학습할 수 있게 합니다. 레이블 유형, 워크플로, 품질 검사를 다룹니다.
데이터 라벨링은 지도 학습 모델이 원시 데이터에서 학습할 수 있도록 이미지의 클래스 이름, 거리 사진 속 각 자동차를 둘러싼 바운딩 박스, 오디오 클립의 전사 텍스트와 같은 정답 정보를 원시 데이터에 부여하는 과정입니다. 라벨은 작업을 정의합니다. 모델은 라벨이 설명하는 내용을 그대로, 라벨의 정밀도와 일관성에 맞춰 예측하도록 학습합니다. 데이터 어노테이션은 동의어이며, 이 작업을 수행하는 사람은 라벨러 또는 어노테이터라고 합니다. 라벨링은 학습 데이터를 구축할 때 대개 가장 느리고 비용이 많이 드는 단계이므로, 많은 워크플로에서는 모델이 라벨을 제안하고 사람이 이를 수정합니다.
컴퓨터 비전의 라벨 유형#
라벨 형식은 모델이 수행해야 하는 작업에 따라 정해집니다.
- 이미지 분류: 검사 라인의 부품에 "불량" 또는 "정상"을 지정하는 것처럼 이미지마다 클래스 하나를 지정합니다.
- 객체 탐지: 관심 있는 모든 객체에 축 정렬 박스와 클래스를 지정합니다.
- 방향성 바운딩 박스: 항공 이미지에서 선박과 차량처럼 길거나 기울어진 객체에 맞춘 회전 박스입니다.
- 인스턴스 분할: 각 객체를 개별적으로 둘러싸는 폴리곤 또는 픽셀 마스크입니다.
- 시맨틱 분할: 도로, 보도, 하늘처럼 개별 객체를 분리하지 않고 모든 픽셀에 클래스를 지정합니다.
- 포즈 추정: COCO의 코와 눈부터 발목까지 이어지는 17개 점처럼 고정된 랜드마크에 키포인트를 지정하며, 각 키포인트의 가시성 플래그를 함께 표시하는 경우가 많습니다.
세부 수준이 높아질수록 더 많은 노력이 필요합니다. ImageNet 챌린지 데이터셋인 ILSVRC에서 고품질 박스 하나를 그리는 데 약 35초가 걸렸습니다. 어노테이터가 모서리를 드래그하는 대신 객체의 맨 위, 맨 아래, 가장 왼쪽, 가장 오른쪽 지점을 클릭하는 극단점 클릭을 사용하면 같은 품질의 박스를 7초 만에 그릴 수 있었습니다. 폴리곤과 픽셀 마스크는 더 많은 시간이 듭니다. 비전 분야 외에서는 개체명 인식(NER)을 위한 개체 구간, 텍스트 분류를 위한 감성 라벨, 음성 인식을 위한 전사 텍스트를 라벨링합니다.
라벨링 워크플로#
라벨링 프로젝트는 작업을 시작하기 전에 모든 클래스를 정의하고 예외 사례를 정하는 작성된 가이드라인부터 마련합니다. 예를 들어 90%가 가려진 자동차도 박싱할지, 자전거 운전자의 팔다리를 얼마나 딱 맞게 그릴지, 반사된 물체와 작은 객체, 군중은 어떻게 처리할지 정합니다. 모델 지원 라벨링에서는 지금까지 지정된 라벨로 학습한 모델이 새 이미지에 사전 라벨을 지정하고, 어노테이터가 오류를 수정하며, 검토자가 샘플을 확인합니다. 재학습된 모델은 매 라운드 더 정확한 결과를 제안합니다. 능동 학습은 이 반복 과정에 선택 단계를 추가하여 모델이 가장 확신하지 못하는 이미지부터 사람이 라벨링하도록 합니다.
Ultralytics Platform의 어노테이션 편집기는 이 과정을 내장하고 있습니다. 스마트 모드에서는 클릭 한 번으로 Meta의 Segment Anything 모델을 사용해 마스크를 만들거나, 사전 학습 또는 자체 파인튜닝 YOLO 모델의 예측 결과를 초안 어노테이션으로 추가할 수 있습니다. 같은 사전 라벨링 단계는 Python에서 YOLO26 탐지기로 실행되며, 탐지기는 예측 결과를 학습에 사용하는 라벨 형식으로 저장합니다.
from pathlib import Path
from ultralytics import YOLO
# 라벨을 제안할 사전 학습된 YOLO26 nano 탐지기를 불러옵니다
model = YOLO("yolo26n.pt")
# 라벨이 없는 이미지에 대해 예측합니다
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# 객체마다 "class x_center y_center width height" 행을 하나씩 작성하고, 값을 0-1 범위로 정규화합니다
label_file = result.save_txt("bus.txt")
# 어노테이터가 검토할 초안 라벨을 출력합니다
print(Path(label_file).read_text())출력된 각 행은 COCO 클래스 인덱스 뒤에 이미지 크기의 비율로 표현한 박스 중심, 너비, 높이를 기록합니다. 어노테이터가 잘못되거나 누락된 박스를 수정하면 학습 과정에서 바로 읽을 수 있는 YOLO 라벨 형식입니다.
라벨 품질#
모델의 일관성은 라벨의 일관성보다 높을 수 없으며, 유명 데이터셋에서도 오류는 흔히 발생합니다. 널리 사용되는 벤치마크 10개의 라벨 오류에 대한 연구는 테스트 라벨의 평균 3.3% 이상이 잘못되었으며 ImageNet 검증 세트의 라벨도 최소 6%가 잘못되었다고 추정했습니다. 팀은 다음과 같은 표준 검사를 통해 오류를 찾습니다.
- 골드 질문: 각 라벨러의 작업 목록에 정답이 알려진 항목을 섞어 정확도를 측정하며, 흔히 골든 데이터셋에서 항목을 가져옵니다.
- 중복 라벨링: 두 명 이상의 어노테이터가 같은 항목에 라벨을 지정하고, 클래스 라벨은 코헨 카파로, 박스와 마스크는 교집합 대비 합집합(IoU)으로 어노테이터 간 일치도를 평가합니다.
- 모델 기반 감사: 학습된 모델이 강하게 동의하지 않는 라벨을 표시하고, cleanlab과 같은 도구가 라벨 오류 가능성이 높은 항목의 순위를 매겨 사람이 검토하도록 합니다.
데이터 라벨링과 관련 용어 비교#
- 데이터 어노테이션: 동의어입니다. 컴퓨터 비전 팀은 박스나 마스크처럼 그려진 기하 도형을 가리킬 때 주로 어노테이션이라는 용어를 사용합니다.
- 준지도 학습: 모델이 라벨이 없는 데이터에 직접 라벨을 지정하고, 사람이 검토하지 않아도 자체 확신도 높은 예측 결과를 의사 라벨로 사용합니다.
- 능동 학습: 사람이 다음에 라벨링할 항목을 결정하며, 일반적으로 현재 모델이 가장 불확실하게 판단하는 항목을 선택합니다.
- 데이터 정제: 중복 데이터, 손상된 파일, 일관되지 않은 형식 등 데이터셋의 문제를 수정하며, 라벨링 후 발견된 잘못된 라벨도 바로잡습니다.
- 합성 데이터: 장면 구성을 정확히 알고 있는 생성기가 라벨을 자동으로 제공하는 렌더링 또는 생성 이미지입니다. 단, 합성 이미지와 실제 이미지 사이에는 차이가 있을 수 있습니다.










