2) 색상 추출
  1단계에서 따로 저장한 object의 bounding box 이미지를 필요에 따라 전처리한 후, Mean Shift Algorithm (평균 이동 알고리즘)에 입력하여 색상을 추출한다.


  이 단계에서의 핵심 알고리즘은 BackGround Subtraction과 Mean Shift (평균 이동) Algorithm이다. 

 

 

YOLO v3는 YOLO v2에 새로운 기법들을 추가로 도입하여 성능을 향상시킨 모델입니다.

 

The Deal

1. Bounding Box Prediction

  v2와 동일한 점은 dimension cluster를 anchor box로 이용하여 bounding box로 예측한다는 점입니다. 

cluster centroid로부터의 offset을 이용하여 box의 width, height를 예측하고, sigmoid 함수를 이용하여 box의 중심 좌표를 예측합니다.

 

 

2. Class Prediction

  영상 내에서 찾은 object의 위치에 대해서 multilabel classification을 수행하는 단계입니다. bounding box 별로 class probability를 계산하고, sigmoid로 정규화한 후 binary classification을 수행하는 과정을 거칩니다. 이때, binary cross-entropy loss를 사용합니다.

  

* binary cross-entropy loss 추가 설명

  entropy가 크다는 것은 사건의 확률이 낮다는 것, 즉 불확실함을 의미합니다. binary cross-entropy loss는 multi-label classificatoin에서 주로 사용하는 loss로, (class=0)일 사건과 (class=1)일 사건에 대한 cross-entropy 값의 합의 평균으로 아래의 식으로 계산합니다.

$$ loss = -\mathrm{\frac{1}{N}} \sum_{i=1}^{N}(y_{i}*log(\hat{y}_{i}) + (1-y_{i})log(1-\hat{y}_{i})) $$

 

  여기서 $ y_{i} $ 는 ground truth, $ \hat{y}_{i} $는 각 class i에 대한 CNN 마지막 layer의 output인 score 벡터의 i번째 요소를 의미합니다.

  이때, 계산되는 cross-entropy loss는 아래 식과 같습니다.

$$ CE = -\sum_{i}^{C}y_{i}*log(\hat{y}_{i}) $$

 

 

3. Predictions Across Scales

  YOLO v3 는 서로 다른 3개의 scale로 bounding box를 예측합니다. 이는 FPN (Feature Pyramid Network)와 유사한 개념을 이용한 것으로, 각 scale의 box로부터 feature를 추출하는 것입니다. 이후, 최종적으로 3D tensor encoding bounding box, objectness, class prediction을 예측합니다. 본 논문에서 COCO dataset에 대한 최종 tensor는 N x N x [3 x (4+1+80)]의 형태를 지닙니다.

 

* FPN 추가 설명

(d) FPN과 다른 방법 (a-c)과의 비교

(a) 입력 이미지를 다양한 크기로 resize한 후, CNN에 통과시켜서 다양한 크기의 feature map의 획득이 가능합니다. feature map 크기가 다양해서, 다양한 크기의 object를 검출할 수 있다는 장점이 있지만, resize된 각 이미지에 CNN을 적용해야 하므로 연산량 및 연산 시간이 크게 증가하기에 거의 사용되지 않습니다.

(b) YOLO v1에서 사용하는 방법으로, 하나의 이미지에 CNN을 한 번만 통과시키므로 빠릅니다. 그러나, 최종 크기의 feature map만 사용하기에 작은 object에 대한 정보가 손실되는 문제가 있습니다.

(c) SSD에서 사용하는 방법으로, 순전파로 계산된 여러 계층에서의 multi-scale feature map을 재사용합니다. 그러나, 고해상도의 feature map을 사용하지 않아서 작은 물체에 대한 정보가 손실되는 문제가 있습니다.

(d) FPN에서 사용하는 방법으로, 고해상도 저해상도 feature map의 결합을 통해서 feature pyramid는 모든 scale의 정보를 담고 있고, 하나의 이미지로부터 빠르게 계산됩니다. feature pyramid의 각 level에서 prediction이 독립적으로 수행됩니다. FPN의 수행 과정은 아래에서 설명합니다.

 

FPN 구조 설명

1) Bottom-Up Path way (상단 좌측 이미지)

   동일한 크기의 feature map을 출력하는 layer들을 동일한 stage로 묶습니다. 한 stage를 거칠 때마다 feature map의 크기는 1/2이 됩니다. 각 stage의 마지막 layer의 출력값을 pyramid에 사용할 feature map으로 이용합니다.

2) Top-Down Pathway (상단 우측 이미지)

   상위 feature map을 'nearest neighbor upsampling' 기법을 적용하여 해상도를 2배씩 키웁니다.

