본문 바로가기

논문 정리

YOLOV1

이번에 살펴볼 논문은 YOLO입니다.

YOLO는 현재 v8까지는 나왔습니다. 그리고 v8은 논문 준비중이라고 합니다 !! 

이번에 살펴볼 YOLO는 v1 논문입니다.

 

우선, 이전에 Faster RCNN에서는 Region Proposal이 Network가 됨으로 GPU 가속으로 인한 학습이 가능해졌고, 하나의 네트워크로 학습이 가능해 졌습니다. anchor box를 처음으로 도입했으며, end-to-end학습이 가능하게 되었습니다.

 

하지만, Faster RCNN에도 몇가지 한계가 있었습니다.

  1. Anchor Box의 개수가 적다.
  2. 3개의 Sub NetWork로 구성되어져 있어 느리다 라는 단점이 있습니다.

 

SSD에서는 위의 문제를 해결하기 위해서 아래와 같은 방법을 사용했습니다.

 

  위의 anchor box 부족의 문제를 해결하기 위해서, Feature Pyramid를 적용해서 해결을 했습니다.  Feature Pyramid는 서로다른 해상도의 Feature Map에서 Object를 찾습니다. 이때 anchor box의 크기를 고정되어져 있습니다. 따라서 같은 크기의 anchor box가 다른 크기의 Object를 찾을 수 있게 되고, 해상도가 서로 다른 Feature Map에 동일하 개수의 anchor box가 생성 되기 때문에 anchor box의 수가 증가하게 됩니다.

 

SSD의 구조

  위의 그림은 SSD의 구조입니다. SSD는 위에 그림처럼 VGG-16을 backbone으로 사용해서, 300x300 입력 이미지를 38 x 38 해상도의 feature map을 생성합니다. conv6에서는 feature map이 38 x 38로 줄여졌고, 이후 conv7에서는 19x19로 크기가 작아졌습니다. conv8에서는 10 x 10, conv9에서는 5x5 conv10에서는 3x3 conv11에서는 1x1이 되는 네트워크의 구조를 가지고 있습니다.

 

각각의 feature map에서 생성이된 anchor box의 개수를 계산하면 다음과 같습니다.

  • 38 x 38 x 4 = 5776
  • 19 x 19 x 6 = 2166
  • 10 x 10 x 6 = 600
  • 5 x 5 x 6 = 150
  • 3 x 3 x 4 = 36
  • 1 x 1 x = 4

최종적으로 위의 박스의 개수를 합치면 8732개의 anchor box가 생성이 됩니다.

 

YOLOV1의 구조

  위의 그림 YOLOV1의 모델 구조입니다. SSD의 논무은 YOLO보다 일찍 출시되었습니다. SSD 논문에서는 YOLO를 너무 간단한 구조로 되어져 있고, 98개의 anchor box는 너무 적고, 성능이 떨어지는 알고리즘이라고 주장했씁니다. 반면 SSD 속도과 성능이 둘 다 좋은 알고리즘이라고 소개하고 있습니다.

 

SSD 논문에서 소개한 것 처럼 YOLOV1은 심플한 구조를 가지고 있지만, 정말 성능이 좋지 않은 모델일 까죠 ..?  현재에 와서는 인기있는 모델입니다. SSD, YOLO, Faster RCNN 모두 이 3개의 단계를 따르고 있습니다.

 

이미지를 Resize 시키고, Convolutional Network를 입력 영상을 통과 시키고 NMS로 Bounding Box를 찾는 것을 똑같이 수행합니다.

 

YOLO 대표 이미지

위의 이미지는 YOLO를 설명하기 위한 대표 이미지입니다. 앞서 Faster RCNN와 SSD의 경우는 anchor box 기반의 학습 방법을 보여주였지만, YOLO의 경우 grid approach 방법을 사용하고 있습니다.

 

우선 YOLO는 입력 영상을 SXS의 grid로 추출합니다. 그리고 하나의 grid 마다 bounding box를 2개씩 추론합니다. 해당 bounding box의 confidence도 같이 학습을합니다. grid approach 방법은 anchor box 접근방법과 유사합니다.

 

