VGGNet 논문요약

bolim·2022년 1월 19일
0

Paper

목록 보기
1/8

VGGNet

Abstract

(3 X 3)매우 작은 컨볼루션 필터를 가지고 depth를 16 - 19 가중치 레이어까지 밀어내면서 점점 증가시켰더니 기존보다 성능이 증가하였다.

목적 : 네트워크 깊이가 대규모 이미지 인식 정확도에 어떤 영향을 받는지

Introduction

ConvNets가 컴퓨터 비전 분야에서 의미가 커지고 있다.

ConvNets 성능을 높이기 위한 다양한 연구들이 있지만, 여기서는 depth를 다뤘다.

ILSVRC classification and localization에서 높은 정확도를 가졌으며, 파인튜닝 없이 심플한 파이프라인에서도 좋은 성능을 가진다. 그리고 다른 이미지 데이터 셋에서도 적용이 가능하다.

ConvNet Configurations

먼저 ConvNet의 전형적인 레이아웃의 구성을 설명한다. 그리고 평가에서 사용되는 구체적인 구성을 자세히 설명한다. 다음에서 디자인 선택을 논의하고 선행기술과 비교한다.

2.1 ARCHITECTURE

training 데이터로는 224 x 224 RGB image 사용하였다.

유일한 전처리로는 각 픽셀에서 RGB값을 평균을 뺐다.

conv.layers 필터로 3x3을 사용했다. stride로는 1 pixel을 추가하였다.

Spatial pooling으로는 5개의 max-pooling layer가 몇몇 conv. layer를 따라나왔다. 여기서 Max-pooling은 2x2 pixel window로 stride는 2이다.

3개의 FC(Fully-connected)층으로 conv. layers가 쌓여있다. 처음 두개는 4095채널을 각각 가지고 있으며, 세번째는 1000 way ILSVRC 분류를 수행한다. 따라서 1000개의 채널을 클래스마다 하나씩 다지고 있다. 마지막 층은 soft-max로 이루어져있다.

모든 hidden layer는 비선형성을 갖고있다. Sect.4 에서 보인것과 같이 normalisation은 ILSVRC데이터셋에서 성능 증가를 가져오지 않지만 메모리 소비 및 계산시간 증가를 가져온다.

2.2 CONFIGURATIONS

기본 구성은 2.1을 따라가지만 depth만 다르다.

11 weight인 A에서 시작해서 19 weight인 E까지 증가하면 width(채널 수)도 64부터 512까지 2배씩 증가한다.

depth가 더 깊어도 net의 weight 수는 더 큰 conv. layer width와 수용필드가 있는 net의 weight 수 보다 크지 않다.

Untitled

Untitled 1

2.3 DISCUSSION

입력의 모든 픽셀과 컨볼루션 되는 first conv. layer에는 매우 작은 3 x 3 receptive fields를 사용한다.

2 개의 3x3 conv. layers 는 5x5 receptive field 효과를 3개는 7x7를 가지고 있음을 알 수 있다.

하나의 7x7 layer보다 3x3이 3개가 쌓인 스택으로 무엇을 얻을 수 있는가?

  1. non-linear rectification layers를 포함하여 decision function을 더 분별력있게 할 수 있다.
  2. 파라미터의 수를 줄일 수 있다.

Table1의 C에서처럼 1x1 conv. layers를 추가하면서 receptive fields에 영향 없이 decision function의 비선형성을 늘릴 수 있다.

3. CLASSIFICATION FRAMEWORK

3.1 TRAINING

미니 배치 경사하강법을 사용하여 다항 로지스틱 회귀를 최적화 하면서 트레이닝 되었다. ( 배치 사이즈는 256, 모멘텀은 0.9 )

정규화

  • L2 penalty 5*10^-4
  • dropout ratio 0.5 ( 초반 2개 )

learning rate 10^-2 → validation 셋 정확성이 멈추면 10배 감소한다.

가중치 initialisation 중요하다.

  • 랜덤 초기화해도 될 정도로 얕은 A(Table 1)
  • 더 깊은 구조에서는 처음 4개 conv. layers와 마지막 3개 fully-connected layers를 net A 레이어로 초기화했다.
  • biases는 0
  • 논문 제출 후random initialisation procedure of Glorot & Bengio 를 이용하여 pre-training 없이 초기화 가능하다는 것을 알아내었다.

입력 이미지들을 crop, augmentation 하였다.

  • Training image size

    S ( training scale )가 256일때부터 시작한다. 다음 S = 384할 때 S = 256일 때 가중치로 initialize하고 learning rate도 더 작은 10^-3으로 진행한다.

    이미지 개체 사이즈가 다를 수 있기 때문에 scale을 다양하게 augmetation 해주는 것이 좋다.

    속도상의 이유로 single-scale 모델을 S가 384일 때와 동일한 구성으로 fine-tunning한 후 mulit-scale 모델에 훈련시켰다.

3.2 TESTING

test image의 scale을 다양하게 만들고 horizontal flipping을 하여 augmentation을 하여 testing 한다.

최종 class는 원래와 flipping 한 것들의 스코어들의 평균으로 구한다.

Fully-convolutional network는 이미지 전체에 적용되기 때문에 테스트 떄 crop하지 않아도 된다.

동시에 많은 crop set들을 사용하면 정확성이 증가한다.

반면, multi crop으로 인한 계산시간 증가는 정확성의 증가로 이어지는 것은 아니다.

3.3 IMPLEMENTATION DETAILS

2013년 12월에 나온 C++Caffe를 이용해서 구현되었다.

Data parallelism을 이용하여 동시에 다수의 기울기를 구하고 모든 배치에 대한 기울기 평균을 구하면서 Multi-GPU training을 하였다.

4. CLASSIFICATION EXPERIMENTS

4.1 SINGLE SCALE EVALUATION

  • Q = S인 상황일때, A-LRN은 정규화 레이어가 없는 A에 비해 성능이 향상되지 않았다.(Table 3) 따라서 더 깊은 구조에서도 정규화를 하지 않았다.

  • 깊이가 증가할 수록 에러가 감소하였다.

    (B vs C) → non-linearity 레이어 추가(1x1)는 도움이 된다.

    (C vs D) → 컨볼루션 필터로 spatial context를 잡는 것도 중요하다.

  • 이전에서 말한 것과 같이 다양한 스케일을 고려한 augmentation으로 S=[256;512] 로 두는 것이 효과적이다.

Untitled 2

4.2 MULTI-SCALE EVALUATION

S와 Q의 큰 불일치가 성능 저화로 이어진다면, 고정된 S로 트레이닝된 모델에 S와 가까운 Q를 평가시킨다.

스케일 jittering은 테스트할 때 더 좋은 성능을 낸다.

Q=[Smin,0.5(Smin+Smax),Smax]Q=[S_{min}, 0.5(S_{min}+S_{max}),S_{max}]

Untitled 3

4.3 MULTI-CROP EVALUATION

multi-crop이 미묘하게 dense보다 더 낫다.

둘이 서로 상보성을 가지고 있어서 두 개를 모두 조합하여 쓰면 결과가 더 좋아진다.

Untitled 4

4.4 CONVNET FUSION

이전에는 모델 간 각각 평가를 하였는데, 이들의 soft-max class posteriors 평균을 결과로 내면 이들간 상보성으로 인해 성능이 더 좋아진다.

Untitled 5

5. CONCLUSION

depth가 분류 정확성에 주는 이점을 보여주었다.

논문의 모델이 다양한 task와 datasets에서도 잘 돌아간다는 것을 보여주며 일반화를 보여주었다.

profile
나는야 호기심 많은 느림보🤖

0개의 댓글