왜 객체 검출이란? 분류 vs 검출 vs 분할이 필요한가? 실무에서 이 개념 없이는 문제를 해결할 수 없습니다. 핵심 동기와 배경을 먼저 이해합시다.
컴퓨터 비전의 3가지 레벨:
1. 이미지 분류 (Classification)
- "이 사진에 뭐가 있지?" → "고양이"
- 이미지 전체에 하나의 레이블만 부여
- 객체가 어디에 있는지는 모름
- 예: ImageNet 분류 ("이 사진은 골든리트리버")
2. 객체 검출 (Object Detection)
- "어디에 뭐가 있지?" → "(x, y, w, h) = 고양이"
- 바운딩 박스(Bounding Box)로 위치를 표시
- 한 이미지에 여러 객체를 동시에 찾음
- 예: 자율주행에서 사람, 차, 신호등 동시에 검출
3. 시맨틱/인스턴스 분할 (Segmentation)
- "정확히 어디까지가 객체지?" → 픽셀 단위 마스크
- 시맨틱: 같은 클래스 = 같은 색 (모든 차가 파란색)
- 인스턴스: 개별 객체마다 다른 색 (차1=파랑, 차2=빨강)
- 예: 의료영상에서 종양 경계 정확히 표시
바운딩 박스란?
객체를 감싸는 최소 직사각형으로, (x, y, w, h) 4개 숫자로 표현해요:
- x, y: 박스 중심 좌표 (또는 좌상단)
- w, h: 박스의 너비와 높이
- 추가로 confidence (0~1): "이 박스에 진짜 객체가 있을 확률"
- 추가로 class: 어떤 종류의 객체인지 (사람, 차, 개, ...)
왜 객체 검출이 어려울까?
- 객체 개수가 이미지마다 다름 (0개? 100개?)
- 객체 크기가 다양함 (아주 작거나 아주 큼)
- 겹침(Occlusion): 객체끼리 가려짐
- 다양한 각도: 같은 객체를 정면, 측면, 위에서 봄
YOLO(You Only Look Once)는 Redmon 등이 제안한 실시간 객체 검출 프레임워크이다 (Redmon et al., 2016).