연세대 인공지능학회 YAI

[논문 리뷰] Going Deeper with Convolutions 본문

컴퓨터비전 : CV/CNN based

[논문 리뷰] Going Deeper with Convolutions

_YAI_ 2022. 8. 13. 14:25

Going Deeper with Convolutions

  • YAI 9기 김석님이 비전논문기초팀에서 작성한 글입니다.

0. Abstract

  • 목적
    → Network 내에서 compute가 진행될 시 소모되는 자원의 효율성을 높이기 위함
  • Method
    • Compute 할 양을 늘어나지 않는 상태에서 depth와 width를 늘릴 수 있는 디자인 (codenamed Inception)
    • Optimization 방법
      → Hebbian principle에 근거한 multi-scale processing 사용
  • GoogLeNet Proposal
    • Classification과 detection 목적으로 설계된 22 layer deep network

1. Backgrounds

  • Object detection에서 사용한 방법
    → Model을 단일화하기 보다는 R-CNN과 같은 전통적인 CV model과 deep architecture를 병합한 형태로 설계
  • “Deep”라는 phrase의 주안점
    • “Inception module”의 new-level organization
    • Network depth의 증가(깊어짐)

2. Referred Information

LeNet-5

  • Convolutional Layer로 쌓아놓은 후 fully-connected layer로 이어 붙이는 전형적인 CNN 구조
  • GoogleNet의 경우 MNIST나 CIFAR에 비해 큰 단위의 dataset인 ImageNet을 다룬다는 점에서 LeNet-5에서 layer의 개수와 layer의 각 size를 키우며 dropout을 사용하여 overfitting을 방지하는 방향으로 착안을 함

Network-in-Network

  • Neural network의 representational power을 증대하기 위해 제안
  • CNN의 1x1 convolution 과정을 생각하면 됨
    → Network size를 제한하는 bottleneck 없애기 위해 dimension 축소하기 위해 사용

  • 이러한 1x1 convolution을 사용함으로써 주요한 performance penalty 없이 목표하였던 depth와 width를 모두 늘릴 수 있음

3. Approach

Backgrounds

  • Deep Neural Network의 성능을 개선하기 위해서는 아래와 같이 size를 키워야 함
    • Level의 개수를 늘려 depth를 깊게 함
    • 각 level의 unit 개수를 늘려 width를 넓힘
  • Drawbacks
    • Size를 키우게 되면 parameter 개수가 급증하게 되므로 overfitting에 취약하게 됨
      → ImageNet의 경우 high-quality training set을 사용한다는 점에서 아래와 같이 매우 유사한 특징을 가지는 dataset 내에서도 구분을 하기 위해서는 computational cost가 상당히 많이 들게 됨
    • Network의 규모가 커짐에 따라 computational resource가 급증하게 됨
      → Convolutional layer가 추가됨에 따라 computational cost가 추가된 convolutional filter 개수만큼 곱해지기 때문에 quadric하게 computational cost가 급증함

  • Solution
    • 앞서 제시한 두 drawback의 경우, 가장 기본적으로 생각할 수 있는 방법은 기존의 fully-connected 구조를 sparsely-connected로 바꾸어 Arora에서 언급한 이론적인 underpinning들도 제거할 수 있음
    • 하지만 non-uniform sparse 환경은 오늘날의 computing infrastructure에 입각하면 매우 비효율적이라는 한계를 가짐
    • 또한 parallel computing에 optimal하게 적용하기 위해 sparse 보다는 fully-connected 구조를 선호하게 되고 filter 개수, batch size 등을 최대화하려는 방향으로 나아가려고 함
    • 이런 점에서 filter level로 sparse하고 효율적인 dense computation이 진행되는 방안을 마련해야 함

Evaluation of Inception architecture

  • Sparse matrices를 clustering하여 dense한 submatrices로 생성하는 방법이 성능에 있어서 매우 효율적이라는 선례가 존재함
  • GoogLeNet의 inception architecture은 위의 sparse structure에 대한 hypothetical output을 case study하기 위해 사용하기 시작함
  • Hyperparameter들을 여러 번 tuning한 결과 “Inception architecture”이 object detection과 localization에서 특히 유용함을 알 수 있었음

4. Details of the Inception architecture

  • Main approach
    → Convolutional vision network의 optimal local sparse structure로의 approximation을 통하여 dense component로 변환하는 방법
  • Structure
    • 각 cluster는 layer의 unit을 구성하고 이는 이전 layer과 이후 layer와 모두 연결
    • 이때 각 layer의 unit은 input image의 특정 region과 대응되고 이러한 unit들을 filter bank로 grouping 진행
    • 이는 특정 지역에 밀집되어 있는 cluster들을 다음 인접한 layer로 1x1 convolution으로 처리할 수 있음
  • Patch alignment
    • Larger patch의 convolution으로 spatially spread 가능한 cluster들이 줄어들 수 있는 문제가 발생할 수 있음
    • 이러한 문제를 해결하기 위해 “Inception architecture”은 filter size를 1x1, 3x3, 5x5로 제한해 둠
    • 이때, 3x3 , 5x5의 비율을 증가하면 spatial concentration이 감소하게 됨
  • Problem
    • 5x5 convolution을 진행할 경우에도 computational cost가 늘어나게 되는데 이는 output과 convolutional layer의 개수가 늘어날 경우에도 computational cost가 급증하게 됨
    • 이를 해결하기 위해 1x1 convolution을 이용하여 dimension reduction을 진행하여 computational requirements를 줄일 수 있음

  • For reproducibility and efficiency
    → 효율성 증대를 위해 “Inception modules”를 higher layer에서만 사용하고 lower layer에서는 기존의 convolutional model을 사용하면 아래와 같은 이점이 있음
    • 통제가 불가능할 정도의 computational complexity 없이 각 stage마다 unit의 개수를 늘릴 수 있게 됨
    • 시각 정보가 다양한 scale을 통해 process하게 되어 다음 stage에서 동시에 다른 scale의 feature를 abstract
      → 이를 통해 computational problem 없이 stage의 개수와 각 stage의 width를 늘릴 수 있음

