Object Detection 시리즈 : Overfeat 모델에 대한 정리

Overfeat 개요

  • Sliding window 방식을 ConvNet에 효율적으로 적용하고, 객체 바운더리를 예측하는 Localization 문제를 위한 end-to-end 딥러닝 방식을 제시함.
  • Bounding Box의 정확도를 올리기 위한 적층(accumulate) 방법을 소개하고, 하나의 신경망을 여러 개의 Task를 위해 동시에 학습시키는 법을 소개함.
  • 한달 일찍 나온 R-CNN 모델 보다 성능은 낮지만, 1-Stage Detector의 시초로서의 면모를 보이며, SSD, YOLO 등 후속 모델에 큰 영향을 주었다. (R-CNN이 ImageNet 대회에 참여하지 않아 OverFeat이 역사적인 AlexNet 이후로 ImageNet Object Detection 대회에서 CNN으로 좋은 성적을 낸 첫 사례가 됨)
  • paper: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

Key-Points

Multi-scale input

  • Overfeat 모델은 multi-scale 이미지를 입력으로 받는다. 하나의 이미지를 다양한 크기로 입력 받으면 이미지 내 존재하는 다양한 크기의 객체를 보다 쉽게 포착하는 것이 가능해지며, 기존 CNN 모델들이 고정된 크기의 이미지를 입력받는 것과는 차이가 있다.
  • AlexNet 모델은 227x227, VGG 모델은 224x224 크기의 이미지를 입력으로 받는 것처럼 CNN 모델이 고정된 크기의 입력을 받는 이유는 FC Layer(Fully Connected Layer)가 고정된 크기의 feature vector를 입력받기 때문이다.

+full

  • 위 그림과 같이 입력의 크기가 변하면 FC Layer에 입력되는 feature vector 크기 역시 변하기 때문에 일반적인 CNN 모델은 다양한 크기의 이미지를 입력으로 받을 수 없다.
  • Overfeat 모델은 FC Layer를 Conv Layer로 대체하여 multi-scale 입력을 받도록 하고, 가변 크기의 출력 feature vector(feature map)를 이용해 객체 정보를 예측함.

Spatial outputs

  • 저자는 output feature map의 크기가 1x1(w x h)인 경우는 Non-spatial 하다고 간주하고, Overfeat 모델은 입력 이미지의 scale에 따라 Conv Layer를 통해 2x3, 3x5, 5x7, 6x7, 7x10 과 같은 다양한 크기의 feature map을 산출하고, 이와 같은 경우는 Spatial output이라 할 수 있다고 함.

![[13-2. Overfeat_image_2.png|]]

  • 위 그림과 같이 입력 크기에 따라 동일한 2x2 Pooling Layer를 거쳐 나오는 output map의 크기는 달라진다.
  • 이때, output map은 input feature의 정보를 인코딩(encode) 한다고 볼 수 있으며 1x1 크기의 pixel이 encode하는 범위를 receptive field라고 함.

  • 즉, 모델에 의해 산출된 spatial output의 요소들은 원본 이미지 내 특정 receptive field에 대한 정보를 encode하고 있다고 볼 수 있다.
  • 이러한 정보는 학습 방법에 따라 특정 class의 confidence score나 bounding box의 좌표값이 될 수 있다.

+full

ConvNet Sliding Window

+full

  • feature map에 conv filter를 적용하여 전체를 순회하는 과정은 sliding window와 유사 하지만, 논문의 저자는 fc layer를 conv layer로 대체함으로써 Sliding window와 같은 효과를 보다 효율적으로 구현할 수 있었다고 말함.
  •  위의 그림을 보면 노란색 영역과 파란색 영역에 대하여 3x3 conv filter를 적용한 결과 겹치는 영역에 대한 정보가 같으며, 이는 conv layer에서 겹치는 영역에 대한 중복된 연산을 피할 수 있음을 의미한다.
  • Sliding window는 크롭, 리사이즈된 이미지를 독립적으로 계산하기 때문에 많은 중복 연산을 야기하지만, CNN은 중복된 영역을 재사용함으로써 효율적으로 연산함.(cuDNN 과 같은 라이브러리에서는 내부적으로 shared memory를 사용하여 overlapping 영역 재활용)

