아이공의 AI 공부 도전기

[논문 Summary] YOLO v1 (2016 CVPR) "You Only Look Once: Unified, Real-Time Object Detection"

 

     

 

논문 정보

Citations : 2022.05.30 기준 24598회

저자

 

Joseph Redmon - University of Washington

Santosh Divvala - University of Washington, Allen Institute for AIy

Ross Girshick - Facebook AI Research

Ali Farhadi - University of Washington, Allen Institute for AIy

 

 

논문 링크

Official

https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

 

Arxiv

https://arxiv.org/abs/1506.02640

 

 

논문 Summary

Abstract

 

 

0. 설명 시작 전 Overview

 

YOLO verson 1 모델은 기존 R-CNN 모델과 달리 단일 네트워크를 활용하여 전체 이미지를 보고 이에 대한 bounding box prediction과 클래스 확률을 빠르게 추정한다. 물론 이에 따른 성능이 약간 저조한 것은 사실이지만 그만큼 속도적인 측면에서 큰 장점이 있다. 이 때문에 Real-Time에서 장점이 분명하다.

뿐 아니라 R-CNN보다 배경에 대한 false positive 예측이 덜하다는 장점 또한 존재한다.

 

작은 물체에 대해서는 추정이 어렵다는 단점이 존재하지만 그만큼 빠르고 상대적으로 정확하다는 장점이 부각된 만큼 YOLO는 Object Detection 계열에서 중요한 모델로 자리잡고 있다.

 

참고)

시작에 앞서 IoU, NMS, mAP가 궁금하다면

https://aigong.tistory.com/435

 

[Python] IoU, NMS, mAP 간단 설명, 코드

[Python] IoU, NMS, mAP 설명, 코드 Object Detection을 하다보면 만나게 되는 용어로 IoU, NMS, mAP가 있다. 이에 대한 설명과 코드를 간단히 작성해보고자 한다. IoU IoU 설명 IoU는 Intersection over Uni..

aigong.tistory.com

 

1. Introduction

 

sliding window를 사용하는 DPM, region proposal 방법을 사용하는 R-CNN 계열 모두 classifier를 detection 역할을 하도록 재설정한다. 복잡한 파이프라인을 가진 이 방법들은 개별적으로 훈련시켜야 하기 때문에 느리고 최적화하기에는 어렵다

 

본 논문에서 제안하는 You Only Look Once(YOLO)는 단일 regression문제로써 object detection을 재구성한다.

 

Figure 1에서 나타나듯 단일 conv network를 통해 다수의 bounding box와 이에 대한 클래스 확률을 추측한다.

통합 모델은 기존 object detection 대비 다양한 이점이 존재한다.

 

1) YOLO는 매우 빠르다.

 

단일 Titan X GPU로 45 fps(frame per second)

real-time에서 다른 모델 대비 두 배 넘는 mAP 달성 (Table 1 참조)

 

2) YOLO는 예측할 때 전체 이미지에 대해 추론한다.

 

YOLO는 전체이미지를 보기 때문에 외관과 마찬가지로 클래스에 대한 문맥적 정보를 내재적으로 암호화한다. 반면, Fast R-CNN은 큰 문맥정보를 보지 못하기 때문에 background error(배경을 객체로 탐지)를 유발한다.

 

3) YOLO는 객체의 일반적인 표현을 학습한다.

 

전체 이미지에 대한 학습을 진행하기 때문에 새로운 도메인이나 의도하지 않은 입력에 대해서도 잘 나오는 결과를 확인.

2. Unified Detection

 

YOLO는 단일 신경망으로 전체 이미지로부터 각각의 bounding box와 이에 대한 class까지 한 번에 예측한다. 

이를 위해 입력 이미지를 S X S grid 형태로 나눈다. 각각의 grid cell은 B개의 bounding box와 confidence score를 예측한다.

confedence는 다음과 같이 표현한다.

$$P(Object) \ast IOU^{truth}_{pred}$$

만약 물체가 없다면 confidence=0

$P(Object)$는 object를 인지하고 있는지 판단. 배경이면 0.

 

각각의 bounding box는 5개의 예측값으로 구성된다.

$$x,y,w,h,confidence$$

$x,y$는 grid cell 영역에서 상대적인 bounding box의 중심점 좌표

$w,h$는 전체 이미지에서 상대적인 가로와 세로

confidence prediction은 예측 box와 ground truth box 간의 IOU

 

각 grid cell은 C개의 조건부 클래스 확률을 예측한다.

box B의 숫자와 상관없이 grid cell마다 하나의 클래스 확률을 예측한다. (Figure 2 중간 하단 참조)

 

본 논문에서는 S=7, B=2, C=20으로 활용한다.

 

2.1 Network Design

 

PASCAL VOC dataset을 활용한다.

YOLO는 GoogLeNet 모델에서 영감을 받아 구성하였다. 다만 Inception module 대신 1x1 reduction layer를 사용한다.

 

