본문 바로가기
논문/object_detection

You Only Look Once:Unified, Real-Time Object Detection

by dohunNewte 2024. 2. 27.
반응형

Abstract

저자들은 새로운 object detection 접근법인 yolo를 발표합니다.

이전의 객체탐지 연구에서는 classifier를 재 활용해서 detection 작업을 수행했습니다.

대신에 저자들은 object detection을 공간적으로 분리된 bounding box와 확률에 대한 회귀 문제로 설정하였습니다.

한개의 neural network로 bounding box와 class 확률을 예측합니다.  

전체 detection pipeline은 single network라서 그것은 end-to-end로 최적화될 수 있습니다.

저자들의 변형된 아키텍쳐는 매우 빠릅니다.

YOLO모델은 2초에 45프레임을 처리할 수 있습니다.

 

Introduction

현재 detection 시스템은 classifier를 detection을 위해서 재사용합니다.

이 시스템은 classifier가 이미지 전체에 고르게 배치된 위치에서 동작하는 슬라이딩 윈도우 접근법을 사용합니다.

R-CNN같은 현재의 접근법은 region proposal(제안) 방법을 사용합니다 먼저 잠재적인 bound box를 image에 만들고 제안된  box들을 classifier 합니다.

classifier 후에는 후처리가 사용되어 bounding box를 정제하고 중복되는 detection을 제거하고 다른 object에 기반한 box의 점수를 재조정합니다.

이러한 복잡한 파이프라인은 느리고 최적화되기가 어렵다고 합니다.

 

Unified Detection

저자들은 yolo를 사용함으로써 bounding box와 class probabilities를  하나의 회귀 문제로 재정의 했습니다.

single convolutional network가 동시에 multiple bounding box와 class probablities를 예측합니다.

 

1. 이미지를 448 x 448로 re size

2. single convolution network로 예측진행

3. 적절한 threshold를 준 후 detection 진행

 

1. yolo는 빠릅니다.

2. yolo는 sliding window 방법과 다르게 yolo는 이미지를 전체를 보고 예측을 수행할때 이미지에 대해서 global적으로 기반을 둡니다.

3. yolo는 object의 general한 표현을 잘 학습할 수 있습니다.

 

Network Design

네트워크의 초기 convolution layer는 이미지에서 특징을 추출하고 fully connected layer는 output확률과 좌표를 예측합니다.

저자들의 network 아키텍쳐는 GoogleNet model을 사용했습니다.

GoogleNet의 inception모듈 대신에 1x1레이어를 3x3conv와 이어주었다고합니다.

 

Training

YOLO는 마지막 layer에서만 Linear Activation Function을 사용하고, 나머지 Layers에는 Leaky Rectified Linear(ReLU) Activation Function을 사용합니다.

 

저자은 sum-suared error(SSE)를 사용합니다. 이것이 최적화되기 쉽다고 합니다.

그러나 SSE를 최적화하는 작업은 AP를 Maximize하지 않습니다.

그리고 이것은 localization error와 classification error의 가중치를 동일하게 해주는데 이것은 이상적이지 않습니다.그래서 SSE의 localization error와 classifiation error의 가중치를 다르게 주어야합니다.

 

대부분의 grid cell에는 object가 포함되지않고 배경이 포함되어있는게 대부분입니다.이렇게 되면 Nagative sample이 Positive sample보다 많아서 grid Cell의 Bounding Box의 신뢰도가 0에 가 까워집니다. 이는 모델의 불안정성을 초래합니다.

 

이것을 해결하기 위해서 localization error 에 대한 가중치는 증가시키고 객체를 포함하지 않는 Nagative Sample에 대한 classification error의 가중치를 감소시켰습니다.

 

 

SSE는 큰 Bounding Box와 작은 Bounding Box의 가중치를 동일하게 해주는게 문제입니다.

큰 Bounding Box에서 거리를  움직이는건 IOU에 영향이 작지만

작은 Bounding Box에서는 IOU영향이 크기 때문에 

이것을 해결하기 위해 Bounding Box의 width와 height에 제곱근을 취합니다.

제곱근에 의해 localization의 증가율이 작아져서 큰 Bounding Box의 Error에 덜 민감합니다.

 

1 obj ij = i번째 cell j번째 Bounding Box에 object가 존재하는지 아닌지

1 noob ij =  객체가 존재하지 않는 i번째 Cell j번째 Bounding Box에 해당 객체를 예측했는지 아닌지

1 obj i = 객체가 i번째 Cell 안에 존재하는지

 

 

1. Bounding Box의 중심 좌표 x,y에 대한 Loss

2. Bounding Box의 너비, 높이에 대한 Loss

3. Bounding Box의 Confidence Score에 대한 Loss

4. Bounding Box의 Confidence Score에 대한 Loss

5. Conditional Class Probability에 대한 Loss

올바른 클래스 예측 pi(c)=1, 아니면 0입니다.

 

Limitations of YOLO

욜로의 각 grid cell은 두개의 box를 애측할 수 있고 하나의 클래스만 가질 수 있기 때문에 box예측이 제한됩니다.

yolo는 특이한 가로 세로 비율을 가진 객체들을 일반화하는데 어려움을 겪습니다.

또한 yolo는 입력 이미지로부터 여러 down sampling 레이어를 가진 아키텍쳐를 사용하기 때문에 bounding box를 예측하는데 상대적으로 어렵습니다.

그리고 손실 학수에서 작은 bounding box와 큰 bounding box에서의 오류를 동일하게 취급하기 때문에 큰 박스에서 작은 오류는 일반적으로는 무해하지만 작은 박스에서의 작은 오류는 IOU에 훨씬 큰 영향을 미친다고 합니다.

 

 

728x90

댓글