2021 Snowy Paper Project

안녕하세요.

오늘은 현재 제가 속해 있는 연구실 세미나에서 다른 분이 발표 했던 YOLOv1~YOLOv3에 대하여

매우 간단하게 정리만 할 예정이오니, 가볍게 읽고자 하시는 분들에게 도움이 될 것을 말씀 드리고 정리 시작합니다.

(노트 필기를 토대로 하는 것이므로 격식체로 작성하지 않는 점 죄송합니다)

 

1. YOLOv1(You Look Only Once)

- Background

 2-stage method(RPN+Classification)은 Real-time Detection에 적합하지 않은 처리 속도

 (Real-time detection은 보통 30 fps 이상의 처리 속도를 가져야 함.)

 

- Improvement

 전체 이미지에 대한 Large context를 파악하며, RPN과 Classification을 병렬적으로 처리하는 1-stage detector 생성

 

- Contibution

<그림 1> YOLOv1 그리드

º Unified Detection

: 이미지 한 장을 SxS 그리드로 분할 => 이미지의 크기가 448x448인 경우, 7x7 그리드 사용

 각 gride cell 당 2개의 Bounding Box((x,y,w,h, confidence score) + class probability)를 가짐

 

<그림 2> YOLOv1 네트워크

º Network: GoogLeNet 기반 24 convolution layer + FC layer로 구성 됨.

  → Predict Tensor: 7x7x30

<그림 3> YOLOv1 Predict Tensor

º Loss Function: multi loss

<그림 4> YOLOv1 Loss Function

① Coordinate Loss 

②-(a) Confidence Loss

②-(b) No-object Panelties

③ 각 grid가 갖는 Classification Loss

- Experiment

<그림 4> YOLOv1 성능 테이블

2-stage(Fast R-CNN, Faster R-CNN 등)에 비해 속도는 증가했지만 성능을 일정 수준 저하됨.

 

- Problem

 º Group of small objects : 각 grid cell은 하나의 class만 예측 가능함.

  → 이미지에 나타나는 objects의 domain size는 반영 불가

  → Grid cell 하나보다 작은 크기의 Object 문제점

 º Unusal aspect ratios: Training data에 한하여 Bbox를 학습하므로 새로운 형태의 Bbox를 정확하게 예측하지 못함.

 º Localization error of Bbox

 

2. YOLOv2(Better, Faster, Stronger)

- Background

 º Classfication task에 비해 적은 양의 data set을 보유함.

 º Fewer Classess

  →YOLOv1의 Problem 해결과 성능 향상을 목표로 함.

     9000개의 class에 대한 Object Detection을 수행함.

- Contribution

<그림 5> YOLOv2 advantages

 º Convolutions with Anchor Boxes

  : 크기와 비율이 고정된 anchor box로 Training을 통해 크기 및 위치를 세부 조정함.

   → Sliding window의 각 위치에서 Bbox의 후보로 사용함.

   (이미지 크기 416x416을 기준으로 13x13 gride와 5개의 Anchor box를 사용함.)

<그림 6> Direct Location Prediction

 º Direct Location Prediction

  : Bbox의 좌상단을 기준으로 이동해야 하는 거리를 예측함.

   → Bbox 중심 좌표가 하나의 grid cell 내에서만 이동할 수 있도록 함.

       Anchor box의 w와 h의 조정 비율을 지수 승(exp)으로 예측함.

<그림 7> YOLOv2 네트워크

 º Architecture

  YOLOv1의 Backbone인 DarkNet-19와 GoogLeNet의 방대함과 복잡성을 지적함.

 그래서, YOLOv1의 FC layer를 제거하고 Conv layer로 대체하여 FCN 구조로 변경함.

→ 19 convolution layers(3x3 filters) + 5 Max pooling layers,

   Global Average Pooling을 사용하여 feature들을 1차원 벡터로 만들어 줌.

- Problem

Small object 또는 Overlapping된 Object에 대한 Localization error 발생

 

2. YOLOv3(An Incremental Improvement)

- Background

"Small changes that  make it better"

- Contribution

 º Class Prediction → multi-label classification for objects

   : 각 class 별로 sigmoid를 취하여 binary classification을 적용함으로써 multilabel classification을 수행함.

   : Hierarchical class에 대한 예측 ex) person과 woman을 동시에 예측

<그림 8> YOLOv3 Scale

 º Prediction Across Scale

  : 총 3개의 Scale을 사용하며, 각 scale 당 3개의 anchor box를 가짐.

<그림 > YOLOv3 Prediction Feature Map

 (+) Anchor Box: Training set을 바탕으로 K-means clustering을 적용하여 9개의 anchor box를 결정함.

<그림 9> COCO 데이터셋 기준 anchor box들 크기

→ 각 scale 당 3개의 anchor box를 할당함.

  ex) 이미지 크기: 416x416일 때, stride = 32, 16, 8

 

- Network

DarkNet-19를 확장하여 DarkNet-53을 생성함.

<그림 10> YOLOv3 네트워크

- Experiment

<그림 11> YOLOv3에 대한 실험 결과

- Problem

→ Backbone Network를 Darknet-53으로 확장함에 따라 네트워크의 복잡성이 증가함.

YOLOv2에 비해 정확도는 상승하였으나 속도는 하락함.