You Only Look Once: Unified, Real-Time Object Detection 논문 리뷰

김준형·2025년 4월 14일

딥러닝 논문 리뷰

목록 보기
4/34

[논문 리뷰] You Only Look Once: Unified, Real-Time Object Detection
Joseph Redmon , Santosh Divvala , Ross Girshick , Ali Farhadi

Abstract
이 논문은 YOLO (You Only Look Once)라는 새로운 객체 검출 방식을 제안한다. 기존 방법들이 classifier를 재활용하여 객체 검출을 수행했던 것과 달리, YOLO는 전체 이미지를 입력으로 받아 단 한 번의 네트워크 실행을 통해 바운딩 박스 좌표와 클래스 확률을 직접 예측하는 regression으로 객체 검출을 재정의한다. 이 방식은 객체 검출 파이프라인 전체를 단일 신경망으로 통합하였고, 이를 통해 end-to-end 최적화가 가능하다. YOLO는 매우 빠르다. 기존 모델들에 비해 위치(localization) 오류는 더 많지만, 배경에서의 false positives는 훨씬 적다. 또한, YOLO는 객체의 general representation을 잘 학습하여, 새로운 도메인에서도 기존 방법보다 더 뛰어난 성능을 보인다.

Introduction
인간의 시각 시스템은 이미지를 한 번 보고도 어떤 객체가 있는지, 어디에 있는지, 어떻게 상호작용하는지를 즉시 인식한다. 빠르고 정확한 객체 탐지 알고리즘은 자율주행, 보조 기기, 로봇 시스템 등에 핵심 역할을 한다. 기존 방법들은 classifier를 다양한 위치와 스케일에서 실행함으로써 객체를 탐지하는데, 느리고 학습하기 어렵다는 한계가 있다.

ⓐ DPM(Deformable Part Models) → 슬라이딩 윈도우 방식 사용
ⓑ R-CNN → Region Proposal 방식 사용

YOLO의 핵심 아이디어는 object detection as regression 이다. 이미지에서 직접 바운딩 박스와 클래스 확률을 예측한다. 전체 이미지를 단 한 번 보기만 하면 객체가 어디에 있는지를 알 수 있다. (그래서 모델 이름이 You Only Look Once) YOLO의 주요 장점을 정리하면 다음과 같다.

ⓐ 속도 (Speed): 기본 YOLO는 초당 45프레임, Fast YOLO는 초당 150프레임 이상이다.
ⓑ 전역 정보 활용 (Global Context): 전체 이미지를 기반으로 예측해서 클래스와 배경 간의 문맥 정보를 자연스럽게 학습한다.
ⓒ Fast R-CNN 대비 배경에 대한 오탐(false positive)이 절반 이하다.
ⓓ 일반화 능력 (Generalization): 자연 이미지로 학습 후, 다른 도메인에 적용해도 우수한 성능을 보인다. 다른 모델에 비해 새로운 환경에 잘 적응한다.

YOLO 모델의 한계는 최신 모델들에 비해 정확도가 낮다는 것이다. 특히 작은 객체의 정확한 위치 파악이 어렵다.

Unified Detection
YOLO는 객체 탐지의 여러 단계를 하나의 신경망으로 통합함으로써, 전체 이미지를 한 번에 처리하여 여러 객체의 위치와 클래스를 동시에 예측한다는 것이 핵심이다. 전체 이미지의 feature을 활용해 모든 클래스의 바운딩 박스를 동시에 예측한다. 이미지 전체를 보기 때문에 전역적인 context 정보를 활용 가능하다.
① 그리드 기반 구조 분할: 입력 이미지를 S × S grid cell로 분할한다. 객체의 중심이 특정 grid cell에 속하면, 해당 grid cell이 그 객체를 예측한다.

② grid cell이 예측하는 값: B개의 바운딩 박스의 5개 값과 C개의 클래스 조건부 확률을 예측한다. 먼저 바운딩 박스에서, (x, y)는 grid 내에서의 바운딩 박스 중심 좌표, (w, h)는 이미지 전체에서의 상대적인 너비와 높이, confidence는 (예측된 박스가 객체를 포함할 확률) × IOU 이다.

③ 최종 예측 계산
최종 박스별 클래스 확률은 아래와 같이 계산된다.
Pr(Class_i | Object): 바운딩 박스가 객체를 포함할때, 클래스 i일 확률
Pr(Object): 바운딩 박스가 객체를 포함할 확률
IOU_truth,pred: 예측된 박스와 실제 객체 박스 간의 IOU
Pr(Classᵢ): 클래스 i가 해당 박스에 있을 확률