3) Lateral Connetion (하단 이미지)

   bottom-up과 top-down에서 각각 같은 크기의 feature map을 결합합니다. 이때는 bottom-up의 feature map에 1x1 convolution 적용하여 channel 감소시킨 뒤, 단순히 top-down의 feature map에 더하여 계산합니다. 이 결과에 3x3 convolution 적용하여 최종적인 feature map을 생성합니다.

 

  이러한 FPN에도 단점이 존재합니다. feature map을 줄여나가면서 물체를 인식하기에 아래에 있는 것은 feature에 대한 성능이 떨어지고, feature map의 크기가 줄어들면서 위치 정보가 사라집니다.

  이에 반해, YOLO v3는 feature 사이즈를 키워나가면서 highlevel extraction을 뽑고, 위치 정보를 가지고 와서 더해주어 좋은 성능을 내려고 합니다.

 

 

4. Feature Extractor

  YOLO v3에서는 shorcut connection을 추가된 Darknet-53을 backbone으로 사용합니다.

 

Results

 

Redmon, J., & Farhadi, A. (2018). Yolov3: An incremental improvement. arXiv preprint arXiv:1804.02767.

Lin, T. Y., Dollár, P., Girshick, R., He, K., Hariharan, B., & Belongie, S. (2017). Feature pyramid networks for object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 2117-2125).

이어서, YOLO v2 (YOLO 9000) model에 대해서 정리한다.

YOLO v2 (YOLO 9000)

Abstract & Introduction

YOLO 9000 = 9000개 이상의 object category를 탐지할 수 있는 real-time object detection system

 

- object detection과 classification을 공동으로 training시키는 방법을 제안한다.

  즉, COCO detection dataset과 ImageNet classification dataset에 동시에 훈련시킨다.

  이는 labelled detection data가 없는 object class에 대해서도 탐지할 수 있도록 한다.

 

- 정확도와 속도 사이의 trade-off의 균형을 잘 맞춰 좋은 성능을 보인다.

 

- 3개의 파트별로 다양한 아이디어를 도입한다.

  1) Better : 정확도 올리기 위한 방법

  2) Faster : 속도를 향상시키기 위한 방법

  3) Stronger : 더 많은 범위의 class를 예측하기 위한 방법

 

Part 1 : Better

  속도를 유지하면서 정확도를 향상시키는 것을 목표로, network를 깊고 복잡하게 만들기보다는 단순화시켜서 training을 용이하게 하고자 한다. 

 

7개의 ideas를 제시한다.

1) Batch Normalization

  모든 convolution layer 뒤에 batch normalization을 추가한다. 이를 통해 mAP가 2% 정도 향상되었고, overfitting 없이 regularization 기법이나 drop out의 제거가 가능하다.

 

2) High Resolution Classifier

- SOTA model : ImageNet에 pre-train된 classifier를 사용하는데, 대부분의 classifier는 256*256보다 작은 이미지에서 작동한다.

- original YOLO (YOLO v1) : 224*224에 training시키고, detection할 때는 448*448로 resolution을 높인다.

이는 network가 object detection task를 학습하면서, 동시에 새로운 입력 이미지의 resolution에 적응해야 함을 의미한다.

→ YOLO v2에서는 처음부터 high resolution(448*448)에 training시킴으로써 상대적으로 높은 resolution의 이미지에 적응할 시간을 제공한다.

 

3) Convolutional with Anchor Boxes

  anchor box를 도입하여 다음과 같이 모델을 수정한다.

  1. output이 높은 해상도를 가지도록 pooling layer를 제거한다.

  2. 입력 이미지를 416*416으로 수정함으로써, 최종 output feature map의 크기가 홀수가 되도록 한다.

  → 더 많은 수의 bounding box를 예측하면서 실제 object의 위치를 보다 잘 포착하게 된다.

 

* 추가 설명

  (기존) 각각의 object의 center를 포함하는 grid에 object를 할당

  (Anchor Box) 각각의 object의 center를 포함하는 grid 중 여러 형태의 anchor box와의 IoU가 가장 큰 grid에 object를 할당 → 각 grid에서 여러 개의 object 검출 가능하도록 함.

 

4) Dimension Clusters

  anchor box를 YOLO와 함께 사용할 때 anchor box의 크기와 종횡비를 사전에 정의하는데, 더 나은 prior를 선택한다면 detection의 성능이 향상될 것이다. 이를 위해 trianing set bounding box에 k-means clustering을 적용한다.

  추가로, Euclidean distance 기반의 standard k-means를 사용하면, 큰 box가 작은 box보다 더 많은 오류를 만들어낸다는 문제가 있다. box의 크기와 무관한 좋은 IoU로 이어지는 prior를 원하기에 새로운 distance metric을 사용한다.

$$ d(box, centroid) = 1 - IOU(box, centroid) $$

위 식은 box와 centroid의 IoU 값이 클수록 겹치는 영역이 크기에 거리가 가까움을 나타낸다.

 

k를 다양하게 해서 k-means clustering에 대한 실험을 진행했을 때, k=5가 적정함을 알 수 있다.

 

5) Direct Location Prediction

  YOLO와 anchor box를 함께 사용했을 때의 또 다른 문제점이 존재한다. 초기 iteration 시, bounding box의 위치를 조정하는 계수에는 제한된 범위가 없어서 최적화된 값을 찾는데 오래 걸린다는 문제(모델의 불안정성 문제)이다.

  이를 해결하기 위해, gird cell에 상대적인 위치 좌표 (0~1의 값)를 예측하도록 함으로써 예측하는 위치의 범위가 정해짐에 따라 network아 안정적으로 학습 가능하도록 한다. 

 

