[Object Detection] 3) YOLOv1 논문 리뷰

2022.03.07 18:34 8,219 조회

안녕하세요. jihyeheo입니다 :)

오늘은 YOLOv1 논문 리뷰를 해보겠습니다.

You Once Look Once : Unified, Real-Time Object Detection : https://arxiv.org/pdf/1506.02640.pdf




* 본 포스팅은 데이콘 서포터즈 "데이크루 1기" 활동의 일환입니다.

------------------------------------------------------------------------------------------------------------------------------------

1-stage Detector vs 2-stage Detector

저번 OD(Object Detection) 설명 게시글(https://dacon.io/forum/405806)에서 Detector의 종류를 두 가지로 나눌 수 있다고 했었습니다.


위 사진은 2-stage Detector입니다. 사진을 살펴보면 Localization과 Classification 두 가지를 순차적으로 수행하는 Detector입니다.

이를 통해 정확도는 올라가지만 시간이 오래 걸립니다.

이러한 Detector의 단점을 잡아 한 번에 수행하는 Detector가 소개됩니다.

1-stage Detector의 대표적인 모형으로 YOLO 시리즈가 있습니다.

YOLOv1은 Single Convolutional Network로 이미지를 입력받아 여러 개의 bounding box와 각 box의 class를 예측합니다.

그리고 non-max suppression을 통해 최종 bounding box를 선정합니다.



논문에 나와있는 YOLO 시스템입니다.

두 문제를 한꺼번에 처리하기 때문에 속도는 빠르지만 정확도 면에서 떨어집니다. 속도와 정확도는 trade-off 관계입니다.



YOLOv1 장점

1) 매우 빠르다.

YOLO는 image에 NN(Neural Network)를 실행하기만 하면 됩니다.


2) Fast R-CNN보다 background error가 두 배 이상 적다.

  • background error란?

배경 이미지에 객체가 있다고 탐지한 것을 의미합니다.  즉, background error가 작아야 배경 이미지를 배경이라고 정확하게 인식을 한 거 겠죠?

이를 어떻게 줄였냐고 하면 사용 방식을 이야기 할 수 있습니다. YOLO를 예측할 때는 이미지 전체를 이용합니다. 반면, Fast R-CNN 같은 경우 이미지를 잘게 쪼개는 Selective Search 알고리즘을 이용하여 제안된 영역을 사용합니다. 이를 통해 배경을 객체로 탐지하는 실수를 하게 됩니다.

사진을 보면 background error가 Fast R-CNN에서는 13.6%였는데 4.75%로 줄었다는 것을 알 수 있습니다.


3) 객체의 일반화된 representations를 학습하여 다른 도메인에서 좋은 성능을 보입니다.

전체 이미지에 대하여 학습을 하기 때문에 새로운 도메인에 잘 적응하여 다른 결과도 잘 나올 수 있게 합니다.



Bounding Box prediction 방식

동작 방식은 다음과 같습니다.

1) 입력 이미지를 S x S grid로 분할합니다.

2) 객체의 중심이 grid cell에 맞으면 grid는 객체를 탐지했다고 표기합니다.

3) 각 grid cell은 B개의 Bounding box와 각 bounding box에 대한 confidence score를 예측합니다.

  • confidence score란?

특정 Bounding Box안에 있는 객체가 어떤 물체의 class일 확률과 IoU를 곱한 값, 즉 각 Bounding Box 안에 물체가 있을 확률을 의미합니다.

각 Bounding Box는 x,y,w,h,confidence를 가지고 있습니다. x,y는 Bounding Box의 중심이며 w,h는 높이와 넓이입니다.

4) 각 grid cell은 Bounding Box 외에도 class 확률을 예측합니다.

5) non-max suppression을 거쳐 최종 Bounding Box를 선정합니다.

  • Non-Max Suppression(NMS)이란?

Detector가 예측한 Bounding Box중에서 가장 정확한 Bounding Box를 선택하는 기법입니다.

다음과 같이 NMS를 적용하면 Bounding Box가 하나만 남아있는 것을 확인할 수 있습니다.


YOLO v1 구조

YOLO v1의 구조는 다음과 같습니다.


24개의 Convolutional Layer와 2개의 Fully Connected Layer, 그리고 GoogleNet에서 가져온 아이디어 1x1 차원 감소 layer, 그 후 3x3 Convolutional Layer를 이용하여 마지막 7x7x30의 출력값을 결과로 가져옵니다.

이를 DarkNet이라고 합니다. 위 모형은 ImageNet 데이터셋을 통해 학습시켰습니다.



손실 함수(Loss Function)

YOLO에서는 Sum-Squared Error(제곱합 에러)를 손실 함수로 사용합니다. 하지만 여러가지 문제가 있다고 합니다.


문제1. 2-stage Detector와 다르게 Localization Error와 Classification Error를 동일하게 가중치를 둡니다.

문제2. 객체를 포함하고 있지 않은 grid cell은 confidence 값이 0을 갖습니다. 이를 통해 모형이 불안정해집니다.


이를 해결하기 위해 다음과 같은 파라미터를 사용합니다.

coord는 Bounding Box 좌표 손실에 대한 파라미터입니다. 5배 가중치를 두어 높은 패널티를 부여합니다.

noobj는 객체를 포함하고 있지 않은 박스에 대한 confidence 손실의 파라미터입니다. 배경인 경우 0.5의 가중치를 두어 패널티를 낮춥니다.

요렇게 하여 가중치를 다르게 부여하게 되면 위에 있는 최종 식이 완성됩니다.


Loss 함수에 대한 자세한 설명은 https://herbwood.tistory.com/13 블로그에서 자세히 공부하시면 됩니다 :)



YOLOv1의 한계

1) 각 grid cell은 하나의 class만 예측합니다. 즉, Object가 겹쳐 있다면 제대로 예측할 수 없습니다.

2) Bounding Box가 data를 통해 학습되므로, 새로운/독특한 형태의 Bounding Box의 경우 정확히 예측할 수 없습니다.

3) 작은 Bounding Box의 Loss가 IoU에 더 영향을 줍니다.



YOLOv1의 성능


VOC 2007 데이터셋을 이용하여 적용해본 결과입니다.

Real-Time Detector에서 좋은 성능을 보이는 것을 확인할 수 있었고  Less Than Real-Time에서도 좋은 mAP를 가지고 있음을 알 수 있습니다.



마무리

  • 개념적인 부분에 대하여 논문 리뷰를 해보았습니다.
  • 구현을 할 수 있다면 더 좋을 것 같습니다! 다음 시간에는 DarkNet을 구현하여 어떤 구조인지 더 명확하게 나타내보겠습니다.


Refer

ence

[1] YOLOv1 리뷰 : https://deep-learning-study.tistory.com/430

[2] YOLOv1 리뷰 :https://herbwood.tistory.com/13

[3] NMS 정의: https://deep-learning-study.tistory.com/403

[4] 논문 : https://arxiv.org/pdf/1506.02640.pdf