YOLO(You Only Look Once) v5
Object Detection 분야에 많이 알려진 모델 YOLO에 대해 알아보자
YOLO(You Only Look Once)
YOLO는 지도학습(모델의 클래스와 위치를 기반으로 학습한다.) 모델이며, one-stage-detection 방법을 처음으로 고안한 모델이다.
관련하여 흥미로운 사실이 있는데, YOLO를 처음 고안한 조셉 레드몬이 20년 2월 21일 트윗을 기점으로 더 이상 비전 연구를 하지않았다는 것이다.
그 이유는 아래 트윗에 나와있듯이 이 연구가 좋은 방향으로 도움이 되는 것이 아니라고 판단했기때문이라고한다.
YOLO의 특징
- 단 한 번만 본다.
- 단 하나의 인공 신경망에서 모든 거이 처리된다.
- 실시간 객체 탐지가 가능하다. (기존 Faster R-CNN 대비 6배 증가한 속도)
- 정확도가 비교적 낮다. (특히 작은 객체에 대해서)
어떻게 단 한번만 보고 할 수 있어?
YOLO 모델의 탐지 시스템은 pixel, Bbox, coordinate(이미지내의 좌표계), class probability를 single regression problem으로 재구성해 한번에 알 수있는 것이다. 해당 신경망의 결과는 Bbox와 class probability이고 이를 Non-max suppression(NMS)를 통해 한 가지로 통합한다. *NMS: YOLO는 Bbox가 한 객체에 여러개가 생기는데, 이 중 가장 신뢰도가 높은 Bbox 한 개만을 추려내기 위한 알고리즘
어떻게 동작할까?
- YOLO 모델은 전체 그림을 Grid로 나누고 나뉘어진 cell마다 Bbox와 class를 예측한다.
- Bbox는 x좌표, y좌표, 가로, 세로, Confidence Score를 가지고 있다.
- Confidence Score = Pr(Obj) * IOU(Intersection over Union)
- Pr(Obj) -> Object가 존재할 확률로 Pr(Class_i/Object)라고하면 class i Object의 존재확률을 의미한다.
- IOU는 학습 데이터의 BBox와 Prediction Bbox의 일치정도를 계산한 값
어떤 구조일까?
YOLO는 3가지로 나뉘어져있다.
- Pre-trained Network: GooLeNet을 이용하여 ImageNet 1000-class dataset을 사전 학습해 Fine-Tunning함
- Reduction Layer: GooLeNet을 이용하여 연산량을 감소시키면서 층을 깊게 쌒음
- Training Network
YOLO의 Loss Function
- YOLO는 image classifier 문제를 Bbox를 만드는 regression 문제로 생각함
- Localization Error(Bbox를 잘 그렸는가?) 와 Classification Error(Object를 잘 분류했는가?)로 나누어서 생각하고 Object가 없는경우 Confidence score를 0으로 만들기 위해 Localization Error의 penalty가 커짐
- 많은 Bbox중에 IOU가 가장 높게 생성된 BBox만 학습에 참여
- 이 블로그 분이 손실함수에 대해 잘 설명해주셨기때문에 수식에 대해 따로 정리할 필요가 없다.
- 보통 물체의 중심과 가까울수록 IOU가 높기때문에 Confidence Score가 높게 나온다.