YOLOv1
원문
You Only Look Once:Unified, Real-Time Object Detection (2016)
Link : https://arxiv.org/abs/1506.02640
You Only Look Once: Unified, Real-Time Object Detection
We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili
arxiv.org
Introduction
기존의 모델들은 복잡한 파이프라인으로 구성되어있지만 yolov1
은 이미지에서 bounding box 좌표와 클래스 확률을 즉시 예측함으로써 object detection을 단일 회귀 문제로 재구성했다(1 stage Detection).
2 stage detection의 대표적인 예시인 R-CNN은 아래와 같은 방법으로 Detection을 진행한다.\\
1.Region proposal method를 사용하여 bounding box를 찾는다.\
2.Classifier를 이용하여 bounding box 분류한다.\
3.1,2 과정 이후에 bounding box를 수정하고 중복 detection을 제거하며 다시 Detection을 진행한다.
위와 같은 Detection 과정에서의 차이점이 존재하므로 yolov1
이 다른 object detection에 비해 몇개의 이점이 존재한다.
- 매우 빠르다.
위에서도 언급했듯이 1 stage Detection 진행하므로 2 stage Detection에 비해 속도가 빠르다. - Detection을 할 때 이미지에 대해서 전체적으로 추론한다.
- 객체의 일반화할 수 있는 표현을 학습한다.
객체의 특징있는 부분만 학습하는 것이 아닌 일반화 할 수 있는 표현도 학습하기 때문에 새로운 이미지를 Detection할 때 더 좋다.
Unified Detection
yolov1
모델은 complex pipline 구조가 아닌 single neural network 구조로 만들어졌다.
위의 그림과 같이 한번에 객체의 위치와 정확도를 Detection한다. 그 과정을 요약하면 아래와 같다.
- input 이미지를 S x S grid에 투영한다.
- object의 중심이 grid cell에 있으면 그 grid cell은 object를 탐지한다.
- 각 grid cell은 B개의 bounding box와 그 bounding box의 confidence score를 예측한다.
- 각 bounding box는 5개의 예측값(x,y,w,h,confidence)들로 구성되어 있다.
- 각 grid cell들은 class 확률을 예측한다.
- non-max suppression을 거쳐서 최종 bounding box를 select한다.
Network Design
우선 network의 모양부터 살펴보겠다.
yolov1
연구자들은 GoogleNet
에 많은 영감을 받아서 위와 같은 network를 만들었다고한다.
다만 GoogleNet
에 사용한 inception model 대신 1x1 convolution layer
을 사용했다.
위의 Network에서 알 수 있듯이 yolov1은 Convolution layer를 통해 feature를 추출하고 FC layer를 통해 class의 확률과 Bounding Box를 Detection한다.
yolov1
의 마지막 layer는 class의 확률과 bounding box의 좌표를 예측한다고 언급했다. 해당 bounding box의 너비와 높이를 이미지의 너비와 높이로 정규화 하여 0~1 사이가 되도록하게 했다.
Training
yolov1
에서는 Sum-Squared Error
를 손실 함수로 사용했다.
위의 손실 함수는 여러가지 문제가 존재하는데 아래와 같다.
- 2-stage Detection과 다르게 Localization Error와 Classification Error를 동일하게 가중치를 둔다.
- 객체를 포함하고 있지 않은 grid cell은 confidence값이 0을 갖는다.
이를 해결하기 위해 아래와 같은 파라미터를 설정했다.
coord
는 Bounding Box 좌표 손실에 대한 파라미터이고 noodj
는 객체를 포함하고 있지 않은 박세으 대한 confidence 손실의 파라미터이다. 이렇게 가중치를 다르게 부여하면 위에 있는 loss함수가 완성되게된다.
Limitations of YOLO
yolov1
에는 아래와 같은 한계점이 존재한다.
- 각 grid cell은 하나의 class만 예측한다. 즉, Object가 겹쳐 있다면 제대로 예측할 수 없다.
- Bounding Box가 data를 통해 학습되므로, 새로운 형태의 Bounding Box의 경우 정확히 에측할 수 없다.
- 작은 Bounding Box의 Loss가 IoU에 더 영향을 준다.