You Only Look Once: Unified, Real-Time Object Detection

논문 원본: https://arxiv.org/abs/1506.02640
논문 요약: YOLO는 객체 탐지를 단 하나의 신경망으로 end-to-end 학습하여, 빠르고 직관적인 방식으로 객체의 위치와 종류를 동시에 예측하는 딥러닝 모델
YOLO는 왜 등장했는가?
YOLO는 딥러닝 기반의 객체 탐지(Object Detection) 방법 중에서도 특히 속도와 구조적 단순함을 모두 갖춘 획기적인 모델로 평가받는다. 2016년 CVPR에 발표된 YOLO 논문은 객체 탐지를 수행하는 기존 방식들이 가진 비효율성과 복잡성을 지적하며, 이를 하나의 통합된 회귀 문제로 간주하는 새로운 방식을 제안한다.
기존의 대표적인 탐지 모델인 R-CNN 계열은 입력 이미지에서 먼저 Region Proposal을 생성하고, 이후 각 후보 영역에 대해 분류기를 적용하여 객체를 탐지하는 구조로 동작한다. 이러한 접근은 비교적 높은 정확도를 보장하지만, 중간 단계가 많아 학습과 추론 속도가 느리고 실시간 적용에는 적합하지 않다는 한계를 가진다.
YOLO는 이러한 비효율성을 근본적으로 해결하고자 했다. 모델 구조를 완전히 통합된 단일 CNN으로 구성하여 한 번의 네트워크 실행만으로 전체 이미지를 분석하고 객체의 위치와 클래스를 동시에 예측하도록 설계하였다. 즉, ‘한 번만 본다(You Only Look Once)’는 이름 그대로, 객체 탐지를 단일 패스로 끝내는 획기적인 접근 방식을 도입한 것이다.
YOLO의 핵심 아이디어: 탐지를 회귀 문제로 바꾸다
YOLO의 핵심 아이디어는 간단하면서도 강력하다. 객체 탐지를 Classification + Localization이라는 복합 문제로 보기보다는, 하나의 회귀 문제로 정의한다는 점이다. 즉, 이미지에서 어떤 객체가 어디에 있는지를 예측하는 작업을 좌표와 확률값을 출력하는 하나의 회귀 신경망으로 통합한 것이다.
YOLO는 입력 이미지를 S × S의 격자로 나눈다. 각 그리드 셀은 B개의 바운딩 박스와 C개의 클래스 확률을 예측한다. 각 박스는 중심 좌표(x, y), 너비(w), 높이(h), 그리고 객체 존재 확률(confidence score)을 포함한다. confidence는 해당 박스가 실제 객체를 포함할 확률과 실제 객체와 예측 박스 간의 IOU(Intersection over Union)를 곱한 값으로 정의된다.
예를 들어 VOC 데이터셋의 경우 S=7, B=2, C=20으로 구성되며, 이로 인해 최종 출력 크기는 7×7×(2×5 + 20) = 1470개의 값으로 구성된다. 이러한 출력은 모두 단일 CNN 네트워크에서 동시에 예측되며, 객체의 존재 여부와 위치, 그리고 종류를 한꺼번에 파악할 수 있게 된다.
학습 방식: YOLO는 무엇을 학습하는가?
YOLO는 학습 시 여러 종류의 손실(loss)을 동시에 최소화하도록 설계된 종합적인 손실 함수를 사용한다. 크게 세 가지 손실 항목으로 구성되며, 이는 모델이 객체 탐지를 얼마나 정확히 수행하는지를 정량화하는 핵심 기준이 된다.
첫째는 Localization Loss로, 바운딩 박스의 좌표(x, y, w, h)의 예측 오차를 의미한다. 이때 너비와 높이(w, h)는 루트(sqrt)를 씌워서 예측하도록 하여, 작은 객체에 대한 오차에 더 민감하게 반응하도록 만든다.
둘째는 Confidence Loss이다. 이 항목은 예측된 박스가 실제 객체를 얼마나 정확히 포함하고 있는지를 IOU를 기준으로 평가한다. 객체가 있는 셀과 없는 셀 모두에 대해 오차를 계산하며, 이를 통해 모델이 물체 존재 여부를 판단하는 능력을 학습하게 된다.
셋째는 Classification Loss로, 각 셀이 예측한 클래스 확률과 실제 클래스 사이의 오차를 측정한다. 이 손실은 소프트맥스(Softmax) 후의 확률 분포와 실제 정답 클래스 간의 차이를 기준으로 측정한다.
YOLO는 이 세 가지 손실을 모두 더해 최종 손실 값을 계산하며, 이를 기반으로 end-to-end 방식으로 전체 모델을 학습시킨다.
성능: 정확도보다 빠름에 초점을 맞추다
YOLO는 높은 정확도를 추구하는 대신, 정확도를 어느 정도 희생하더라도 극한의 속도를 달성하는 것에 중점을 둔다. 이로 인해 객체 탐지 모델 중에서도 특히 실시간(real-time) 처리가 가능한 구조로 평가받는다.
실제로 YOLO는 당시 대표적인 모델이었던 Fast R-CNN보다 mAP(Mean Average Precision)가 약간 낮지만, 속도 면에서는 90배 이상 빠른 성능을 보여준다. 이는 1초에 수십 장 이상의 이미지를 처리할 수 있다는 뜻이며, 자율주행차, CCTV, 드론 등 실시간 판단이 필요한 다양한 산업 현장에서 큰 장점을 가진다.
YOLO의 한계: 정확도의 희생
하지만 YOLO는 모든 상황에서 완벽하지는 않다. 특히 다음과 같은 단점을 가진다.
가장 큰 단점은 Localization Error, 즉 객체의 정확한 위치를 잡는 데 어려움을 겪는다는 점이다. 특히 겹쳐 있는 객체나 크기가 작은 객체를 탐지하는 경우, 예측 결과가 부정확하게 나오는 경우가 많다. 이는 YOLO가 고정된 그리드 단위로 이미지를 나누기 때문에 생기는 문제로, 하나의 셀이 여러 객체를 동시에 탐지하는 데 한계가 있다는 구조적 특성 때문이다.
또한 그리드 기반 탐지 방식은 이미지 전체에서 물체가 위치할 수 있는 범위를 제한적으로 해석하게 만들며, 복잡한 배경이나 다중 객체 상황에서는 오탐율이 증가하는 원인이 된다.
YOLO의 후속 발전: YOLOv2부터 YOLOv8까지
YOLO는 이후 다양한 개선을 거치며 지속적으로 발전하고 있다. YOLOv2에서는 Anchor box 개념을 도입하여 바운딩 박스 예측의 유연성을 개선하였고, YOLOv3에서는 Residual Connection과 3-Scale Detection을 추가하여 정확도와 다양성 모두를 향상시켰다. YOLOv4는 다양한 기법을 조합해 최첨단(SOTA) 성능을 달성하였고, YOLOv5부터는 PyTorch 기반으로 재구성되어 실무 활용도가 급격히 상승하였다.