본문 바로가기
논문 정리

YOLO

by winston1214 2020. 9. 11.
반응형

본 글은 http://pjreddie.com/yolo 홈페이지를 참고하면 더욱 자세하게 알 수 있고, 제 나름대로의 해석이니 틀릴 가능성이 많습니다. arxiv.org/pdf/1506.02640.pdf (2015)위 논문을 바탕으로 작성했음을 알려드립니다. 만약에 틀린게 있다면 꼭 댓글로 달아주시면 감사하겠습니다.

YOLO는 Object Detection의 기본적인 알고리즘이다. 속도가 매우 빠른 알고리즘으로 실시간 영상처리에 적합하다는 평을 많이 받고있다. 현재 2020.09 기준으로 v5 까지 나와있다.

일단 YOLO의 기본 동작 원리이다.

yolo big picture

이미지 그리드를 448 x 448로 resize한 후 single convolution을 동작한다. 즉, CNN 동작이다. 그리곤 난 후 그 output의 결과를 NMS를 통해 걸러내서 객체를 탐지하는 것이다.

여기서 NMS란 CNN의 MaxPooling 같은 느낌이다. 정확히는 현재 픽셀을 기준으로 주변의 픽셀과 비교했을 때 최대값인 경우인 경우 그대로 놔두고, 아닐 경우 억제하는 것이다.

- Introduction에 나오는 YOLO의 특징에 대해서 설명하겠다.

1. YOLO는 무지하게 빠르다.

회귀문제로 인식하기 때문에 복잡한 파이프라인이 필요하지 않다. 간단한 신경망 학습을 통해 예측하는 것이다. 기본적으로 YOLO는 45FPS(frames per second), Fast - YOLO는 무려 150 FPS 보다 높다.

2. YOLO는 이미지 예측을 할 때 이미지 전체적으로 파악한다.

YOLO는 훈련과 테스트 시간 중에 이미지 전체를 보기 때문에 클래스의 외관뿐만 아니라 상황에 따른 정보도 암묵적으로 Encoding한다. 따라서 Fast R - CNN와 비교했을 때 Backgroud Error(예를 들어 강아지 뿐만 아니라 뒷배경도 인식하는 에러)가 반 이하로 낮아진다.

3. YOLO는 일반화를 배운다.

일반적인 이미지로 train하고 예술작품으로 test를 돌렸을 때 DPM(Deformable Parts Model)과 R-CNN보다 성능이 좋았다. 이 이유는 YOLO가 일반화가 잘 되기 때문에 새로운 분야나 예상치 못한 이미지가 들어왔을 때 예측을 더 잘할 수 있다.

하지만 YOLO는 아직 정확도면에선 훌륭한 편이 아니다.(2015 기준)

 

 

 - Unified Detection

yolo model

Yolo는 일단 input 이미지를 S x S의 그리드로 나눈다. 그리고 각각의 그리드 셀들은 bbox(Bounding Box)와 해당 박스에 대한 신뢰도(Confidence score)를 예측한다(B). 여기서 말하는 신뢰도 점수는 물체가 그 안에 포함이 되어 있다는 것과 박스(S x S grid)가 예측하는 박스의 정확성을 측정하는 지표이다. 만약에 셀 안에 물체가 없다면 이는 신뢰도가 0이 된다.

※ 알아야 할 점이 bbox의 구성요소이다. (x,y,w,h,confidence)로 5가지의 예측으로 구성되어있다. x,y 는 사각형 중앙의 좌표이고 w는 넓이(즉 가로 길이), h는 높이(즉 세로 길이), confidence는 신뢰도(예측된 box 와 실제 true 박스의 IOU)

☆ IOU(Intersection over union) 용어 설명 :  research.sualab.com/introduction/2017/11/29/image-recognition-overview-2.html

또한, 그리드 셀은 클래스의 가능성을 예측한다.(C) 이 확률은 객체를 포함하는 그리드 셀에서의 조건부 확률이다. 

C : Pr(Class_i | Object) 

이 확률은 상자 B의 수에 관계없이 그리드 셀당 하나의 클래스 확률 세트만 예측한다.

 

 

이러한 예측 값으로 하나의 tensor 구조를 예측할 수 있다. S x S x (5*B+C) 라는 예측값이 나오게 된다.

 

- Network Design

network design

 

yolo network

GoogleNet에서 영감을 받아 구조를 설계 했고 더욱 간단하게 1x1 축소 레이어와 3x3 convolution layer 를 사용하였다. 이러한 간단한 구조를 통해 속도를 더욱 빠르게 만들 수 있는 것이다.

 

- Traning (더욱 이해 필요..이해가 부족)

YOLO는 Darknet framework를 사용하여 훈련과 예측 과정을 수행하였다. 그리고 활성화 함수는 leaky ReLU를 사용하였다. 그리고 최적화 함수는 sum-square error 를 사용하였는데 이 이유는 간단하기 때문이다. 하지만 여러 문제들이 발생하였다. (+ 객체가 없는 이미지가 많았다)

이를 극복하기 위해 2개의 파라미터(lambda_coord, lambda_noobj)를 사용하여 경계 상자 좌표 예측에서 손실을 늘리고 객체를 포함하지 않는 상자에 대한 신뢰 예측 손실을 줄입니다. Sum-squared error 또한 큰 박스와 작은 박스에 동일한 가중치를 적용하여 큰 상자의 작은 편차가 작은 상자보다 중요하다는 것을 반영한다.

YOLO는 그리드 하나당 두개의 bbox를 예측하게 되는데 이 문제점을 해결하기 위해 IOU가 높은 박스를 찾아서 "Responsible" predictor를 할당한다. 이로인해 recall을 향상 시킬 수 있다.

그리고 과대적합을 피하기 위해 dropout(0.5)과 데이터를 확장시켰다.

 - Limitations

1. 각 그리드는 두개의 bbox를 예측하고 하나의 class를 가질 수 있기 때문에 공간적 제약이 생길 수 밖에 없다. 이렇기 때문에 작은 물체에 대한 탐지가 어려움이 생긴다.

2. 데이터에서 경계 상자를 예측하는 것을 학습하기 때문에 새롭거나 비정상적인 종횡비 또는 구성의 객체로 일반화 하는데 어려움이 생긴다.

3. 여러 다운 샘플링을 하기 때문에 상대적으로 거친 기능(?)을 사용한다.

4. 손실 함수는 작은 경계 상자와 큰 경계 상자의 오류를 동일하게 처리한다. 따라서 작은 상자의 작은 오류가 IOU에 큰 영향을 미친다.

 

- 다른 모델과 성능 비교

comparision

 

속도는 매우 빠른 반면 정확도는 Faster R-CNN 보다 약간 낮다. 하지만 아주 최근에 나온 YOLOv5는 속도와 정확도면에서 아주 높은 성능을 발휘하고 있다.

 

- 참고자료

docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.p

 

 

 

반응형

'논문 정리' 카테고리의 다른 글

Auto Encoding Variational Bayes(VAE) -1  (5) 2021.03.29
Deep Residual Learning for Image Recognition(ResNet)  (4) 2021.03.13
Towards open set deep networks  (4) 2021.01.20
YOLOv5 - training & test  (23) 2020.09.27
YOLOv5 - Introduction  (0) 2020.09.27

댓글