AI/컴퓨터비전(CV)

[CV 논문] You Only Look Once:Unified, Real-Time Object Detection

CSE 2026. 2. 10. 15:05

아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.

읽은 논문들 정리

 

읽은 논문들 정리

[목차]지속적으로 업데이트 중1. Computer Vision 분야 논문Classification 모델들의 발전Detection 모델들의 발전2. Natural Language Processing 분야 논문3. 유명한 딥러닝 논문들 1. Computer VisionAlexNet → VGGNet → Goo

april2901.tistory.com

 

 

이번에 읽을 논문은 YOLO라고 불리는 구조에 대한 논문이다.

영어 줄임말 YOLO를 You Only Look Once로 바꿔 사용했다.


1. Introduction

이전 모델들은 관심영역(RoI)를 먼저 뽑고, 해당 지역에 대해 분류기를 돌리고, 중복된 박스를 제거하는 등 여러과정이 필요했다.

따라서 사람처럼 한 번 보고 탐지가 가능한 YOLO모델이 나오게 되었다.

 

YOLO는 바로 탐지 결과와 클래스 분류를 하는 단일 구조이다.

 

introduction에서 얘기하는 yolo의 장점은 3가지 정도가 있다.

  • 1. 위에서 얘기한 복잡한 과정이 없어 빠르다.
  • 2. 이미지 전체를 보기 때문에 주변 정보도 학습이 가능해 배경을 물체로 보는 현상이 줄었다.
  • 3. 학습 후 새로운 이미지에 적용했을 때 성능이 좋다.

그러나 특히 작은 물체에 대해 위치를 정밀하게 잡는 것에서 조금 성능이 떨어진다는 단점이 있다.


2. Unified Detection

YOLO의 가장 핵심 키워드이다.

 

먼저 이미지를 $S \times S$크기의 grid로 나눈다.

 

탐지할 물체의 중심이 놓여있는 grid cell이 그 물체를 탐지할 책임을 갖는다.

각 grid cell은 $B$개의 bounding box와 confidence score를 예측한다.

박스를 나타낼 때 4개의 값이 필요하므로 박스 하나당 5개의 숫자를 예측하는 것이다.

 

x, y, w, h : x,y는 중심의 상대적 위치, w, h는 전체 이미지 대비 박스의 가로세로 비율이다.

 

confidence score : 이 값은 $Pr(\text{Object}) \times IOU_{\text{pred}}^{\text{truth}}$으로 구해진다.

모델이 이 박스 안에 물체가 있다고 믿는 정도와 실제 정답박스와 겹치는 정도를 곱한 값이다.

 

각 박스마다 가지는 위의 값들을 제외하고 grid cell당 예측하는 값도 있다.

이 cell 안에 있는 물체가 무었인지 여러 클래스에 대한 조건부확률을 예측한다.

$Pr(Class_i | Object)$으로 나타내고 클래스 수 C만큼의 길이를 가진다.

 

따라서 전체 이미지에서 예측하는 값은 $S \times S \times (B \times 5 + C)$개 이다.


2.1. Network Design

이 YOLO구조가 이미지(448 x 448 x 3)를 입력받아서 어떻게 위에서 얘기한 $S \times S \times (B \times 5 + C)$의 텐서를 출력하는지 네트워크 구조가 아래 그림에 친절하게 설명되어있다.

총 24개의 컨볼루션 레이어와 2개의 FC레이어로 이루어져있다.

 


2.2. Training

ImageNet 1000-class dataset을 사용해 앞의 20개의 컨볼루션 레이어를 사전학습 시켰다.

 

이후 4개의 컨볼루션 레이어와 2개의 FC레이어를 붙혀 detection학습을 시켰다.

 

 


2.3. Loss Function

손실 함수가 매우 길다.

$$\begin{aligned} \lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{obj} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right] \\ + \lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{obj} \left[ (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] \\ + \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{obj} (C_i - \hat{C}_i)^2 \\ + \lambda_{noobj} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{noobj} (C_i - \hat{C}_i)^2 \\ + \sum_{i=0}^{S^2} \mathbb{1}_i^{obj} \sum_{c \in classes} (p_i(c) - \hat{p}_i(c))^2 \end{aligned}$$

 

먼저 가중치에 대해 알아보자.

두 가지 종류가 있는데($\lambda_{coord}=5, \lambda_{noobj}=0.5$)각 값이 이렇게 설정된 이유가 있다.

위치를 잡는 것이 중요하기 때문에 좌표 오차에는 큰 5라는 값을, 대부분의 grid가 배경인데 이것이 전체를 지배하는 것을 막기 위해 0.5라는 작은 값을 사용했다.

 

w,h에는 루트가 씌워져 있다. 루트를 씌우면 작은 값에서 기울기가 가팔라지기 때문에 같은 값이어도 작은 박스에서 오차를 더 민감하게 조정하기 위해서이다.

 

$\mathbb{1}_{ij}^{obj}$는 위에서 얘기했던 어떤 셀이 물체를 탐지할 책임이 있는지를 나타낸다.

 

위의 손실함수에서 각 항의 의미는 아래와 같다.

중심점 좌표 오차

박스 크기 오차

물체가 있는 셀의 신뢰도 오차

물체가 없는 셀의 신뢰도 오차

클래스 확률 오차

 


3. 분석/비교

YOLO는 155 FPS를 기록하며 높은 정확도와 매우 빠른 속도를 보여주었다.

 

하지만 단점으로 위치오차(localization error)는 더 심한 것을 볼 수 있다.

장점으로는 배경 오차가 적다는 것을 알 수 있다.

 

또 큰 장점 중 하나는 일반적인 상황에서 예측이 잘 된다는 점이다.

명화 영화 일상 속 그림이 주어져도 잘 예측하는 것을 볼 수 있다.