Overfeat 구조

+full

  • Overfeat 모델은 6개의 scale의 이미지를 입력으로 받고, classification 목적으로 학습된 모델(feature extractor) 에 이미지를 입력하여 feature map을 얻는다.
  • 얻은 feature map을 ClassifierBounding box regressor에 입력하여 bounding box를 예측하고, 최적의 bounding box를 출력하기 위해 불필요한 box를 병합하는 Greedy Merge Strategy 알고리즘을 적용한다.

1. Classification Task

+full

  • Overfeat의 Classification 모델은 AlexNet 모델과 유사하지만 contrast normalization을 사용하지 않으며, pooling 시 겹치는 영역이 없도록 하고, 더 작은 stride(4 2)를 적용하여 1, 2번째 layer의 feature map이 더 크다는 차이점이 있다.
  • 수정된 모델의 구조는 위 그림과 같고, ImageNet 데이터를 통해 1000개의 class를 예측하도록 학습하였다. 상기 네트워크 구조 표에 입력 사이즈 221x221은 예시 입력이며, 실제 OverFeat는 다양한 크기의 입력 이미지를 사용함.

2. Localization/Detection Task

  • Localization/Detection Task 시에는, Classification task를 위해 학습된 Overfeat 모델에서 layer5까지만 사용하고 나머지 layer는 학습을 통해 fine tuning 한다.
  • Overfeat은 Detection task시, multi-scale 이미지를 입력받고, 이를 통해 얻은 spatial output을 활용하여 detection을 수행한다. 따라서 feature extractor 뒤에 fc layer 대신, conv layer를 추가하고, 학습 시에는 하나의 scale의 이미지만을 사용한다.

+full

1. Training Classifier

  1. Classification task를 위해 미리 학습시킨 Overfeat 모델을 layer5까지만 불러와 feature extractor로 사용하고, layer6(5x5 conv. 4096), layer7(1x1 conv. 4096x4096) 을 추가함.
  2. 이미지를 feature extractor(~layer5)에 입력하여 5x5 크기의 feature map을 256개 출력한다.
  3. 5x5 크기의 feature map은 layer6,7,8을 통과하여 1x1xC(class 수) 크기의 feature map을 출력한다.
  4. loss function(softmax)을 통해 학습시킨다.

2. Inference Classifier

  • Classifier는 training 과정과 inference 동작 시 차이가 있다.
Resolution Augmentation
  • 저자는 Classifier가 inference 시, 충분한 view를 제공하기 위한 새로운 pooling 방법을 제시함.
  • 이미지가 CNN 모델의 여러 pooling layer를 거치면 subsampling 되어 작은 크기의 feature map으로 변하는데, 마지막 feature map이 원본 이미지에 표현하는 해상도가 너무 포괄적이게 되면 객체와 feature map 사이의 정렬(align)이 맞지 않아, 모델의 성능이 크게 떨어진다고 한다. (=원본 이미지의 지나치게 넓은 receptive field를 표현하면 오히려 객체를 제대로 포착하지 못한다)
  • 이를 해결하기 위해, pooling을 수행하는 좌표에서 shift하여 추가적인 pooling을 수행하는 방법을 제시한다. feature map pixel offset {0,1,2}의 조합에 따라, 총 9회의 3x3 max pooling(non-overlapping) 을 수행하는 특수한 pooling 방법을 제시함.

  • 동일한 feature map에 대해 pooling 커널의 시작 위치를 1픽셀씩 shift하며 여러 번 pooling을 수행.
  • 저자가 정의한 pooling layer에 하나의 feature map이 입력되었을 때 하나의 feature map이 출력되는 것이 아니라, 9개의 feature map이 출력됨.
  • ==해당 부분에서 설명하는 Offset Max Pooling 방법은 단순 stride=1의 결과라 생각할수 있는 것인지, 아니면 Pooling이 시작되는 커널의 위치를 변경하면서 처리하고, 각기 다른 output size에 대해 다른 처리를 한 것인지 명확하지 않음.(후자의 방법이 더 효과적이라 생각함)==