→ (4)의 dimension clustering을 통해 최적의 prior를 선택하고, (5)의 anchor box의 center의 좌표 예측을 통해 성능을 향상시킨다.

 

6) Fine-Graiend Features

  network의 최종 output은 13*13의 feature map이다. 그러나, feature map의 크기가 작은 경우에 큰 object를 예측하기에는 용이하지만, 작은 object를 예측하기 어렵다.

  이를 해결하기 위해,

  1. 마지막 pooling을 수행하기 전에 feature map을 추출하여 26*26의 feature map을 얻는다. 

  2. feature map의 channel은 유지하면서 4개로 분할한 후 결합하여 13*13의 feature map을 얻는다.

  → 이러한 feature map은 보다 작은 object에 대한 정보를 함축하고 있다.

출처 " https://wikidocs.net/167664 "

7) Multi-Sclae Training

  다양한 input image의 크기를 사용하여 network를 학습시켜 본다. 아래 표에서 알 수 있듯이, 속도와 정확도 사이에는 trade-off가 존재하며, input image의 크기가 작은 경우 높은 fps를 가지고, 크기가 큰 경우 높은 mAP 값을 가지게 된다.

 

Part 2 : Faster

 YOLO v2의 backbone은 아래 표와 같은 구조를 가지는 Darknet-19이다. 

+ GAP (Global Average Pooling)

  YOLO v1은 network 마지막에 fully connected layer를 통해 predection을 수행하기에 parameter의 수는 증가하고, detection 속도는 감소한다는 단점을 가진다.

  이에 반해 YOLO v2의 Darknet-19는 마지막 layer에 GAP 사용하여 fully connected layer를 제거함으로써, paramter의 수는 감소시키고 detection 속도를 향상시킨다.

 

* GAP  추가 설명

  : 같은 channel의 feature를 평균내는 것으로, (h, w, channel)의 형태를 (channel,)의 형태로 바꾸어준다.

    최종 output이 1차원 벡터이므로 fully connected layer 대신 사용 가능하다.

 

 

Part 3 : Stronger

  앞서 언급했듯이 model을 더 강건하게 만들기 위해서 classification dataset과 detection dataset을 함께 학습시켜 보다 많은 class를 예측하려고 합니다. 이를 위해 주목해야 할 점은 두 데이터셋을 섞는 방법입니다. classification dataset은 보다 세부적인 object에 대한 정보를 가지고 있습니다. 예를 들면, '요크셔테리어', '불독' 등. 그러나, detection dataset은 일반적으로 범용적인 object에 대한 정보를 가지고 있습니다 .예를 들자면, '개' 등이 있다. 이때, 발생할 수 있는 문제점은 '개'와 요크셔테리어'를 별개의 class로 분류할 수도 있다는 입니다.

 

  이를 해결하기 위해서 ImageNet label로부터 hierarchical tree인 WordTree를 구성하는 'Hierarchical classification' 방법을 제안합니다. 

  ImageNet label은 concept과 concept 간의 관계를 구조화하는 language database인 WordNet으로부터 가져옵니다. WordNet은 언어가 복잡하기 때문에 tree가 아닌 directed graph로 구성됩니다. 예를 들자면, '개'는 'canine(개)' 유형과 'domestic animal (가축 동물)' 유형 둘 다에 포함됩니다. 본 논문에서는 전체 그래프 구조를 사용하는 대신 ImageNet의 concept에서 hierarchical tree를 구축하여 문제를 단순화합니다.
  최종적으로 생성된 WordTree는 physical object를 루트 노드로 두고, 하위 범주는 자식 노드가 되도록 하여 점차 뻗어나갑니다. 


  WordTree로 classification을 수행하려는 경우, 해당 synset이 각 하위 확률에 대해 모든 노드에서 조건부 확률을 예측합니다. 예를 들어, "terrier" 노드에서는 다음의 확률값을 예측합니다.

$$ Pr(Norfolk terrier|terrier) $$

$$ Pr(Yorkshire terrier|terrier) $$

$$ Pr(Bedlington terrier|terrier) $$

 

  만약 특정 노드에 대한 absolute probability를 계산하려면, tree를 통해 루트 노드까지의 path를 따라서 조건부 확률을 곱하면 됩니다. 예를 들어, 입력 이미지가 'Norfolk terrier'인지 알고싶다면, 다음을 계산합니다.

 

  이러한 방식을 통해 ImageNet dataset과 COCO dataset을 4:1의 비율로 합친 9418개의 class를 가지는 WordTree를 구성합니다. 

 

Experiments

 


 

Redmon, J., & Farhadi, A. (2017). YOLO9000: better, faster, stronger. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 7263-7271).

  참고한 논문에서는 크게 CNN과 RNN 모델이 사용된다. CNN 모델의 경우는 이전의 게시물 ( ~ )에서 설명했기에, RNN 모델에 대해 정리하려고 한다. 주로 사용한 모델은 LSTM과 GRU이다.

 

 

+ Recent posts