5. GoogLeNet

Architecture

  • 기본적으로 LeNet 구조에 “Inception network”를 적용한 model

  • “Inception module”부분을 포함한 모든 convolution 과정 및 1x1 convolution을 통한 reduction과 projection에서 ReLU로 activation function을 적용함
  • 앞서 언급한 것처럼 효율성 증대를 위해서 “Inception modules”를 higher layer에서만 사용하고 lower layer에서는 기존의 convolutional model를 사용하였음을 알 수 있음
    • Lower Layer (Traditional Convolutional Model)
    • Higher Layer (Inception Module)
  • Auxiliary classifiers
    • Gradient를 모든 layer에 효율적으로 propagation이 진행하기 위해 사용
    • Network 중간에 있는 layer마다 discriminative한 layer인 auxiliary classifier을 추가함으로써 중간 checkpoint마다 output을 내보내 back propagation과 추가적인 regularization이 진행되어 degradation problem을 방지함
    • 다만, 이러한 auxiliary classifier은 “inference” 단계에서는 사용하지 않음
  • Final classifier
    • Classifier 이전에 average pooling을 적용한 것을 볼 수 있는데 이는 fully-connected layer와는 다르게 직전 layer에서 average 값들을 1-dimensional tensor로 변환한 방법
    • 여기서 1-dimensional tensor로 변환하는 이유는 activation layer의 input으로 1-dimension을 받아야 하기 때문
    • Average pooling을 사용함으로써 parameter 개수를 확연히 줄일 수 있어 다른 label set에 해당하는 network를 fine-tuning하기에 수월해짐
    • 이렇게 fully-connected layer 대신 average pooling을 사용함으로써 top-1 accuracy를 0.6%까지 achieve할 수 있었음
    • 다만, fully-connected layer를 사용하지 않을지라도 dropout의 사용 유무는 매우 중요한 issue

Training Methodology

  • 0.9 momentum의 asynchronous SGD를 사용함
  • Learning rate의 경우 8-epoch마다 4%씩 감소하고 그 이외에는 fix된 상태를 유지
  • Training dataset : 기존 데이터 뿐만 아니라 image의 ratio를 3/4 ~ 4/3을 유지하면서 본래 image 영역의 8% ~ 100%를 추가적으로 다양한 size의 patch로 사용
  • ‘Andrew Howard’가 제안한 photometric distortion을 사용하여 overfitting 방지
  • 추가적으로 random interpolation method를 사용하여 상대적으로 late하게 resize하였는데 이는 다른 hyperparameter들이 변하여도 결과의 대세가 바뀌지 않다는 것을 입증하기 위해 사용함

ILSVRC Results

  • 실제 대회에서는 training에서 추가적인 external data를 사용하지 않음
  • Performance 향상을 위하여 아래와 같은 과정을 거침
    • 7 version의 GoogLeNet을 train하여 ensemble prediction을 적용 (이때, 모든 model들은 initialization, learning rate이 동일하게 적용되고 sampling method와 input이 random인 점만 차이를 보임)
    • Input image의 경우 4 scale로 더 작은 단위의 square dimension으로 분할하여 각 square마다 4 corner과 center를 crop으로 사용하며 이들의 좌우 반전된 형태도 crop으로 사용)
    • Softmax probability의 경우 multiple crop과 각각의 classifier의 average value를 사용하여 final prediction을 진행
  • Detection setup
    • GoogleNet은 R-CNN과 비슷한 방향으로 approach를 하였으나 region classifier로 “Inception model”을 사용
    • Region classifier의 proposal step은 selective search와 multi-box prediction을 결합함으로써 개선됨
    • False positive를 줄이기 위해 superpixel size를 2배로 늘림으로써 selective search algorithm의 비용을 반으로 절감함
    • Proposal 중에서 coverage가 증가한 것들을 절감한 결과 single model case에서 mean average precision이 1% 정도의 개선이 이루어짐
    • 6개의 ConvNet을 ensemble하여 각 region을 분류함으로써 43.9%의 accuracy까지 개선함
  • Conclusion
    → Dense building blocks로 설계함으로써 expect하는 sparse 구조를 approximate 하여 성능을 개선함 (다만, 이는 computational cost를 줄이는 방향으로만 개선이 이루어짐)
Comments