데이터셋 포맷
학습 목표
- COCO, Pascal VOC, YOLO 포맷의 구조와 차이를 설명할 수 있다
- 각 포맷의 좌표 표현 방식을 이해하고 변환할 수 있다
- 프로젝트에 적합한 포맷을 선택할 수 있다
- 포맷 간 변환 코드를 작성할 수 있다
왜 중요한가
CV 모델마다 요구하는 데이터 포맷이 다릅니다. YOLO는 YOLO 포맷, Detectron2는 COCO 포맷, 일부 레거시 도구는 Pascal VOC를 사용합니다. 라벨링 도구에서 내보낸 데이터를 학습 프레임워크에 맞게 변환하는 능력은 CV 실무의 필수 역량입니다.포맷 비교 요약
| 비교 항목 | COCO | Pascal VOC | YOLO |
|---|---|---|---|
| 파일 형식 | JSON (1개) | XML (이미지당 1개) | TXT (이미지당 1개) |
| 좌표 형식 | 절대 좌표 (x, y, w, h) | 절대 좌표 (xmin, ymin, xmax, ymax) | 정규화 좌표 (cx, cy, w, h) |
| 좌표 기준 | 좌상단 | 좌상단~우하단 | 중심 |
| 메타데이터 | 풍부 (카테고리, 이미지 정보) | 개별 파일에 포함 | 없음 (별도 yaml) |
| 지원 태스크 | 탐지, 세그멘테이션, 키포인트 | 탐지 | 탐지, 세그멘테이션, 포즈 |
| 대표 프레임워크 | Detectron2, MMDetection | 레거시 프레임워크 | ultralytics (YOLO) |
COCO 포맷
COCO(Common Objects in Context) 포맷은 하나의 JSON 파일에 모든 어노테이션을 저장합니다.디렉터리 구조
JSON 구조
COCO의
bbox는 [x_min, y_min, width, height] 형식이며, 좌상단 모서리 기준 절대 좌표입니다. 세그멘테이션 어노테이션은 segmentation 필드에 다각형 좌표 리스트로 저장됩니다.Pascal VOC 포맷
Pascal VOC 포맷은 이미지마다 개별 XML 파일을 사용합니다.디렉터리 구조
XML 구조
YOLO 포맷
YOLO 포맷은 이미지마다 텍스트 파일을 사용하며, 정규화된 중심 좌표를 사용합니다.디렉터리 구조
레이블 파일 (TXT)
dataset.yaml
좌표 변환
좌표 형식 정리
변환 코드
COCO → YOLO 전체 변환 스크립트
분류 데이터셋 구조
분류는 별도의 어노테이션 파일 없이 폴더 구조로 레이블을 표현합니다.어떤 포맷을 선택해야 하나요?
어떤 포맷을 선택해야 하나요?
ultralytics YOLO를 사용한다면 YOLO 포맷, Detectron2를 사용한다면 COCO 포맷을 선택하세요. 라벨링 도구 대부분은 여러 포맷으로 내보내기를 지원하므로, 학습 프레임워크에 맞는 포맷을 선택하면 됩니다.
세그멘테이션 어노테이션은 어떻게 저장하나요?
세그멘테이션 어노테이션은 어떻게 저장하나요?
COCO 포맷은
segmentation 필드에 다각형 좌표를, YOLO 세그멘테이션은 레이블 파일에 class_id x1 y1 x2 y2 ... xn yn 형태로 다각형 좌표를 저장합니다. 별도의 마스크 이미지(PNG)로 저장하는 방식도 자주 사용됩니다.COCO 포맷에서 iscrowd 필드는 무엇인가요?
COCO 포맷에서 iscrowd 필드는 무엇인가요?
iscrowd=1은 군중처럼 개별 객체를 구분하기 어려운 영역을 표시합니다. 학습 시 이 영역은 무시하거나 별도 처리됩니다. 일반적인 프로젝트에서는 모두 0으로 설정합니다.체크리스트
- COCO, VOC, YOLO 포맷의 디렉터리 구조를 안다
- 각 포맷의 좌표 표현 방식 차이를 이해했다
- 포맷 간 좌표 변환 로직을 작성할 수 있다
- 분류 데이터셋의 폴더 구조를 안다
- 프로젝트에 맞는 포맷을 선택할 수 있다