따라서, YOLO의 학습은 Object 전체에 대한 classification을 하는 것이 아니기 때문에 object의 일부분에 대한 classificatio n을 수행합니다. 즉, 찾고자하는 object의 일부분이 포함되어져 있으면, Object로 분류하고 없으면 background로 분류한다라고 생각하시면 됩니다. 또한 YOLO는 anchor box 기반의 모델들과는 다르게 grid 마다 class를 분류합니다.

 

그리고 YOLO는 confidence score가 높은 box는 굵게 표현을 하고, 해당 굵은 box 안에 가장 많이있는 class로  최종 class로 정하게 됩니다.

 

따라서, YOLO는 grid 마다 class를 분류한다하고 생각하시면 됩니다.

 

  YOLO는 입력 영상이 고정된 상태로 입력이됩니다(448 x 448). 마지막 Feature Map을 보면 7x7x30의 크기를 가지고 있습니다. 7 x 7 feautre map에는 30차원에는 다음과 같은 정보들이 있습니다. bounding box 좌표 와 confidence score, class ification score들이 다음과 같이 구성되어져 있습니다. YOLO의 bounding 박스는 grid 마다 2개가 생성되므로 2 x( boundin g box 좌표 4개 + confi dence score 1개) +  classification score 20개로 총 30차원으로 구성되어져 있습니다.

 

YOLO Loss

  YOLO의 Loss는 다음과 같이 구성되어져 있습니다. YOLO도 Faster RCNN과 SSD와 마찬가지로 background에 대한 핸들링이 중요합니다(Object가 있는 Grid와 없는 Grid를 나누어 Loss를 디자인 하는 방법).

 

YOLO coordinate loss

     이 수식은 위의 YOLO Loss에 좌표에 대한 일부 식입니다. 해당 공식에 있는 x, y는 center x, center y에 해당되고, w는 width, h는 height를 의미합니다. 해당 값들을 사용해서 regression loss를 계산을합니다. 해당 loss의 경우 MSE 계산 식을 사용했습니다. 다만 조금 특이한 부분이 width와 height에 대한 loss 값을 계산을 할 때, root를 씌여 줬습니다. 해당 부분에 대해서 논문에서는 Object 너무 큰 경우에 변화에 대해서 민감하게 반응하기 때문에 gradient를 감소 시켜주기 위해서 사용했다고 합니다.

 

Confidence Score

          YOLO 중간에 있는 해당 수식은 Confidence Score에 대한 Loss입니다. 해당 Loss는 background에 대한 Confidence Score에 대한 Loss를 계산합니다. 위의 Loss를 보면 noobj라도 되어져 있는 부분이 Object가 없는 Grid에 대한 Confidence score를 의미합니다. Object가 없는 부분에 대한 Loss에는 Lambda가 있는데 해당 Lambda의 경우 0.5로 설정해 Object가 있는 영역 대비 반만 영향을 미치도록 설정을 했다고 합니다. YOLO의 경우 Faster RCNN과 SSD와 유사한 grid 기반의 접근 방법을 사용하는 데, 해당 방법은 background에 대한 grid가 Faster RCNN과 SSD 비해서 적기 때문에 효과적인 학습이 가능합니다.

그리고 마지막에 있는 Loss는 classification loss에 해당됩니다(cross entropy loss).

 

 YOLO 논문에서는 Real-Time에서 성능이 좋으면서, FPS가 가장 빠르다.라고 합니다.

 

YOLO 논문에서는 Fast RCNN와 비교를 통해서, 어느 부분에 대한 Error 율이 심하게 나타나는 지를 보여줍니다. Fast RC NN에서는 YOLO에 비해서 background에 대한 Error율이 높은 것을 확인 할 수 있습니다. 해당 부분은 YOLO의  grid 기반의 접근 방법이 background의 error율을 줄일 수 있다는 것을 확인 할 수 있고, localization에 대한 loss의 경우, YOLO가 큰 것을 확인 할 수 있습니다. Localization에 대한 error율이 큰 이유는 prediction을 하기 위한 Box의 개수가 Fast RCNN에 비해서 작기 때문에 localization에 대한 error율이 높은 것 같습니다.

 

YOLO Results

위 사진은 YOLO의 Prediction 결과입니다.

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

[간단리뷰]Unet++  (0) 2024.05.11
[review]PETALS: Collaborative Inference and Fine-tuning of Large Models  (0) 2023.08.08
Faster R-CNN  (0) 2023.06.24
Fast R-CNN  (0) 2023.06.03
R-CNN  (0) 2023.05.30