/ 학습 / 안내서 / 컴퓨터비전
L2 중급 · 4분 읽기

훈련 데이터 라벨 품질, 학습 전에 잡기

영상분석팀 2026.06.29 갱신 화재·연기 탐지 등 비전 모델의 학습 데이터를 만드는 실무자
#라벨품질#FiftyOne#검수#데이터셋

화재·연기 탐지 모델은 신경망 구조보다 라벨이 성능을 좌우합니다. 경계가 모호한 옅은 연기, 빠뜨린 화염, 라벨러마다 다른 기준 — 이런 오라벨이 그대로 학습되면 현장에서 오탐(없는 불을 알림)과 미탐(있는 불을 놓침)으로 돌아옵니다. 이 안내서는 모델을 돌리기 전에 라벨 품질을 검수하는 방법입니다.

이 안내서를 끝내면 라벨러 간 일치도를 재고, 의심 라벨을 FiftyOne으로 찾고, 클래스 불균형을 점검해, 검수가 필요한 후보를 사람 판단용으로 추릴 수 있습니다.

라벨 품질의 네 가지 적

1. 라벨러 간 일치도(IAA)

같은 프레임 묶음을 두 사람이 독립으로 라벨한 뒤, 박스가 얼마나 겹치는지(IoU)로 일치율을 봅니다. 일치율이 낮은 클래스가 곧 기준이 흔들리는 클래스입니다.

PYTHON
def iou(a, b):  # [x1,y1,x2,y2]
    ix1, iy1 = max(a[0], b[0]), max(a[1], b[1])
    ix2, iy2 = min(a[2], b[2]), min(a[3], b[3])
    inter = max(0, ix2 - ix1) * max(0, iy2 - iy1)
    union = (a[2]-a[0])*(a[3]-a[1]) + (b[2]-b[0])*(b[3]-b[1]) - inter
    return inter / union if union else 0.0

# 두 라벨러가 같은 박스로 본 비율(IoU≥0.5)을 클래스별로 집계 → 낮으면 기준 합의 필요

2. 의심 라벨 자동 탐지 — FiftyOne

FiftyOne은 라벨이 모델 예측과 크게 어긋나는 "의심 라벨"에 점수를 매기고, 거의 같은 중복 프레임을 찾아 줍니다. 전수 재검수 대신 의심 상위부터 사람이 봅니다.

PYTHON
import fiftyone as fo
import fiftyone.brain as fob

# dataset: 이미지 + ground_truth(사람 라벨) + predictions(모델 또는 2차 라벨)
fob.compute_mistakenness(dataset, "predictions", label_field="ground_truth")
fob.compute_uniqueness(dataset)   # 중복·유사 프레임 탐지

# 의심도 높은 순으로 사람이 검수
suspects = dataset.sort_by("mistakenness", reverse=True).limit(50)

3. 클래스 불균형 점검

화염·연기·배경 비율이 한쪽으로 치우치면 모델이 흔한 클래스만 잘 맞춥니다. 비율을 세고, 합이 전체 라벨 수와 맞는지 검산합니다.

PYTHON
from collections import Counter
counts = Counter(label for s in samples for label in s.labels)   # 클래스별 라벨 수
total = sum(counts.values())
assert total == sum(len(s.labels) for s in samples), "검산 실패: 클래스 합 ≠ 전체 라벨 수"
for cls, n in counts.most_common():
    print(f"{cls:6} {n:6,} ({n/total:5.1%})")   # 너무 적은 클래스는 수집·증강 보강

4. 검수는 후보, 확정은 사람

자동 점수는 "여기를 보라"는 후보일 뿐입니다. 화염인지 연기인지, 학습에 쓸지 뺄지는 도메인을 아는 사람이 확정합니다.

▸ 소방 활용 포인트
화재 탐지의 오탐·미탐 상당수는 모델이 아니라 라벨 품질에서 옵니다. 학습 한 번의 검수가, 현장 오경보와 재학습 비용을 크게 줄입니다. 오라벨을 고친 뒤에는 train/val에 같은 프레임이 섞이지 않았는지(중복) 다시 확인하세요.

사람 검토 체크리스트

TEXT
- [ ] 일치율이 낮은 클래스는 라벨 기준을 다시 합의했습니다.
- [ ] 의심도 상위 프레임을 사람이 직접 검수했습니다.
- [ ] 클래스 합이 전체 라벨 수와 일치합니다(누락 없음).
- [ ] 거의 같은 프레임이 train/val에 동시에 들어가지 않았습니다.
- [ ] 공개·합성 데이터로 작업했고, 실제 CCTV에 사람이 식별되면 비식별했습니다.
⚠️ 흔한 실수
자동 의심 점수는 후보이지 정답이 아닙니다 — 옅은 연기·수증기·역광 같은 경계 사례는 도메인 전문가가 확정합니다. 학습 데이터에 식별 가능한 사람·차량번호가 찍혔다면 개인정보 점검을 거치세요.

→ 이 검수는 화재 영상에서 화염·연기 탐지하기의 앞단계이고, 안전한 AI 운영 도구의 라벨링 도구(Label Studio·CVAT·FiftyOne)와 이어집니다.