📌 IOU (Intersection over Union)
IOU는 두 개의 바운딩 박스 간의 겹치는 정도(정확도)를 수치화한 지표다. 모델이 예측한 바운딩 박스와 정답 바운딩 박스의 intersection / union 값을 계산한다. 보통 0.5 이상이면 정확한 예측으로 간주한다.

예측 텐서 구조의 변화는 다음과 같다. S = 7 (7×7 그리드), B = 2 (2개 바운딩 박스), C = 20 (20개의 클래스)일때 최종 출력은 7 × 7 × 30 텐서이다. 각 셀마다 2 × 5 + 20 = 30개의 값을 예측하는 구조다.

Network Design
YOLO는 합성곱 신경망(CNN)으로 구현된다. 네트워크 구성은 GoogLeNet에서 영감을 받았다. 24개의 convolutional layers와 2개의 fully connected layers로 구성돼 있다. 합성곱 층들은 이미지로부터 feature을 추출하고, 완전 연결층은 출력 확률과 좌표를 예측한다. Fast YOLO는 속도 최적화를 위해 설계된 경량화 버전이다. 9개의 convolutional layers로 구성되고, 필터 개수도 감소했다.

Training
ImageNet 1000 클래스 데이터셋에서 Pretraining을 진행했다. 이를 탐지 모델로 전환했다.(Detection Conversion) 사전 학습된 네트워크에 추가 레이어를 붙여 성능을 향상하는 것이다. YOLO는 4개의 convolutional layer와 2개의 fully connected layer를 추가했다.
활성화 함수는 최종 출력 레이어는 선형(linear) 활성화 함수를 사용하고 나머지 레이어는 모두 Leaky ReLU를 사용했다.
손실 함수는 Sum-squared error (제곱 오차)를 사용했다. 이는 학습하기는 쉽지만, 위치 오차와 분류 오차를 동일하게 가중치를 부여한다는 한계가 있었다. 이를 해결하기 위해, 바운딩 박스 예측 오차에는 가중치 λ_coord = 5(높은 가중치), 객체 없는 셀의 confidence 오차는 가중치 λ_noobj = 0.5(낮은 가중치)를 부여했다. 또한 (w, h) 대신 √w, √h를 예측해서 작은 박스에 더 민감하게 반응하도록 만들었다.

YOLO는 각 grid cell마다 여러 개의 바운딩 박스를 예측한다. 학습 시에는 하나의 바운딩 박스 예측기만이 각 객체에 대해 책임을 지도록 만들었다. 가장 높은 IOU를 가진 예측기를 해당 객체를 책임 예측기(Responsible Predictor)로 지정한다. 이러한 방식은 바운딩 박스 예측기들 간의 전문화를 유도한다. 결과적으로 recall이 향상했다. overfitting을 막기 위해 정규화와 데이터 증강을 활용했다.

ⓐ정규화(Regularization)로는 첫 fully connected layer 뒤에 Dropout 0.5를 사용했다.
ⓑ데이터 증강(data augmentation)으로는 무작위 스케일/이동, 색상 공간에서 노출 및 채도 조절을 사용했다.

Inference
테스트 이미지에 대한 객체 탐지도 훈련과 마찬가지로 단 한 번의 네트워크 실행만 필요하다. YOLO는 매우 빠른 속도로 추론 가능하다.

YOLO의 S×S 그리드 구조는 바운딩 박스 예측에 공간적 다양성(spatial diversity)을 부여한다. 대부분의 경우, 객체가 속한 grid cell을 네트워크가 명확히 인식한다. 객체당 1개의 바운딩 박스만 예측한다. 하지만 큰 객체나 경계에 걸친 객체는 여러 grid cell에서 중복 예측될 수 있다. 이 경우, Non-Maximal Suppression (NMS)을 사용해 중복 박스를 제거한다. NMS 적용 시 mAP(평균 정확도)가 2~3% 증가했다.

📌 NMS (Non-Maximum Suppression)
하나의 객체에 대해 여러 박스가 예측되는 중복 현상을 방지하기 위해, confidence score가 높은 박스 하나만 남기고, 나머지 겹치는 박스는 제거한다.

① 모든 바운딩 박스를 클래스별로 정렬한다. (confidence score가 높은 순서)
② 가장 높은 score를 가진 박스를 선택한다.
③ 선택된 박스와 IOU가 임계값 이상인 박스들을 제거한다.
④ 남은 박스 중에서 다시 가장 높은 score를 가진 박스를 선택하고 위 과정을 반복한다.
⑤ 더 이상 비교할 박스가 없을 때까지 반복한다.

Limitations of YOLO
YOLO 초기 모델의 단점으로는 다음과 같다.

