[논문 리뷰] YOLO9000:Better, Faster, Stronger

Hayun Lee·2021년 9월 15일
0

논문 리뷰

목록 보기
4/11
post-thumbnail

논문 : YOLO9000
YOLO9000은 YOLO 시리즈의 두 번째 논문이다.

YOLO9000

Abstract

논문은 크게 3가지 부분으로 나뉜다.
Better : 정확도를 올리기 위한 방법
Faster : 속도 개선을 위한 방법
Stronger : 더 많은, 다양한 클래스를 예측하기 위한 방법

1. Better

Batch Normalization

논문에서는 모든 conv layer 뒤에 batch normalization을 추가. 이를 통해 mAP 값이 2% 정도 향상됨. 또한 overfitting 없이 기타 regularization 방법이나 dropout을 제거함.

High Resolution Classifier

YOLO v1 모델은 Darknet을 224x224 크기로 pre-train시켰지만 detection task 시에는 448x448 크기의 이미지를 입력으로 사용. 이는 네트워크가 object detection task를 학습하면서 동시에 새로운 입력 이미지의 resolution(해상도)에 적응해야 함을 의미.
YOLO v2 모델은 처음부터 Darknet을 448x448 크기로 pre-train시켜 네트워크가 상대적으로 높은 해상도의 이미지에 적응할 수 있도록 함. 이러한 방법을 통해 mAP 값이 4% 정도 향상됨.

Convolutional with Anchor boxes

YOLO v1은 각 grid cell의 bounding box의 좌표가 0~1 사이의 값을 가지도록 랜덤으로 설정한 뒤 학습을 통해 최적의 값을 찾아가는 과정을 거침. 반면 Faster R-CNN 모델은 사전에 9개의 anchor box를 정의한 후 bounding box regression을 통해 x, y 좌표와 aspect ratio(offset)을 조정하는 과정을 거침. 좌표 대신 offset을 예측하는 문제가 보다 단순하고 네트워크가 학습하기 쉽다는 장점이 있음.

YOLO v2에서는 anchor box를 도입하며, 이 과정에서 네트워크를 수정함. 먼저 conv layer의 output이 보다 높은 resolution을 가지도록 pooling layer를 제거함. 또한 앞서 입력 이미지를 448x448 크기로 사용한다고 했지만, 네트워크를 줄여 416x416 크기의 입력 이미지를 사용. 입력 이미지를 수정한 이유는 최종 output feature map의 크기가 홀수가 되도록 하여, feature map 내에 하나의 중심 cell(single center cell)이 존재할 수 있도록 하기 위함. 보통 객체의 크기가 큰 경우 이미지 내에서 중심을 차지하기 때문에, 하나의 중심 cell이 있으면 이를 잘 포착할 수 있음.

416x416 크기의 입력 이미지를 네트워크에 입력할 경우 최종적으로 13x13 크기의 feature map을 얻을 수 있음(downsample ratio = 1/32). YOLO v1은 각 cell별로 2개의 bounding box를 예측하여 총 98(=7x7x2)개의 bounding box를 예측하지만, YOLO v2는 anchor box를 사용하여 보다 많은 수의 bounding box를 예측. anchor box를 사용하지 않은 경우 mAP 값이 69.5%, recall값은 81%인 반면, anchor box를 사용한 경우 mAP 값은 69.2%, recall 값은 88%. anchor box를 사용하면 mAP 값이 감소하지만 recall 값이 상승하고, 이는 모델이 더 향상될 여지가 있음을 나타냄.

Object detection task에서 recall 값이 높다는 것은 모델이 실제 객체의 위치를 예측한 비율이 높음을 의미. YOLO v1이 recall 값이 낮은 이유는 region proposal 기반의 모델에 비해 이미지 당 상대적으로 적은 수의 bounding box를 예측하기 때문. 하지만 YOLO v2에서 anchor box를 통해 더 많은 수의 bounding box를 예측하면서 실제 객체의 위치를 보다 잘 포착하게 되고, 이를 통해 recall 값이 상승.

Dimension Clusters

기존에는 anchor box의 크기와 aspect ratio를 사전에 미리 정의(hand-picked)함. 하지만 논문의 저자는 만약 네트워크가 더 좋은 조건으로 학습을 시작하기 위해 더 나은 사전 조건(prior)을 선택한다면 detection 성능이 향상될 것이라고 말함. 이를 위해 k-means clustering을 통해 최적의 prior를 탐색하는 방법을 제시. 이 때 데이터셋에 있는 모든 ground truth box의 width, height 값을 사용하여, k-means clustering 수행.

d(box,centroid)=1IOU(box,centroid)d(box, centroid) = 1 − IOU(box, centroid)

