Skip to main content

YOLO 시리즈 — 실시간 객체 탐지의 진화

YOLO(You Only Look Once)는 이미지를 한 번만 보고(One-stage) 객체의 위치와 클래스를 동시에 예측하는 실시간 탐지 모델입니다. 2015년 첫 등장 이후 지속적으로 발전하며 실무 표준이 되었습니다.

핵심 아이디어

전통적인 Two-stage 탐지(R-CNN 계열)는 영역 제안(Region Proposal)과 분류를 별도로 수행합니다. YOLO는 이를 하나의 회귀 문제로 통합하여, 이미지 전체를 그리드(Grid)로 나누고 각 그리드 셀에서 바운딩 박스와 클래스를 동시에 예측합니다.

동작 방식

구성 요소역할예시
백본(Backbone)이미지에서 특징 추출CSPDarknet, EfficientNet
넥(Neck)다중 스케일 특징 융합FPN, PAN, BiFPN
헤드(Head)최종 예측 (박스, 클래스, 신뢰도)Coupled/Decoupled Head

YOLO 버전 비교

버전연도관리 주체핵심 개선특징
YOLOv52020UltralyticsAutoAnchor, 증강 강화PyTorch 기반, 실무 표준
YOLOv62022MeituanRepVGG 백본, 효율 최적화산업용 최적화
YOLOv72022WongKinYiuE-ELAN, 계획적 재매개변수화학술 기반 개선
YOLOv82023UltralyticsAnchor-free, Decoupled Head통합 CLI, 멀티태스크
YOLOv92024WongKinYiuPGI, GELAN정보 손실 최소화
YOLOv102024TsinghuaNMS-free, 일관적 듀얼 할당후처리 제거
YOLO112024UltralyticsC3k2, SPPF 개선최신, 속도/성능 균형

Anchor-based vs Anchor-free

방식설명사용 버전
Anchor-based사전 정의된 앵커 박스 기반 예측YOLOv5, v7
Anchor-free앵커 없이 중심점 기반 예측YOLOv8, v10, YOLO11
Anchor-free 방식은 앵커 설계의 번거로움을 제거하고, 다양한 크기의 객체에 더 유연하게 대응합니다.

구현

Ultralytics 설치 및 기본 사용

from ultralytics import YOLO

# 사전학습 모델 로드
model = YOLO('yolo11n.pt')  # nano (가장 가벼운 모델)

# 모델 정보 확인
model.info()

# 이미지 추론
results = model('image.jpg')

# 결과 확인
for result in results:
    boxes = result.boxes
    for box in boxes:
        cls = int(box.cls)
        conf = float(box.conf)
        xyxy = box.xyxy[0].tolist()
        print(f"클래스: {cls}, 신뢰도: {conf:.2f}, 좌표: {xyxy}")

모델 크기별 비교

# 모델 크기 옵션 (n < s < m < l < x)
models = ['yolo11n.pt', 'yolo11s.pt', 'yolo11m.pt', 'yolo11l.pt', 'yolo11x.pt']
모델파라미터COCO mAP@50:95추론 속도 (T4)추천 용도
YOLO11n2.6M39.5%1.5ms엣지, 모바일
YOLO11s9.4M47.0%2.5ms경량 서버
YOLO11m20.1M51.5%4.7ms범용 (추천)
YOLO11l25.3M53.4%6.2ms고성능 서버
YOLO11x56.9M54.7%11.3ms최고 정확도

관련 기술 비교

비교 항목YOLOFaster R-CNNDETR
방식One-stageTwo-stageTransformer
속도매우 빠름느림보통
정확도높음매우 높음높음
후처리NMS 필요NMS 필요NMS 불필요
소형 객체보통좋음보통
실무 채택매우 높음보통증가 중
Ultralytics에서 관리하는 YOLO11(최신)을 추천합니다. Ultralytics는 통일된 CLI와 Python API를 제공하며, 모델 학습/추론/배포가 가장 간편합니다. 이전 프로젝트와의 호환성이 필요하면 YOLOv8을 사용하세요.
비최대 억제(Non-Maximum Suppression)는 하나의 객체에 대해 여러 개 생성된 바운딩 박스 중 가장 신뢰도가 높은 하나만 남기는 후처리 과정입니다. YOLOv10은 NMS 없이 학습하는 방식을 도입했습니다.

참고 논문

논문학회/연도링크
You Only Look Once (YOLOv1)CVPR 2016arXiv:1506.02640
YOLOv7: Trainable BoFCVPR 2023arXiv:2207.02696
YOLOv9: Programmable Gradient InformationarXiv 2024arXiv:2402.13616
YOLOv10: Real-Time E2E DetectionarXiv 2024arXiv:2405.14458