[KT] AIVLE SCHOOL 11일차
Object Detection(객체탐지) 이해
- Image Classification
- 이미지 전체에 대해 하나의 클래스(Label)를 예측하는 작업(Single Object)
- Bounding Box(경계 박스) 정보 없이 이미지 전체에 대한 단일 분류 수행
- 예제 : "이 사진은 고양이인가, 강아지인가?"
- Image Classification + Localization
- 이미지에서 단일 객체의 위치를 찾기 위해 Bounding Box(경계박스) 좌표를 예측(Single Object)
- Classification과 함께 사용되며, 단일 객체에 대한 위치 정보만 제공
- 예제 : "이 사진에서 고양이가 어디에 있는가?"
- Object Detection
- 이미지 속 여러 개의 객체를 찾아내고 Bounding Box(경계 박스) 좌표와 각 객체의 클래스를 예측하는 작업(Multi Object)
- 대표적인 모델 : R-CNN 계열, YOLO 등
- 예제 : "이 사진에서 강아지, 고양이, 오리의 위치를 찾아라"
- Instance Segmentation
- 각 객체별로 픽셀 단위 영역을 정확히 구분(동일한 클래스라도 개별 객체를 따로 구별)
- 같은 클래스의 여러 객체도 개별적으로 구분 가능
- 예제 : "이 이미지에서 두 마리 고양이를 각각 다른 색으로 표시하라"
Object Detection의 대표적인 접근법
- R-CNN 계열 (Region-Based CNN)
- R-CNN (2014)
- 이미지에서 Selective Search 기법을 이용해 후보 영역(Region Proposal)을 먼저 생성
- 각 후보 영역을 CNN으로 개별 분류
- 속도가 매우 느림 (한 장의 이미지 처리에 수 초 ~ 수십 초)
- Fast R-CNN (2015)
- R-CNN보다 개선된 버전
- 한 번의 CNN 연산으로 특징을 추출 후, ROI Pooling을 적용하여 속도를 높임
- Faster R-CNN(2016)
- Region Proposal Network(RPN) 도입
- 후보 영역 탐색을 CNN 내부에서 진행하여 속도 개선
- 정확도가 높지만 여전히 연산량이 많음
- Region Proposal Network(RPN) 도입
- YOLO 계열 (You Only Look Once)
- YOLO (2016)
- 기존 R-CNN 계열 모델은 연산량이 많아 실시간 탐지가 어려웠음
- 이미지를 한 번만 보는 방식(One-shot Detection)
- CNN 기반 회귀(regression) 모델로 Bounding Box와 클래스 예측을 한 번에 수행
- 전체 이미지를 한 번에 처리 -> 속도가 매우 빠름
- YOLOv3, YOLO4, YOLOv5, YOLOv8까지 발전하며 정확도 & 속도 개선됨
- YOLO의 핵심 아이디어
- 이미지를 여러 개의 Grid Cell로 나눔
- 각 Grid Cell에서 Bounding Box와 클래스 예측
- 네트워크 한 번의 Forward Pass로 모든 객체 탐지
- YOLO (2016)
- R-CNN (2014)
YOLO의 원리
- 입력 이미지 + S x S Grid
- 원본 이미지를 S x S 크기의 Grid로 분할 (e.g. 7 x 7 Grid)
- 각 Grid Cell이 자신의 영역 내에서 객체를 탐지하려고 함
- 하지만 한 객체가 여러 Grid에 걸쳐 있을 수 있음
- 객체의 중심이 속한 Grid Cell이 그 객체를 예측함
- Bounding Box + Confidence Score 예측
- 각 Grid Cell은 B개의 Bounding Box를 예측 (B는 일반적으로 2 또는 3)
- 각 Bounding Box는 (x, y, w, h, confidence)를 포함
- (x, y) : 객체 중심의 상대적 좌표 (Grid Cell 내부 기준)
- (w, h) : Bounding Box의 너비와 노이 (쩐체 이미지 대비 상대 값)
- confidence : 박스 안에 객체가 있을 확률 x 박스의 정확성 (IoU)
- YOLO는 이 예측을 CNN의 한 번의 Forward Pass로 수행함
- 최종 예측 (Final Detections)
- 각 Grid Cell이 예측한 B개의 Bounding Box 중 가장 신뢰도 높은 것만 선택
- Confidence Score가 낮은 박스 제거
- Non-Maximum Suppression(NMS) 적용하여 중복된 박스를 제거
- 최종적으로 정확한 Bounding Box와 클래스가 남음
- 각 Grid Cell이 예측한 B개의 Bounding Box 중 가장 신뢰도 높은 것만 선택
YOLO 모델 평가
- Bounding Box가 정확한가 ? : IoU
- Bounding Box 안에 Object가 존재하는가? : Confidence Score
- Object는 Target Class 인가? : 분류 문제 평가 지표들 (Recall, Precision, AP, mAP)
Bounding Box
- 하나의 Object가 포함된 최소 크기 박스
- 박스의 위치 정보
- x min, y min, x max, y max
- x center, y center, width, height
- 모델은 박스의 위치와 박스 안의 객체 탐지
- Bounding Box를 예측
- YOLO는 각 Grid Cell에서 Bounding Box를 예측할 때 x_center, y_center, w, h 를 예측
- 이유
- 작은 Bounding Box와 큰 Bounding Box의 상대적 차이를 쉽게 학습 가능
- 좌표 이동이나 크기 변화에 대해 더 유연한 예측 가능
- 모델 평가
- IoU (Intersection over Union)
- 예측된 Bounding Box와 실제 Bounding Box의 겹치는 정도
- 두 박스의 중복 영역 크기를 통해 측정 : 0 ~ 1
- IoU = 두 박스의 교집합 / 두 박스의 합집합
- 겹치는 영역이 넓을 수록 1에 가까운 값
- IoU > 0.5 정도면 올바른 탐지(True Positive, TP)
- Confidence Score
- Bounding Box가 정확한지, 그리고 그 안에 객체가 존재하는지 평가하는 지표
- YOLO 모델이 예측한 Bounding Box 안에 객체가 존재할 확률을 나타냄
- 이 박스 안에 객체가 있을 확률이 얼마나 높은가? 를 수치화한 값
- Confidence = p(object) x IOU
- p(object) : 해당 Grid Cell 안에 객체(Object)가 존재할 확률
- Confidence Score가 낮은 Bounding Box를 필터링(NMS)하여 최종 결과를 결정
- IoU (Intersection over Union)
NMS (Non-Maximum Suppression)
- 모델에서 중복된 Bounding Box를 제거하고 가장 신뢰도가 높은 박스만 남기는 과정
- 같은 객체를 여러 개의 박스로 탐지했을 때, 가장 확신하는 박스만 남기고 나머지는 제거
- Confidence Score와 IoU를 기반으로 동작
- Confidence Score 임계 값 이하의 Bounding Box 제거
- 남은 Bounding Box들을 Confidence Score 내림차순으로 정렬
- 가장 Confidence Score가 높은 첫 번째 박스를 선택하고 다른 박스와 IoU 비교
- 선택한 박스와 IoU(겹치는 정도)를 계산하여 IoU 값이 임계 값 이상인 다른 박스들을 제거
- IoU >= 임계 값 (보통 0.5 ~ 0.6) : 같은 객체라고 판단 -> 제거
- IoU < 임계 값 : 다른 객체일 가능성이 있음 -> 유지
- 선택한 박스와 IoU(겹치는 정도)를 계산하여 IoU 값이 임계 값 이상인 다른 박스들을 제거
- Bounding Box가 하나 남을 때까지 반복 수행
분류 모델 평가
- Precision(정밀도)
- 탐지한 객체(TP+FP) 중에서 정말로 정답(실제 객체, TP)인 비율
- 높다 : 잘못된 탐지(False Positive)가 적다. (정확한 탐지만 수행)
- 낮다 : 잘못된 탐지가 많다. (쓸데없는 Bounding Box가 많음)
- Recall(재현율)
- 실제 객체(TP+FN)중에서 정확히 탐지(TP)한 비율
- 탐지 실패(FN)를 얼마나 줄였는지 평가하는 지표
- 높다 : 실제 객체를 놓치지 않고 잘 탐지
- 낮다 : 탐지해야할 객체를 많이 놓침(FN이 많음)
예측한 Object가 Target?
- Confidence Score의 임계 값을 높이면
- 정확하다고 확신하는 Bounding Box만 유지하고 신뢰도가 낮은 탐지는 버림
- FP가 줄어 Precision ↑
- FN이 증가하여 Recall ↓
- Confidence Score의 임계 값을 낮추면
- Confidence Score가 낮아도 Bounding Box를 탐지 결과로 남김
- FP가 증가하여 Precision ↓
- FN이 증가하여 Recall ↑
- Precision - Recall Curve
- Confidence score 임계 값을 조금씩 조정하며 Recall과 Precision 값을 그래프로 그림
- AP(Average Precision)
- 커브 아래 면적(AUC, Area Under Curve)
- 임계 값과 상관 없이 모델을 평가
- Confidence Score의 임계 값 조정에 따라 정밀도, 민감도가 달라지므로
- 모델의 성능을 Confidence Score 임계 값에 상관 없이 평가할 수 있어야 함
- AP가 높을 수록 좋은 모델
- mAP(mean Average Precision)
- 각 클래스의 AP의 평균
UltraLytics
- YOLO(You Only Look Once) 시리즈 개발 회사
- 오픈소스 기반의 객체 탐지 프레임워크(라이브러리)를 제공
- Ultralytics YOLOv11이 가장 최신 버전(2025년 3월)
- 사용자가 쉽게 객체 탐지를 수행할 수 있도록 PyTorch 기반의 강력한 딥러닝 모델을 제공
'Data Science > 딥러닝' 카테고리의 다른 글
CNN (0) | 2025.04.08 |
---|---|
Early Stopping와 Dropout (0) | 2025.04.08 |
모델 성능 최적화 (0) | 2025.04.07 |
분류 모델링(Classification) (0) | 2025.04.07 |
회귀 모델링(Regression) (0) | 2025.04.04 |