Pay it Forward

[Object Detection] YOLO 논문 정리 본문

Paper/Computer Vision

[Object Detection] YOLO 논문 정리

minjoony 2020. 3. 30. 10:57
728x90

요약

- image detection을 위한 알고리즘

 

- one stage method에 속하는 알고리즘

한 번에 image detection을 완료한다

 

- single NN

image를 input으로 받아서 하나의 신경망(single NN)을 통과하면 물체의 bounding Box와 해당 물체의 class를 output으로 내놓는다.

Regression으로 bounding Box와 그 물체의 종류를 동시에 파악하고자 했다.

 

- 장점

빠르고 좋은 정확도를 가지며 여러 도메인에서도 좋은 성능을 보인다

 

- 단점

object가 겹쳐있으면 제대로 예측이 안된다. 학습정도와 이미지 크기에 따라서 따라 모델의 성능이 크게 달라진다.

(이미지 크기에 따른 단점은 YOLO v3에서 개선된다.)

 

전체적인 모델 구성

전체적인 모델 구성은 다음과 같다

[출처 : https://taeu.github.io/paper/deeplearning-paper-yolo1-02/]

적절한 Model에 img를 input으로 넣으면 해당 image의 object들에 대한 bounding Box와 class가 output으로 산출되는데 이와 실제 Label을 비교하여 오차(Loss)를 구한다.

 

이 Loss를 최소화 시키고자 최적화 알고리즘을 통해 Model 내의 param (=weight)를 수정하고 이 과정을 반복한다.

 

YOLO v1에서는 이 적절한 Model에 약간 변형된 GoogleNet을 사용하였고 YOLO v3에서는 역시 GoogleNet기반의 Darknet을 사용하였다

 

YOLO Model 구성

YOLO Model에 대해서 조금더 살펴보자

YOLO는  24개의 Conv Layer  2개의 Fully connected Layer 를 가진다.

+ YOLO 9000에서는 기존 2개의 Fully connected Layer를 없애고 conv Layer로 바꾸었다

(YOLO v2와 YOLO 9000은 동시에 발표한 모델로 9000은 9000개의 object를 검출하는데 성공한 모델이다)

 

YOLO의 output

Output = S * S * (B * 5 + C) 이다.

S는 전체 이미지를 S * S개로 나눴을 때의 그리드의 개수, B는 bounding Box의 개수, C는 검출할 class의 개수이다.

5는 각 그리드 셀 안의 x, y, w, h, c 을 의미하는데 각각의 의미는 다음과 같다

x, y : 중심 좌표
w, h : bounding Box의 width, height 정보
c : confidence score로 물체가 있을 확률과 실제로 물체가 현재의 bounding Box와 얼마나 겹치는지를 계산한 값

YOLO는 이 S*S*(B*5+C)의 output중에서 NMS 알고리즘을 통해 최종 bounding Box를 추출한다.

 

YOLO의 output - NMS 알고리즘

NMS(non-maximal subpression) 알고리즘은 S*S*(B*5+C)개의 결과들 중에서 따로 지정한 threshold 값보다 작은 값을 모두 0으로 만들어서 없앤다.

 

이후에 내림차순 정렬을 하면 각 클래스 별로 가장 높은 값의 bounding Box(이하 box_max) 값이 앞에 위치하게 된다.

 

이를 기준으로 나머지 bounding Box(이하 box_cur)와의 IOU(Intersection Of Union = 두 개의 box의 겹치는 면적을 나타냄)를 계산하고 이 값이 0.5보다 크다면 이 두 개의 bouning Box(box_max와 box_cur)는 서로 같은 object를 바라보고 있다고 판단하고 box_cur값을 0으로 만들어서 없앤다.

 

반대로 IOU가 0.5보다 작다면 서로 다른 object를 예측하고 있다고 판단하고 그냥 둔다.

 

이 과정을 끝낸 후 각 bounding Box에 대해서 0보다 큰 가장 큰 예측값을 추출해내면 다음과 같이 각 object에 대한 가장 score가 높은 bounding Box만 남게된다.

 

출처 : pjreddie.com/media/files/papers/YOLOv3.pdf

 

YOLO의 단점은 위의 YOLO의 메커니즘을 보면 알 수 있겠지만 각 그리드 셀(grid cell)에서 단 하나의 class를 예측하기 때문에 object가 겹쳐있으면 제대로 예측이 안된다는 것이다.

 

YOLO v1에 비한 v2의 개선점

- 정확도와 mAP의 증가

- Darknet 사용으로 인한 속도 증가

(대부분의 object detection model들은 classifier net으로 VGG Net을 많이 사용하는데 YOLO v2는 Google Net기반의 Darknet을 사용하여 계산량을 현저히 줄이고 정확도 역시 VGG-16과 2%밖에 차이가 나지 않을 만큼 좋은 성능을 보였다)

 

논문 및 참고 사이트

[YOLO v1] https://arxiv.org/pdf/1506.02640.pdf

[YOLO v3] https://pjreddie.com/media/files/papers/YOLOv3.pdf

https://taeu.github.io/paper/deeplearning-paper-yolo1-01/

728x90
Comments