2023 Summer Session/CV Team 2

[2주차 / 김지윤 / 논문리뷰] YOLOv1- You Only Look Once

Jiyoongee 2023. 7. 20. 00:00

Abstract

bounding box 와 class 확률에 대한 회귀를 이용한 single network. end-to-end

빠르다. sota 모델보다 더 많은 위치 오류를 만들지만 배경인데 object로 잘못 예측할 확률은 낮아짐.

 

Introduction

이전의 detection 모델들

1) DPM(Deformable Parts Model) : sliding window

2) R-CNN : localization classification 파트가 분리 되어 있는 2-stage-detector (1. Region Proposal을 통해 Object가 있을법한 영역을 찾고, 2. CNN으로 각각의 영역으로부터 고정된 크기의 Feature Vector를 뽑아낸 후, Classification 진행) 느리고 최적화하기 어렵다는 단점이 있음.

 

YOLO는 이와 다르게, 이미지의 픽셀로부터 bounding box의 위치(coordinates), 클래스 확률(class probabilities)을 구하기까지의 일련을 절차를 하나의 회귀 문제로 재정의한 것.

논문명 그대로, you only look once, 이미지를 한 번만 보면 객체를 검출할 수 있다하여 이름이 YOLO임.

 

YOLO의 장점

1) 빠르다. 

기존의 복잡한 객체 검출 프로세스를 하나의 회귀 문제로 변환해 단순화 하였기 때문에 실시간으로 detection이 가능해졌다.

YOLO 기본 네트워크는 Titan X GPU에서 배치 처리 없이 45fps, Fast YOLO는 150fps 속도를 지닐 정도로 빠른 real-time detector이며, 다른 실시간 객체 검출 모델보다 2배 이상의 mAP(mean average precision)를 갖는다.

2) 예측 시 이미지 전체를 본다. 

sliding window나 region proposal 기반 기술과 다르게 훈련과 테스트 과정에서 이미지 전체를 보기 때문에 주변 정보까지 포함하고 있다. Fast-RCNN 보다 background error가 2배 이상 적다. 

*background error : 물체가 없는 배경(background)에 반점이나 노이즈가 있을때 그것을 물체로 인식하는 오류

3) 일반적인 부분을 학습한다. 

다른 모델에 비해 YOLO는 훈련 단계에서 보지 못한 새로운 이미지에 대해 더 robust 하다. 

 

아직 sota 모델들에 비해 정확도는 떨어진다. 특히 작은 물체를 localize하는 것을 어려워한다. 

 

2. Unified Detection

YOLO는 localization classification 동시에 진행하는 single neural network.

end-to-end 학습이 가능하며 높은 정확도를 유지하면서 실시간 객체 검출이 가능하다. 

입력 이미지를 S x S 그리드로 나눈다.

만약 어떤 객체의 중심이 특정 그리드 셀 안에 위치한다면, 그 그리드 셀은 객체를 검출하는데에 필요한 셀이 된다. 

각각의 그리드 셀은 B개의 바운딩 박스와, 각 박스에 대한 confidence score를 예측

confidence score는 다음의 식으로 나타낼 수 있습니다. 만약 그리드 셀에 물체가 없다면 값은 0이 됨. (P(Object)=0이기 때문)

 

1) confidence score 공식

 

각 바운딩 박스는 5개(x, y, w, h, confidence score)의 예측값을 가짐. x, y, w, h는 절대 위치가 아니라 그리드 셀 내의 상대 위치를 가져 0~1 사이의 값을 가짐.

(x,y) : 바운딩박스의 중심좌표(상대위치)

(w,h) : 바운딩박스의 상대 너비와 상대 높이

 

2) C(class에 대한 조건부확률값) 공식

<확률이 가장 높은 class = 그리드 셀의 class>

각 그리드 셀은 C(conditional class probabilities)를 예측하는데, 이는 그리드 셀 안에 객체가 있을 때 그 객체가 어떤 클래스인지 나타내는 조건부 확률값임. 그리드 셀에 몇 개의 바운딩 박스가 있는지와는 무관하게 하나의 그리드 셀에는 오직 하나의 클래스(class)에 대한 확률 값만을 구함.

 

3) class-specific confidence scores

테스트 단계에서 1)confidence score과 2)조건부 확률값을 곱하면 각 박스에서 클래스에 대한 구체적인 confidence score를 구할 수 있다. 이 score는 bounding box에 특정 클래스 객체가 나타날 확률과 예측된 bounding box가 그 클래스 객체에 얼마나 잘 맞추는지를 나타낸다.