ⓐ 강한 공간 제약 (Spatial Constraints)
각 grid cell은 두 개의 바운딩 박스만 예측 가능하며, 하나의 클래스만 할당 가능하다. 인접한 여러 객체가 있을 경우, 특히 작고 밀집된 객체 탐지에 약하다.
ⓑ 특이한 비율/구조에 대한 일반화 어려움
모델은 학습 데이터를 기반으로 바운딩 박스를 예측하므로, 낯선 종횡비(aspect ratio)나 비정형 구조를 가진 객체에는 일반화 성능이 떨어진다.
ⓒ 특징맵(Feature Map)의 해상도 문제
네트워크 구조상 여러 번 다운샘플링이 일어나기 때문에, 바운딩 박스를 예측할 때 사용하는 특징이 상대적으로 coarse 하다.
ⓓ 작은 박스의 오차 민감성
손실 함수는 작은 박스와 큰 박스의 오차를 동일하게 취급한다. 하지만 실제로는 큰 박스의 작은 오차는 영향이 적지만 작은 박스의 작은 오차는 IOU에 큰 영향을 준다.

Comparison to Other Detection Systems
YOLO를 기존 탐지 방식과 비교하면 다음과 같다.

ⓐ Deformable Parts Models (DPM)
슬라이딩 윈도우 방식, 복잡한 모듈로 구성된다. YOLO가 속도와 정확도 모두 DPM보다 우수하다.

ⓑ R-CNN 계열
Selective Search로 영역 제안 → CNN 특징 추출 → SVM 분류 → 박스 조정 → NMS 과정을 거친다. YOLO에 비해 매우 느리고 각 단계가 분리되어 복잡하다.

ⓒ Fast R-CNN / Faster R-CNN
R-CNN에서 영역 제안 및 계산을 공유해서 속도 및 정확도를 향상했다. 하지만 여전히 실시간 성능은 부족하다.

ⓓ 단일 클래스 전용 탐지기
클래스 수가 적기 때문에 최적화가 쉽다. 하지만 여러 객체를 동시에 감지할 수 없다.

ⓔ Deep MultiBox
CNN으로 직접 영역을 제안한다. 단일 객체 탐지는 가능하지만 추가 분류기가 필요한 상황이다.

ⓕ OverFeat
CNN 기반 localization을 탐지용으로 확장했다. 하지만 단계가 분리된 구조이며, 문맥 정보를 활용할 수 없다.

ⓖ MultiGrasp
YOLO의 그리드 구조 아이디어와 유사하다. 하지만 grasp detection은 object detection에 비해 너무 단순한 과제다.

Real-Time Detection In The Wild
실시간 성능을 검증하기 위해, YOLO를 웹캠에 연결하여 실제 환경에서 실시간 객체 탐지를 실험했다. 카메라에서 이미지를 가져오고, 탐지 결과를 출력하는 시간까지 포함해서도 실시간 성능을 유지했다. YOLO는 개별 이미지를 처리하지만, 실시간으로 동작하면 마치 객체 추적 시스템처럼 interactive하게 동작한다. 움직이는 객체나 외형이 변하는 객체도 탐지 가능하다.

Conclusion
YOLO는 객체 탐지를 위한 통합 모델로 제안한다. 단순한 구조로 쉽게 구축 가능하며, 전체 이미지를 기반으로 학습 가능하다. 기존 분류기 기반 접근과 달리, YOLO는 탐지 성능에 직결된 손실 함수로 훈련되며, 모델 전체가 공동으로 학습된다. Fast YOLO의 경우 당시 실시간 객체 탐지 분야에서 최첨단(state-of-the-art) 성능을 달성했다. YOLO는 새로운 도메인에서도 우수한 일반화 성능을 보인다. 빠르고 강인한 객체 탐지가 필요한 다양한 응용 분야에 이상적이다.

📈 YOLO의 발전 요약
최신 버전인 YOLOv11까지 다양한 개선이 이루어졌다.

ⓐ 네트워크 구조의 진화
YOLOv5 (2020): PyTorch 기반으로 구현되었으며, CSPNet을 백본으로 사용하여 연산 효율성을 높였다.
YOLOv8 (2023): C3 모듈을 C2f로 교체하고, anchor-free 방식을 도입하여 객체 중심을 직접 예측한다.
YOLOv11 (2024): 방향성 바운딩 박스(OBB) 감지를 지원하여, 다양한 각도에서의 객체 감지가 가능해졌다.

ⓑ 기능 및 성능 향상
실시간 처리 속도를 유지하면서도 정확도를 향상시켰다. 예를 들어, YOLOv11은 COCO 데이터셋에서 mAP 50-95 기준으로 54.7%의 성능을 보인다.

ⓒ 사용자 친화성
Ultralytics에서 제공하는 Python 패키지와 GUI 기반의 Ultralytics HUB를 통해 모델 학습과 추론이 간편해졌다.

profile
김준형

0개의 댓글