Inference

  • 6개의 scale의 이미지를 입력으로 받고, 이미지의 scale에 따른 각 layer의 서로 다른 크기의 feature map을 출력함.
  1. 하나의 이미지가 특정 비율로 주어졌을 때, CNN 모델에 입력하여 layer5에서 pooling을 진행하지 않고 feature map을 얻는다.
  2. pooling 되지 않은 feature map에 pixel offset {0, 1, 2}의 조합에 따라 3x3 max pooling(non-overlapping)을 적용한다. 
  3. feature map은 이전에 학습시킨 Classifier(layer 6,7,8)를 거쳐 spatial output을 산출한다.
  4. spatial output은 3D output map(feature map width x height x C classes)로 reshape한다.
  • 이처럼 Classifier는 spatial output을 통해 원본 이미지의 특정 receptive field에 대한 confidence score와 class를 출력 한다.

3. Bounding Box Regressor

1. Training Box Regressor

  • Bounding Box Regressor는 학습 시 6 scale의 이미지를 사용하며, 마지막 layer의 output이 4(={x1, y1, x2, y2})xC(=class)가 되도록 조정한다. 또한 Ground Truth box와 IoU가 0.5 미만인 예측 box는 학습에 포함시키지 않는다.
  1. Classification task를 위해 미리 학습시킨 Overfeat 모델을 layer5까지만 불러와 feature extractor로 사용하고 layer6(5x5 conv, 4096), layer7(1x1 conv, 4096x4096), layer8(1x1, 4096x4) 를 추가함. 
  2. 이미지를 feature extractor(~layer5)에 입력하여 5x5 크기의 feature map을 256개를 출력함. 
  3. 5x5 크기의 feature map을 layer 6,7,8에 입력하여 1x1x4xC(=class) 크기의 feature map을 출력함. 
  4. loss function(MSE : L2 loss)을 통해 학습시킨다.

2. Inference Box Regressor

  • 각 spatial map의 pixel 값은 각 class별, bounding box의 x1, y1, x2, y2 좌표를 나타냅니다. 따라서 spatial output의 channel 수는 4 x C(=class) 가 된다. 위의 그림은 feature map이 각 layer를 거침에 따라 변화되는 크기를 보여준다.

4. Greedy Merge Strategy

+full

  • 위와 같은 과정을 거치면 Overfeat은 detection 시, 6 scale에 대하여 굉장히 많은 예측 bounding box를 가지게 되며 논문의 저자가 정의한 pixel offset 조합에 따른 pooling으로 인해 예측 bounding box의 수가 9배나 증가한다.
  • 최적의 bounding box를 출력하기 위해 불필요한 box를 병합하는 Greedy Merge Strategy 알고리즘을 적용함.
  1. 에 해당 scale의 spaital output에 대하여 각 pixel에서 가장 높은 confidence score를 가지는 class를 해당 location에 할당함.
  2. 에 해당 scale의 spatial output에 bounding box 좌표를 할당함.
  3. 에 모든 를 할당함.
  4. 결과가 산출될 때까지 아래의 병합과정을 반복한다.
    • 에서 를 뽑아 적용 후 가장 작은 에 할당
    • 면 멈춤.
    • 대신에 할당.
    • 은 두 bounding box의 중심 좌표 사이의 거리의 합과 IoU를 사용하여 측정.
    • 는 bounding box의 평균 좌표를 계산.
  • 위의 과정을 거쳐 병합된 bounding box 중에서 confidence score가 높은 box를 최종 예측으로 출력한다. 논문의 저자가 제시한 방법은 False Positive sample에 보다 강건하다는 점에서 전통적인 Non maximum suppression보다 좋은 성능을 보인다고 한다.
  • 일반 NMS로는 정보가 과도하게 사라질 수 있기 때문에, 비슷한 박스를 병합해서 더 부드럽고 정확한 localization이 가능하게 하려는 목적으로 사용된다.

정리

  •  Overfeat 모델은 ILSVRC 2013 Challenge Classification, Localization, Detection task에서 각각 4위, 1위, 1위를 차지했다.
  • Selective search를 사용하여 후보 영역을 추출한 R-CNN에 비해 detection 성능면에서 부족한 면모를 보였지만 SSD, YOLO 등 1-stage object detection 후속 모델에 큰 영향을 끼쳤다는 점에서 의의가 있다.

참고