tensor의 크기 : S x S x (B * 5 + C)

  • 7 x 7 x 30 == S x S x (5 x B + C)
  • S = 그리드 개수 : 7
  • 5 = (cx, cy, w, h, confidence)
  • B = 바운딩박스 개수 : 2
  • C = classes : 20 (PASCAL VOC dataset) 을 사용

2.1 Network Design

CNN모델인 GoogLeNet의 네트워크 구조를 모티브로 하였고 총 24개의 conv layer와 2개의 FC layer를 포함하고 있다. convolutional layer은 이미지로부터 특징을 추출하고, fully connected layer은 클래스 확률과 bounding box의 좌표를 예측. GoogLeNet의 인셉션 구조 대신 단순한 구조의 1 x 1 축소 계층과 3 x 3 컨볼루션 계층의 결합을 사용. 이 네트워크의 최종 아웃풋은 7 x 7 x 30 텐서.

GoogLeNet을 이용하여 ImageNet classification에 사용된 weight를 가져와 fine tuning하였는데, 앞쪽 20개의 컨볼루션 레이어는 고정한 채, 뒷 단의 4개 레이어만 object detection 테스크에 맞게 학습.

final layer는 클래스 확률과 바운딩 박스 좌표값을 예측. 활성화 함수를 final layer는 linear activation function, final layer을 제외한 다른 레이어들은 leaky relu를 사용.

 

2.2 Training

loss는 SSE(sum-squared error) 기반. SSE가 최적화가 쉽지만 SSE를 최적화하는 것이 YOLO의 최종 목적인 mAP를 높이는 것과 완벽하게 일치하지는 않음.

bounding box의 위치를 얼마나 잘 예측했는지에 대한 loss인 localization loss와 클래스를 얼마나 잘 예측했는지에 대한 loss인 classification loss로 구성. SSE를 최적화하는 방식은 이 두 loss의 가중치를 동일하게 취급하는데, 이는 좋은 방법이 아님. 이미지 내 대부분의 그리드 셀에는 객체가 없기 때문에 대부분의 그리드 셀의 confidence score=0이 되도록 학습할 수밖에 없고, 이는 모델의 불균형을 초래함.

이를 개선하기 위해

1 ) localization loss의 가중치를 증가

2 )객체가 존재하지 않는 bounding box의 confidence loss에 대한 가중치는 감소.

훈련에 쓰이는 loss fuction

  • SSE는 큰 bounding box와 작은 boudning box에 대해 모두 동일한 가중치로 loss를 계산하는데, 작은 bounding box가 큰 bounding box보다 작은 위치 변화에 더 민감. 큰 객체를 둘러싸는 bounding box는 조금 움직여도 여전히 큰 객체를 잘 감싸지만, 작은 객체를 둘러싸는 bounding box는 조금만 움직여도 작은 객체를 벗어나게 되기 때문. 이를 개선하기 위해 bounding box의 너비와 높이에 square root를 취해주어 loss에 대한 가중치를 감소시킴.
  • YOLO는 하나의 그리드 셀 당 여러 개의 bounding box를 예측. 하지만, 훈련단계에서 하나의 bounding box는 하나의 객체에 대한 responsible이 있어야 하기에, 예측된 여러 bounding box 중 객체의 ground-truth에 대해 IOU가 가장 큰 것을 선택. 이렇게 훈련된 bounding box predictor는 특정 크기, 비율(aspect ratios), 객체의 클래스를 전체적으로 잘 예측.
  • 과적합을 막기 위해 드롭아웃과 data augmentation 적용

 

2.3 Inference

훈련 단계와 마찬가지로, 추론 단계에서도 테스트 이미지로부터 객체를 검출하는 데에는 하나의 신경망 계산만 하면 됨. 파스칼 VOC 데이터 셋에 대해서 YOLO는 한 이미지 당 98개의 bounding box를 예측해주고, 그 bounding box마다 클래스 확률(class probabilities)을 구해줌. YOLO는 하나의 신경망 이기 때문에 테스트 단계에서 굉장히 빠름.

