YOLO(V1) 이해

2022. 1. 20. 15:43computervision/섹션 6. YOLO(You Only Look Once)

YOLO는 대표적인 One stage Detector중 실시간 object Dedection분야에서 사용된다.

One stage Detector의 흐름을 잠깐 살펴보면 아래와 같다.

출처 : 딥러닝 컴퓨터 비전 완벽 가이드

2015년 6월 Yolo v1의 출시가 됨에 따라 기존의 two stage detector 모델보다 inference속도를 빠르게 높히는 성과를 내었다. 하지만 detection의 성능이 좋지는 못했다. 그 이후 SSD의 등장으로 detection성능과 inference속도를 어느정도 둘다 잡은 모델로 SSD가 인정을 받기 시작했다.

이후 Yolo v2의 등장으로 SSD만큼의 detection성능을 갖지만 inference속도는 더 빠른 yolo v2가 등장하게 된다.

2017년 8월 FPN을 탑재한 Retinanet이 등장하게 되고 이후 Yolo v3, EifficientNet, Yolo v4가 순차적으로 등장하게 된다.


Yolo v1

Yolo v1은 입력 이미지를 S * S grid로 나누고 각각의 grid의 cell이 하나의 object에 대한 detection을 수행하는 구조이다. 때문에 작은 object에 대한 detection 성능은 좋지 못한다.

각 grid cell은 2개의 bbox 후보를 가지고 있으며 이를 기반으로 object의 bbox를 예측하게된다.

yolo v1 network

yolo v1의 네트워크 구조는 위와 같다. backbone 구조는 VGG형태와 유사하게 생겼다. conv연산을 거친후 Fully connected layer와 drop out을 거쳐 최종적으로 7*7*30의 feature map형태를 가지게 된다. 이때 7*7형태에서 하나의 cell마다 object를 detection하게 된다. 7*7*30에서 30의 의미는 7*7 feature map에서 하나의 cell은 2개의 bbox를 가지고 있다. 이때 각각의 bbox마다 bbox의 중심 좌표와 너비/높이 정보, confidence score정보를 담아 총 10개를 차지하게 되고 Pascal VOC 기준 20개의 클래스 확률값을 담아 총 30개의 정보가 저장되게 된다.

 

yolo v1 loss는 아래와 같다.

yolo v1 loss function

 이 부분은 예측 좌표 x,y 값과 ground truth 좌표의 x,y값을 기반으로 오차 제곱 꼴을 가지고 있다.

모든 cell의 2개의 bbox중에 예측 bbox를 책임 지는 bbox만 loss값이 이루어 진다. 

 이 부분은 예측 넓이와 높이값 ground truth의 넓이와 높이 값의 오차 제곱 꼴을 가지고 있다. 크기가 큰 object의 경우 오류가 상대적으로 커짐을 방지하기 위해 제곱근 형태를 지니고 있다.

 이 부분은 예측된 object confindence score와 ground truth의 IOU의 예측 오차를 계산하는 부분이다. Object를 책임지는 bbox confidence loss값과 Object가 없어야 하는(배경) bbox의 confidence loss의 합으로 나타내어 진다.

이 부분은 예측 classification 확률의 오차 제곱이다. 마찬가지로 object를 책임지는 bbox만 대상으로 계산을 수행한다.

 

Yolo v1은 위의 그림과 같이 우선 많은 bbox를 기반으로 예측을 수행한다. 이후 NMS과정을 통해 최종 BBOX를 예측하게 된다.

NMS의 수행과정은 다음과 같다.

먼저 특정 confidence 값 이하는 모두 제거하고 가장 높은 confidence값을 가진 순서로 bbox를 정렬한다. 이후 가장 높은 confidence를 가진 bbox근처의 confidence score가 낮은 bbox는 모두 제거한다.

 

 

 

YOLO V1은 detection 시간은 빠르니 detection 성능이 떨어진다는 문제가 있고 특히 작은 object에 대한 detection 성능이 좋지 못하였다.

 

'computervision > 섹션 6. YOLO(You Only Look Once)' 카테고리의 다른 글

CVAT 사용해보기  (0) 2022.01.27
Ultralytics Yolo 실습(Oxford pet dataset)  (0) 2022.01.25
OpenCV Darknet Yolo 실습  (0) 2022.01.21
YOLO(V3) 이해  (0) 2022.01.20
YOLO(V2) 이해  (0) 2022.01.20