Data Science/딥러닝

Object Detection

Boxya 2025. 4. 9. 20:13

[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 내부에서 진행하여 속도 개선
      • 정확도가 높지만 여전히 연산량이 많음
    • 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의 원리

  1. 입력 이미지 + S x S Grid
    1. 원본 이미지를 S x S 크기의 Grid로 분할 (e.g. 7 x 7 Grid)
    2. 각 Grid Cell이 자신의 영역 내에서 객체를 탐지하려고 함
    3. 하지만 한 객체가 여러 Grid에 걸쳐 있을 수 있음
    4. 객체의 중심이 속한 Grid Cell이 그 객체를 예측함
  2. Bounding Box + Confidence Score 예측
    1. 각 Grid Cell은 B개의 Bounding Box를 예측 (B는 일반적으로 2 또는 3)
    2. 각 Bounding Box는 (x, y, w, h, confidence)를 포함
      • (x, y) : 객체 중심의 상대적 좌표 (Grid Cell 내부 기준)
      • (w, h) : Bounding Box의 너비와 노이 (쩐체 이미지 대비 상대 값)
      • confidence : 박스 안에 객체가 있을 확률 x 박스의 정확성 (IoU)
    3. YOLO는 이 예측을 CNN의 한 번의 Forward Pass로 수행함
  3. 최종 예측 (Final Detections)
    1. 각 Grid Cell이 예측한 B개의 Bounding Box 중 가장 신뢰도 높은 것만 선택
      • Confidence Score가 낮은 박스 제거
    2. Non-Maximum Suppression(NMS) 적용하여 중복된 박스를 제거
    3. 최종적으로 정확한 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)하여 최종 결과를 결정

NMS (Non-Maximum Suppression)

  • 모델에서 중복된 Bounding Box를 제거하고 가장 신뢰도가 높은 박스만 남기는 과정
  • 같은 객체를 여러 개의 박스로 탐지했을 때, 가장 확신하는 박스만 남기고 나머지는 제거
  • Confidence Score와 IoU를 기반으로 동작
    1. Confidence Score 임계 값 이하의 Bounding Box 제거
    2. 남은 Bounding Box들을 Confidence Score 내림차순으로 정렬
    3. 가장 Confidence Score가 높은 첫 번째 박스를 선택하고 다른 박스와 IoU 비교
      • 선택한 박스와 IoU(겹치는 정도)를 계산하여 IoU 값이 임계 값 이상인 다른 박스들을 제거
        • IoU >= 임계 값 (보통 0.5 ~ 0.6) : 같은 객체라고 판단 -> 제거
        • IoU < 임계 값 : 다른 객체일 가능성이 있음 -> 유지
    4. 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