하지만 YOLO의 그리드 디자인은 하나의 객체를 여러 그리드 셀이 동시에 검출하는 경우가 있다는 단점이 있음. 즉, 하나의 그리드 셀이 아닌 여러 그리드 셀에서 해당 객체에 대한 bounding box를 예측할 수 있음.  ( = 다중 검출(multiple detections) 문제) 이는 non-maximal suppression방법을 통해 개선 가능. -> mAP를 2~3%가량 향상시킴.

 

2.4 Limitations of YOLO

  • 바운딩 박스 예측하는데에 오직 2개의 바운딩 박스와 한개의 클래스 예측만을 한다는 큰 공간적인 제약이 있음. 하나의 그리드 셀은 오직 하나의 객체만 검출하므로 하나의 그리드 셀에 두 개 이상의 객체가 붙어있다면 이를 잘 검출하지 못하게 됨. 
  • 데이터로부터 bounding box를 예측하는 것을 학습하기 때문에 훈련 단계에서 학습하지 못했던 새로운 비율의 객체를 마주하면 예측력이 떨어짐.
  • 큰 bounding box와 작은 bounding box의 loss에 대해 동일한 가중치를 둔다는 단점이 있음. 크기가 큰 bounding box보다 크기가 작은 bounding box가 위치 변화에 따른 IOU 변화가 더 심하기 때문에 동일한 가중치를 주어서는 안됨.
  • YOLO의 주요 error는 부정확한 localization 문제.

3. Comparison to Other Detection Systems

Deformable parts models(DPM)

DPM은 슬라이딩 윈도(sliding sindow)방식을 사용. 분리된 파이라이프라인으로 구성. 각각의 파이프라인이 특징 추출(feature extraction), 영역 분류(region classification), bounding box 예측(bounding box prediction)을 수행. YOLO는 이렇게 분리된 파이프라인을 단일 컨볼루션 신경망으로 대체한 모델. 특징 추출, 영역 분류, bounding box 예측, 비 최대 억제(non-max suppression) 등을 한 번에 처리. 따라서 YOLO는 DPM보다 더 빠르고 정확함.

R-CNN

R-CNN 기반 모델들은 region proposal 방식. selective search로 여러 bounding box를 생성하고, 컨볼루션 신경망으로 특징을 추출하고, SVM으로 bouning box에 대한 점수를 매김. 선형 모델로 bounding box를 조정하고, 비 최대 억제로 중복된 검출을 제거. 이 복잡한 파이프라인의 각 단계는 독립적으로 정밀하게 튜닝해야하기 때문에 한 이미지당 40초 이상 소요될 정도로 매우 느림.

YOLO와 R-CNN의 유사점 : 각 그리드 셀이 bouning box를 예측하고, convolutional feature를 사용하여 그 box에 점수를 매김.

그러나 YOLO는 각 그리드 셀의 공간적 제약으로 인해 동일한 객체에 대해 여러 번 검출되는 경우가 R-CNN에 비해 적음. 또한, R-CNN에 비해 예측하는 bounding box의 개수도 훨씬 적음. YOLO는 이 모든 작업들을 단일 모델로 수행함.

 

4. Experiments

PASCAL VOC 2007 데이터셋에서의 에러를 조사.

 Real-Time Detectors에서 가장 좋은 성능을 보임.

 Less Than Real-Time에서도 준수한 정확도를 보임.

 

YOLO는 Localization error가 상대적으로 크다.
Fast R-CNN은 background error가 상대적으로 크다.


Fast R-CNN과 YOLO를 ensemble 해서 사용하는 것이 더 정확도가 좋았고 속도도 크게 차이 나지 않았다.
따라서 Fast R-CNN만을 사용하기보단 YOLO와 함께 앙상블로 사용하는 것이 좋다.

5. Real-Time Detection In The Wild

YOLO는 객체를 빠르고 정확하게 검출할 수 있어 컴퓨터 비전 애플리케이션에 활용하기 이상적인 모델. 연구진은 YOLO를 웹캠과 연결하여 실시간으로 객체를 얼마나 잘 검출해내는지 확인함.

6. Conclusion

Fast YOLO는 본문에서 가장 빠른 범용 객체 검출 모델이며, YOLO는 구성이 간단하고 실시간 물체 검출에 있어 최고의 성능을 보이는 모델. 또한 새로운 도메인에도 잘 일반화되므로 훈련 단계에서 보지 못한 새로운 이미지에 대해서도 객체를 잘 검출해냄. 결론적으로 YOLO는 빠르고 정확한 객체 검출을 필요로하는 애플리케이션들에 사용하기 매우 이상적인 모델임.