YOLO – 실시간 객체 탐지 알고리즘

2025. 3. 3. 12:25IT/AI

반응형

YOLO(You Only Look Once)는 실시간 객체 탐지(Object Detection)를 위한 딥러닝 기반 알고리즘으로, 2016년 Joseph Redmon이 처음 제안했습니다. YOLO는 기존의 R-CNN 계열 방식(Faster R-CNN 등)보다 빠르고 효율적으로 객체를 탐지할 수 있어 실시간 컴퓨터 비전 애플리케이션에서 널리 사용됩니다.


YOLO

YOLO는 이미지에서 한 번의 전처리만으로 객체의 위치와 클래스를 동시에 예측하는 End-to-End 방식의 딥러닝 객체 탐지 모델입니다.

🔹 기존 방식(R-CNN, Faster R-CNN)과 차이점

R-CNN 계열: 이미지에서 후보 영역(Region Proposal)을 생성한 후, CNN을 여러 번 실행하여 객체를 탐지
YOLO: 전체 이미지를 한 번(One Shot)만 보고 객체 위치와 클래스 정보를 동시에 예측

🔹 YOLO의 장점

  • 매우 빠름  – 실시간 탐지가 가능 (수백 FPS)
  • End-to-End 학습 가능 – 한 번의 신경망 실행만으로 객체 탐지
  • 전역(Context) 정보 활용 가능 – 이미지를 한 번에 처리하여 객체 간 관계를 더 잘 파악

⛔ YOLO의 단점

  • 작은 객체 탐지 성능이 낮음 – 그리드 기반 방식이므로 작은 물체를 놓칠 가능성이 있음
  • 경계 박스 정확도(R-CNN 대비 약간 낮음) – 중심 기반 탐지 방식이므로 박스 위치가 정확하지 않을 수 있음

YOLO의 동작 원리

YOLO는 이미지를 S×S 크기의 그리드(Cell)로 나눈 후, 각 셀에서 객체를 예측하는 방식으로 작동합니다.
🔹 YOLO의 예측 방식

  • 입력 이미지 크기: 416×416 또는 608×608 픽셀
  • CNN을 사용하여 이미지를 특징 맵으로 변환
  • 이미지를 S×S 그리드(Cell)로 분할 (예: S=7 → 7×7 그리드)
  • 각 셀에서 B개의 바운딩 박스와 신뢰도 예측
  • 높은 신뢰도를 가진 바운딩 박스를 선택하고, Non-Maximum Suppression(NMS)을 적용하여 최종 탐지 결과 도출
  •  

💡 출력 예측 값

  • 각 그리드 셀은 (x, y, w, h, confidence, class probabilities) 형태로 예측
  • (x, y) → 바운딩 박스 중심 좌표
  • (w, h) → 바운딩 박스 크기
  • confidence → 박스 안에 객체가 있을 확률
  • class probabilities → 객체의 클래스 확률 분포
반응형

YOLO의 주요 버전 및 발전 과정

YOLO는 여러 차례 업그레이드되면서 속도와 정확도가 개선되었습니다.

YOLO 버전 주요 특징 FPS (속도) mAP (정확도)
YOLOv1 (2016) 최초 버전, 빠른 속도, 정확도는 낮음 45 FPS 63.4%
YOLOv2 (2017) 앵커 박스 도입, 성능 향상 67 FPS 76.8%
YOLOv3 (2018) 다중 스케일 예측, 더 깊은 네트워크 30-60 FPS 81.5%
YOLOv4 (2020) CSPDarknet, 데이터 증강 기법 추가 30-60 FPS 89.0%
YOLOv5 (2021) PyTorch 기반, 경량화 모델 추가 140+ FPS 90.0%
YOLOv7 (2022) 속도-정확도 최적화, 최신 연구 반영 160+ FPS 91.5%
YOLOv8 (2023) 성능 최적화 및 최신 기능 추가 170+ FPS 92.0%

💡 YOLOv8 최신 버전은 이전 모델 대비 정확도와 속도가 모두 향상됨.


YOLO의 활용 사례

YOLO는 다양한 실시간 객체 탐지 분야에서 활용됩니다.

📌 자율주행 자동차 🚗

  • 보행자, 차량, 신호등, 도로 표지판 탐지
  • 실시간 위험 감지 및 경로 계획

📌 보안 및 감시 시스템 🔍

  • CCTV 영상 분석 및 침입 탐지
  • 무단출입 감지 및 경고 시스템

📌 의료 영상 분석 🏥

  • CT, MRI, X-ray 영상에서 종양 및 질병 탐지
  • 내시경 영상에서 병변 감지

📌 스마트 팩토리 및 산업 자동화 🏭

  • 공장에서 부품 및 제품 탐지
  • 품질 검사 및 불량품 분류

📌 5. 스포츠 분석 ⚽

  • 선수 및 공의 움직임 추적
  • 경기 중 이벤트 분석 (예: 골, 오프사이드 판정)

YOLO 사용 방법

YOLO는 Python과 PyTorch 또는 TensorFlow를 이용해 쉽게 사용할 수 있습니다.

YOLOv8 실행 예제 (Ultralytics 라이브러리 활용)

# YOLOv8 설치 
!pip install ultralytics 

# YOLOv8 불러오기 
from ultralytics import YOLO 

# 사전 학습된 YOLOv8 모델 로드 
model = YOLO("yolov8n.pt") 

# 이미지에서 객체 탐지 
results = model("test.jpg") 

# 결과 시각화 results.show()

YOLO를 사용한 웹캠 실시간 객체 탐지

# 실시간 웹캠 탐지 실행 
model.predict(source=0, show=True)

YOLO와 다른 객체 탐지 모델 비교

YOLO는 다른 딥러닝 기반 객체 탐지 모델과 비교했을 때 속도와 정확성에서 강점을 가집니다.

모델 방식 속도(FPS) 정확도(mAP) 특징
Faster R-CNN 2-Stage 7~17 FPS 86% 높은 정확도, 느린 속도
SSD 1-Stage 22~59 FPS 79% 중간 속도 및 정확도
YOLO 1-Stage 45~170 FPS 90%+ 실시간 탐지 가능, 빠름
EfficientDet 1-Stage 20~50 FPS 92% 정확도 높음, 속도 중간

앞으로의 전망

✅ YOLO의 정확도와 속도는 계속 발전 중
✅ 경량화 및 모바일 적용 가능성 증가
✅ AI + YOLO 융합을 통한 더 정교한 탐지 가능 (예: AI 기반 자율주행, 스마트 시티 등)

반응형