YOLO (You Only Look Once)는 객체 탐지(Object Detection)를 단일 CNN 연산으로 수행하는 1-stage 탐지 모델입니다.
기존 R-CNN 계열 방식과 달리 이미지를 한 번만 처리하여 모든 객체의 위치(Bounding Box)와 클래스(Label)를 동시에 예측합니다.
| 기존 방식 | 한계 |
|---|---|
| R-CNN, Fast/Faster R-CNN | 구조 복잡, 2단계 처리로 속도 느림 |
| Sliding window 방식 | 계산량 과다, 부정확한 localization |
YOLO는 “객체 탐지를 이미지 분류처럼 한 번에 처리할 수 없을까?”라는 아이디어에서 출발했습니다.
YOLO는 입력 이미지를 받아 CNN 기반 네트워크를 통해 다음을 예측합니다.
YOLO는 입력 이미지를 S × S 그리드 셀로 분할하여 예측을 수행합니다.
(x, y) : box 중심 좌표 (셀 기준 상대 좌표, 0~1)(w, h) : box 너비, 높이 (전체 이미지 기준 정규화)출력 결과는 (S, S, B×5 + C) 형태의 텐서로 나타냅니다.
| 항목 | 설명 |
|---|---|
S | 그리드 셀 수 (e.g., 7) |
B | 예측 박스 수 (e.g., 2) |
C | 클래스 수 |
B×5 | 각 박스에 대해 (x, y, w, h, confidence) |
예: S=7, B=2, C=20 (VOC 기준) → 출력 크기 = (7, 7, 30)
YOLO의 손실 함수는 다음 세 가지 요소를 조합합니다
(x, y, w, h)와 실제 box의 거리 (MSE)객체가 없는 그리드에서의 confidence 손실은 적은 가중치로 조정합니다 (λnoobj)
| 항목 | 설명 |
|---|---|
| 실시간 속도 | 1-stage 구조로 매우 빠름 (YOLOv3: 최대 45 FPS) |
| 전체 이미지 기반 예측 | 전체 컨텍스트를 활용하여 오탐률 감소 |
| End-to-End 학습 | 객체 탐지 전체를 단일 모델로 직접 학습 |
| 구조 단순함 | Region Proposal 필요 없음, R-CNN 계열보다 훨씬 간단 |
| 범용성 | 영상 분석, 자율주행, 드론 등 다양한 실시간 응용에 활용 가능 |
| 한계점 | 설명 |
|---|---|
| 작은 객체 탐지 취약 | 그리드 셀이 큰 물체를 중심으로 예측, 작은 객체 간 겹침 처리 어려움 |
| 고정된 anchor 개수 | 각 셀당 고정된 박스 수(B개)만 예측 → 복잡한 장면에 한계 |
| localization 정확도 낮음 | Bounding Box 회귀 방식이 coarse → 좌표 정밀도 부족 |
| 다중 객체 처리 제한 | 같은 셀에 여러 객체가 있을 경우 오직 하나만 예측 가능 |
| 버전 | 주요 개선 | 장점 | 한계 |
|---|---|---|---|
| YOLOv1 | 단일 CNN, 빠름 | 속도 우수 | 작은 객체 탐지 취약 |
| YOLOv2 | Anchor box, BN | 정확도 향상 | anchor 설정 복잡 |
| YOLOv3 | 다중 스케일, backbone 강화 | 정밀도↑, 실용성↑ | 더 무거운 연산량 |
목적: 일반 GPU에서 학습 가능한 최고 성능의 객체 탐지기
백본: CSPDarknet-53
주요 기법:
장점:
PyTorch 기반 YOLO 구현 (v4는 Darknet 기반)
경량화/확장성 강조 → v5s, v5m, v5l, v5x 제공
특징:
장점:
⚠️ (YOLO "v5"는 공식 Redmon 라인에서 벗어난 비공식 버전)
YOLOv4의 후계자이자 현재 기준 최고 성능 실시간 탐지기 중 하나
핵심 개선:
장점:
완전 리디자인: PyTorch native 모델 + export 쉬움
anchor-free 방식 → YOLOR/DETR 계열과 유사
주요 특징:
장점:
| 버전 | 발표 | 백본 | 구조 특징 | 장점 |
|---|---|---|---|---|
| YOLOv4 | 2020 | CSPDarknet53 | PANet, Mosaic, CIoU | 정확도 & 속도 우수 |
| YOLOv5 | 2020 | v5s~v5x | PyTorch, AutoAnchor | 경량화, 배포 쉬움 |
| YOLOv7 | 2022 | E-ELAN | 고성능 + 실시간 | SOTA 성능 |
| YOLOv8 | 2023 | Custom | Anchor-free, API 개선 | 가장 최신, 쉬운 사용 |
| 분야 | 적용 사례 |
|---|---|
| 자율주행 | 차량, 보행자, 신호등 탐지 |
| 의료 영상 | 병변, 종양, 기침 감지 (X-ray, CT 등) |
| CCTV/보안 | 침입자 탐지, 사람 수 계산 |
| 드론 | 실시간 물체 추적 및 탐지 |
| 리테일 | 고객 행동 분석, 상품 진열 인식 |
| 산업현장 | 불량품 탐지, 작업자 안전 감시 |
YOLO는 빠르고 정확한 실시간 처리가 필요한 곳에서 특히 효과적입니다.
YOLO의 여러 버전 중 어떤 것을 선택할지에 대한 실용적인 가이드를 제공합니다.
| 상황 | 추천 버전 | 이유 |
|---|---|---|
| 실시간 속도 우선 | YOLOv5s, YOLOv8n | 경량, 모바일 추론 가능 |
| 정확도 최우선 | YOLOv7, YOLOv8l | 최고 성능 (mAP 기준) |
| 연구 목적, 커스터마이징 | YOLOv5 (PyTorch 기반) | 구조 이해 및 수정 쉬움 |
| 전통적 YOLO 구조 활용 | YOLOv4 | Darknet 기반, 강력한 트릭 포함 |
| 클라우드/서비스 연동 | YOLOv8 (Ultralytics API) | REST API, ONNX 내보내기 쉬움 |
.txt 라벨 형식 사용 (x_center, y_center, w, h)| 버전 | 장점 | 단점 | 대표 라이브러리 |
|---|---|---|---|
| YOLOv4 | 정확도·속도 우수 | Darknet 기반, 사용 불편 | AlexeyAB |
| YOLOv5 | 쉬운 사용, PyTorch 기반 | 비공식 | Ultralytics YOLOv5 |
| YOLOv7 | 고성능 실시간 탐지기 | 복잡한 구조 | WONGKINYO |
| YOLOv8 | 최신, anchor-free, API 좋음 | 구조 변경 많음 | Ultralytics YOLOv8 |