학부 시절, 나는 인공지능 분야에 입문하면서 객체 탐지(Object Detection) 알고리즘을 처음 접하게 되었다.
특히, 동영상 속에서 실시간으로 바운딩 박스를 그려 대상의 위치와 종류를 알려주는 기술은 내게 큰 충격과 흥미를 주었다.
최근에는 KT 부트캠프를 통해 기초 개념을 재정립할 기회를 얻었고, 그동안 잊고 지냈던 이론적 기반을 다시 학습하며 체계를 다지게 되었다.
특히, 인턴십 당시 YOLOv7을 실무에서 직접 다루었던 경험이 있어, 이번 글을 통해 YOLO의 원리를 정리하고, 객체 탐지에 대한 이해를 보다 깊이 있게 체득하고자 한다. (벌써 yolov12가 나왔다고 한다..)
컴퓨터 비전 분야에서 객체 검출 기술은 인공지능에게 "세상을 인식하는 눈" 같은 역할을 한다.
이미지나 영상 속에서 사람, 차량, 동물과 같은 객체를 찾아내고, 그 위치를 정확히 표시하는 것이다.
이 기술의 발전을 이끈 대표적인 알고리즘 중 하나가 바로 YOLO (You Only Look Once) 이다.
YOLO는 속도와 정확성을 동시에 달성하며, 기존의 기술을 넘어 실시간 객체 검출을 가능하게 한 획기적인 모델이기 때문이다.
이번 글에서는 YOLO의 작동 원리와 객체 검출의 정밀도를 판단하는 핵심 지표인 IoU(Intersection over Union) 와 Confidence Score(신뢰도 점수) 에 대해 심층적으로 살펴보고자 한다.
YOLO란?
YOLO는 이미지 전체를 한 번에 분석하여 그 안에 있는 모든 객체의 위치와 종류를 예측하는 알고리즘이다.
기존 R-CNN 방식들이 "이 부분일지도?" 말하며 후보 영역을 먼저 찾고 그 후 분류하는 2단계 방식이라면,
YOLO는 "전체를 한 번에 훑고 동시에 판단"하는 1단계 방식이다. (정말 단 한번만 보라는 말 그대로 이다)
YOLO vs. R-CNN(기존 전통 객체 검출) 비교:
항목 | R-CNN 계열 | YOLO 알고리즘 |
방식 | 두 단계 | 단일 통합 |
속도 | 느림 | 빠름 (실시간) |
예측 단위 | 후보 영역 → CNN | 이미지 전체 그리드화 |
Confidence Score | 별도 없음 (Softmax 기반) | IoU와 결합된 확률 기반 |
IoU 활용 | 평가만 | 평가 + Confidence + NMS |
YOLO는 빠르면서도 정확한 객체 검출을 위해 그리드 기반 접근과 여러 평가 수치를 조합해 판단한다.
그 중 핵심 기법이 아래서 기술할 바로 Confidence Score와 IoU이다.
YOLO의 작동 원리
YOLO는 다음과 같은 단계를 통해 객체를 검출한다
이미지 분할
- 이미지를 S×S의 그리드 셀로 나눈다
- 각 셀은 자신이 중심으로 포함한 객체에 대해 바운딩 박스 + 클래스 확률을 예측한다
각 그리드 셀은 다음 정보를 예측한다:
예측 요소 | 설명 |
(x, y) | 바운딩 박스 중심 좌표 (셀 기준 상대적 위치) |
(w, h) | 바운딩 박스의 너비, 높이 |
Confidence Score | 해당 박스에 객체가 있을 확률 × 박스 정확도 (IoU) |
클래스 확률 | 객체가 어떤 클래스(예: 사람, 고양이 등)일 확률 |
IoU (Intersection over Union)
IoU는 예측한 바운딩 박스가 실제 객체와 얼마나 겹치는지를 수치화한 지표이다.
IoU=두 박스의 전체 넓이 합겹치는 영역의 넓이에 담긴 의미
- IoU = 1.0 → 완벽히 일치
- IoU = 0.5 → 절반 정도 겹침
- IoU = 0 → 전혀 겹치지 않음
중복 박스 제거(NMS) 에서도 사용된다.
Confidence Score (신뢰도 점수)란?
YOLO가 예측한 바운딩 박스가 얼마나 신뢰할 수 있는지를 나타내는 수치이다.
수식:
즉, 객체가 존재할 확률과 예측한 박스와 실제 객체의 겹침 정도(IoU)를 곱해서 나타낸다.
예시를 들어보자:
“이 상자에 진짜 고양이가 들어 있을 확률이 몇 %야? Confidence Score가 0.9라면, "이건 거의 확실히 고양이야! 그리고 위치도 꽤 정확해." 라는 의미이다.
반면 0.3이라면, "고양이일 수도 있는데, 좀 불확실해…" 라고 해석할 수 있다.
Confidence Score의 역할
- 높은 Confidence Score → 신뢰할 수 있는 검출 결과
- 낮은 Score →노이즈나 오검출일 가능성 높음 → 제거 대상
실무에서는 보통 0.5 이상의 Score만 시각화하거나, 모델 평가에 사용한다고 하지만 연구 직종에서는 mAP 등등 평가 기법을 활용하기도 한다.
Non-Maximum Suppression [중복 박스 제거] (NMS)
YOLO는 같은 객체에 대해 여러 박스를 예측할 수 있다.
모델에서 중복된 Bounding Box를 제거하고 가장 신뢰도가 높은 박스만 남기는 과정이다.
NMS 작동 방식:
- Confidence Score가 높은 순으로 박스 정렬
- 가장 높은 Score의 박스 선택
- 나머지 박스 중, 선택된 박스와 비교하여 IoU가 임계값 이상인 박스는 제거
결국, YOLO는 다음을 바탕으로 최종 객체 검출을 수행한다:
- 높은 Confidence Score → 신뢰성 있는 박스
- 적절한 IoU 기준 → 실제와 잘 겹치는 위치
- NMS 적용 → 중복 제거, 깔끔한 결과
GPT가 말아주는 YOLO를 더 쉽게 이해하는 비유
🎥 YOLO는 ‘스냅사진가’,
🧪 IoU는 ‘채점자’,
📢 Confidence Score는 ‘자신감 지수’
- 스냅사진가(YOLO): 한 번의 셔터로 전체 장면을 포착
- 채점자(IoU): 찍힌 사진에서 대상이 얼마나 정확하게 나왔는지 판단
- 자신감 지수(Confidence Score): "이건 진짜 맞아!" 하고 스냅사진가가 자신 있게 말하는 정도
💬 “나 이 웰시코기 진짜 찍었어. 정확도 92%야!” 라는 느낌!
'머신러닝 & 딥러닝 & AI 맛보며 친해지기' 카테고리의 다른 글
[DL] 스마트폰 센서 기반 인간 행동 분류 모델 구현 및 성능 평가 (1) | 2025.05.01 |
---|---|
RAG(Retrieval-Augmented Generation)와 Vector DB 란? (3) | 2025.04.21 |
[ML] 분류(Classification)와 회귀(Regression)의 차이 (0) | 2025.04.18 |
Sequential vs Class: PyTorch 모델 정의 방법과 비교 (1) | 2025.04.14 |
[OpenCV] Ubuntu 22.04 버전에서 OpenCV 4.10.0 GPU 적용하기 (2) | 2024.10.20 |