일반적인 k-means clustering의 경우 유클리안 거리(Euclidean distance)를 통해 centroid와 sample간의 거리를 계산. 하지만 이러한 distance metric을 사용할 경우 큰 bounding box는 작은 box에 비해 큰 error를 발생시키는 문제가 있음. 하지만 box의 크기와 무관하게 선택한 prior이 좋은 IoU 값을 가지도록 하기 위해서 논문의 저자는 위와 같은 새로운 distance metric을 사용. 이는 box와 centroid의 IoU값이 클수록 겹치는 영역이 크기 때문에 거리가 가깝다는 점을 나타냄.

논문의 저자는 다양한 수의 kk(centroid의 수이자 anchor box의 수)에 대하여 k-means clustering을 진행하였고, k=5k=5일 때 모델의 복잡도와 recall 값이 적절한 trade-off를 보여줌. hand-picked anchor box 9개를 사용할 경우 평균 IoU값이 61.0이며, clustering 전략을 사용하여 뽑은 prior 5개를 사용할 경우 평균 IoU 값은 60.09로 나타남. 이는 5개의 anchor box만으로도 최적의 prior를 선택하면 네트워크가 detection task를 보다 쉽게 학습함을 의미.

Direct location prediction

x=(txwa)xax = (t_x ∗ w_a) − x_a
y=(tyha)yay = (t_y ∗ h_a) − y_a

YOLO와 anchor box를 함께 사용했을 때 문제점은 초기 iteration 시, 모델이 불안정하다는 것. anchor box는 bounding box regressor 계수(coefficient)를 통해 위의 공식과 같이 bounding box의 위치를 조정. 하지만 tx,tyt_x, t_y 와 같은 계수는 제한된 범위가 없기 때문에 anchor box는 이미지 내의 임의의 지점에 위치할 수 있다는 문제가 있음. 이로 인해 최적화된 값을 찾기 까지 오랜 시간이 걸려 모델은 초기에 불안정하게 됨.

저자는 이러한 문제를 해결하기 위해 YOLO의 방식을 사용하여 grid cell에 상대적인 위치 좌표를 예측하는 방법을 선택. 이는 예측하는 bounding box의 좌표는 0~1 사이의 값을 가짐을 의미. 위의 그림에서 cx,cyc_x, c_y는 grid cell의 좌상단 offset. bounding box regression을 통해 얻은 tx,tyt_x, t_y 값에 logistic regression 함수(σσ)를 적용하여 0~1 사이의 값을 가지도록 조정.

예측하는 위치의 범위가 정해짐으로써 네트워크는 안정적으로 학습을 진행하는 것이 가능해짐. Dimension clustering을 통해 최적의 prior를 선택하고, anchor box 중심부 좌표를 직접 예측함으로서 recall값이 5% 정도 향상됨.

Fine-Grained Features

YOLO v2는 최종적으로 13x13 크기의 feature map 출력. feature map의 크기가 작은 경우 큰 객체를 예측하기 용이한 반면 작은 객체는 예측하기 어렵다는 문제가 있음.
이러한 문제를 해결하기 위해 마지막 pooling을 수행하기 전에 feature map을 추출하여 26x26(x512) 크기의 feature map을 얻음. 그 다음 위의 그림과 같이 feature map을 channel은 유지하면서 4개로 분할한 후 결합(concat)하여 13x13(x2048)크기의 feature map을 얻음. 이러한 feature map은 보다 작은 객체에 대한 정보를 함축하고 있음. 이를 13x13(x1024) feature map에 추가하여 13x13(x3072) 크기의 feature map을 얻음.

최종적으로 3x3 conv와 1x1 conv를 적용하여 13x13(x125) 크기의 feature map을 얻음. 여기서 channel 수가 125인 이유는 각 grid cell별로 5개의 bounding box가 20개의 class score와 (confidence, x, y, w, h)를 예측하기 때문(=5개의 bounding box x (20개의 class score + (conf, x, y, w, h))). 이처럼 fine-grained feature를 사용함으로써 1% 정도의 성능을 향상시킴.

Multi-Scale Training


저자는 YOLO v2 모델을 보다 강건하게 만들기 위해 다양한 입력 이미지를 사용하여 네트워크를 학습시킴. 논문에서는 10 batch마다 입력 이미지의 크기를 랜덤하게 선택하여 학습하도록 설계. 모델은 이미지를 1/32배로 downsample시키기 때문에 입력 이미지 크기를 32배수 {320, 352, ..., 608} 중에서 선택하도록 함. 320x320 크기의 이미지가 가장 작은 입력 이미지이며, 608x608 크기의 이미지가 입력될 수 있는 가장 큰 이미지.
이를 통해 네트워크는 다양한 크기의 이미지를 입력받을 수 있고, 속도와 정확도 사이의 trade-off를 제공. 위의 표에서 확인할 수 있듯이 입력 이미지의 크기가 작은 경우 더 높은 FPS를 가지며, 입력 이미지의 크기가 큰 경우 더 높은 mAP 값을 가지게 됨.

Faster

0개의 댓글