최종 네트워크 결과물은 $7 \times 7 \times 30$ tensor이다.

 

2.2 Training

 

ImageNet 1000 class에 대해 Conv layer를 pretrain한다. Pretraining을 위해 처음 20개 conv layer를 사용.

추후 detection을 수행할 수 있도록 4개의 conv layer와 2개의 fc layer를 추가.

 

입력 이미지 사이즈 224 X 224에서 448 X 448로 증가.

 

w와 h는 전체 이미지에 대해 0~1 사이즈가 되도록 normalize

x, y 역시 특정 grid cell에 대해 0~1 사이를 가지도록 함.

 

마지막 layer는 선형 활성화 함수를 사용하고 나머지는 LeakyReLU를 사용 (slope=0.1)

 

 

완벽하지 않지만 쉽게 최적화되기 때문에 기본적으로 최적화는 sum-squared error를 사용한다.

 

$\lambda_{coord}=5, \lambda_{noobj}=0.5$ 

$𝟙_i^{obj}$ : i번째 cell에서 object가 있는지 (있으면 1 없으면 0)

$𝟙_{i,j}^{obj}$ : i번째 cell에서 j번째 bounding box 예측기

 

Equation (3)

1번째, 2번째 행은 grid cell마다의 bounding box coordinate에 대한 error 계산을 나타낸다.

3번째, 4번째 행은 grid cell마다의 confidence score에 대해 object가 있을 때와 없을 때의 error 계산을 나타낸다.

5번째 행은 각 grid cell마다의 class probability error를 나타낸다.

 

S=7, B=2이므로 1~4행에 대해서는 98개의 bounding box coordinate와 confidence score를 기준으로 error를 평가한다고 보면되고, 5행은 49개의 grid cell에 대한 class probability(C=20)를 기준으로 error를 평가한다.

 

 

PASCAL VOC 2007 & 2012 training, validation dataset을 활용하여 135 epoch만큼 훈련

batch size 64

momentum 0.9 & decay 0.0005

초기 learning rate $10^{-3}$에서 $10^{-2}$로 점진적인 증가

75 epochs learning rate $10^{-2}$

30 epochs learning rate $10^{-3}$ 

30 epochs learning rate $10^{-4}$ 

(...? 전체 훈련 epoch가 135....인데... (?)+75+30+30=(?)+135...? )

 

첫 connected layer 후에 dropout을 0.5 확률로 사용

 

random scaling & 20%까지의 translation.

HSV color space에서의 1.5배까지의 이미지 exposure과 saturation 랜덤 적용.

  

2.3 Inference

 

YOLO는 이미지당 98(=7*7*2=S*S*B)개의 bounding box와 각각의 box에 대한 class 확률을 예측한다.

Non-Maximal Suppression(NMS)을 통해 다수의 detection이 되는 것을 해결할 수 있다. (1객체 1 bounding box) 

 

2.4 Limitations of YOLO

YOLO의 한계점이 존재.

1) 각 grid cell은 2개의 box를 예측하고 하나의 class만을 가질 수 있기 때문에 작은 객체들이 무리지어 있는 경우 검출이 어렵다.

2) Bounding Box가 data를 통해 학습되므로, 새로운 형태의 Bounding Box의 경우 일반화 능력이 떨어진다. 

3) 작은 bounding box에 대한 작은 error와 큰 bounding box에 대한 작은 error를 같은 영향력 아래에 있게 loss function이 구성되었다.

 

3. Comparison to Other Detection Systems

 

Deformable Parts Models(DPM), R-CNN, Deep MultiBox, OverFeat, MultiGrasp

 

4. Experiments

 

4.1 Comparison to Other Real-Time Systems

 

YOLO는 다른 모델 대비 Real-Time Detector로써의 수행에 탁월하다.

 

4.2 VOC 2007 Error Analysis

 

 Fast R-CNN 대비 YOLO는 Background error가 더 적다.

 

4.3 Combining Fast R-CNN and YOLO

 

4.4 VOC 2012 Results

 

 

 

4.5 Generalizability: Person Detection in Artwrok

 

Figure 5는 YOLO가 다른 모델들 대비 일반화 성능이 높다는 것을 보여준다. (높은 AP)

 

 

6. Conclusion

YOLO는 단일 통합 모델로 간단하게 구성된 모델이다. 빠른만큼 real-time에서 최상의 성능을 보이며 다른 모델 대비 일반화 성능이 높다.

Reference

공식 홈페이지

https://pjreddie.com/darknet/yolo/

 

YOLO: Real-Time Object Detection

YOLO: Real-Time Object Detection You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev. Comparison to Other Detectors YOLOv3 is extremel

pjreddie.com

 

도움이 되는 YouTube 1. PR12-016

https://youtu.be/eTDcoeqj1_w

 

PPT

https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA

 

YOLO

YOLO You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

docs.google.com

 

 

 

 

0000 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading