왜 시맨틱 분할이란? 픽셀 단위 분류의 세계가 필요한가? 실무에서 이 개념 없이는 문제를 해결할 수 없습니다. 핵심 동기와 배경을 먼저 이해합시다.
시맨틱 분할(Semantic Segmentation)이란?
이미지의 모든 픽셀에 클래스 라벨을 부여하는 컴퓨터 비전 태스크입니다. "이 이미지에 고양이가 있다"가 아니라 "이 픽셀은 고양이, 저 픽셀은 배경"까지 알려주는 겁니다.
분류(Classification) vs 검출(Detection) vs 분할(Segmentation):
| 태스크 | 출력 | 세밀도 |
|---|---|---|
| 분류 | 이미지 1개 → 라벨 1개 | "고양이 사진" |
| 검출 | 이미지 → 바운딩 박스 + 라벨 | "여기에 고양이" (사각형) |
| 시맨틱 분할 | 이미지 → 픽셀별 라벨 맵 | "이 픽셀이 고양이" |
입출력 형태:
- 입력: H×W×3 (RGB 이미지)
- 출력: H×W (각 픽셀 = 클래스 번호)
- 모델 실제 출력: H×W×C (C = 클래스 수, softmax 전 logit)
- argmax를 취하면 H×W 클래스 맵
Semantic vs Instance vs Panoptic:
- Semantic: 같은 클래스 물체를 구분하지 않음 (사람 3명 = 전부 "사람")
- Instance: 각 물체를 개별 마스크로 분리 (사람1, 사람2, 사람3)
- Panoptic: Semantic + Instance (배경은 semantic, 물체는 instance)
대표 데이터셋:
- PASCAL VOC: 21클래스 (배경 포함)
- Cityscapes: 도시 주행 30클래스
- ADE20K: 150클래스 (실내외 다양)
- COCO-Stuff: 171클래스
FCN(Fully Convolutional Network)은 Long 등이 제안한 최초의 픽셀 단위 분류 네트워크이다 (Long et al., 2015).