본문 바로가기

자연어 처리 과정

VGG

개요

AlexNet 다음으로 큰 성능 발전을 보였던 VGG에 대해 알아보자.

 

VGG란?

2014년에 제시된, ImageNet classification에 등장한 CNN 모델이다.

 

이 모델은 AlexNet과 유사한 형태를 가지고 있으나 아주 큰 특징이 하나 있다.

그것은 바로 3x3 Convolution layer만을 사용하여 층을 쌓았다는 점이다.

 

이것이 왜 특징인가?

 

1. 3x3 Convolution layer만을 이용하여 network의 depth를 깊게 만들어냈다.

2. 연산 시에 발생하는 parameter의 수를 줄일 수 있다. 이에 더불어 계산 속도도 높일 수 있다.

3. 더 많은 비선형을 적용시킬 수 있다.

 

따라서 3x3 Convolution layer만을 이용하여 network의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는지 확인해볼 수 있다.

 

또한 3x3 convolution layer를 여러 개 쌓아서 7x7 convolutioni layer가 가지는 receptive field, 즉 한 뉴런이 볼 수 있는 field를 만들어낼 수 있도록 만들었다.

 

위는 Convolution layer가 가지는 receptive field를 구할 수 있는 공식이다.

L: layer의 개수

F: filter의 fxf의 f

 

VGG의 과정

우선 VGG의 구조는 아래와 같다. (VGG16 기준이다.)

 

Structure(모든 conv layer의 stride와 padding= 1)

Input: 224x224x3(RGB)

Conv-1: nums= 64, kernel size= 3

Conv-2: nums= 64, kernel size= 3

MaxPool-1: size= 2, stride= 2

Conv-3: nums= 128, kernel size= 3

Conv-4: nums= 128, kernel size= 3

MaxPool-2: size= 2, stride= 2

Conv-5: nums= 256, kernel size= 3

Conv-6: nums= 256, kernel size= 3

Conv-7: nums= 256, kernel size= 3

MaxPool-3: size= 2, stride= 2

Conv-8: nums= 512, kernel size= 3

Conv-9: nums= 512, kernel size= 3

Conv-10: nums= 512, kernel size= 3

MaxPool-3: size= 2, stride= 2

Conv-11: nums= 512, kernel size= 3

Conv-12: nums= 512, kernel size= 3

Conv-13: nums= 512, kernel size= 3

MaxPool-3: size= 2, stride= 2

FC-1: 4096 fully connected layers

FC-2: 4096 fully connected layers

FC-3: 1000 fully connected layers

 

VGG에서 발생하는 이미지의 output, parameter의 수, 연산 개수는 아래와 같다.

 

Layer Tensor output size Params(w/ biases) Ops
Input 224x224x3 0
Conv-1 224x224x64 64*(3*3*3+1) 224*224*64*3*3*3
Conv-2 224x224x64 64*(3*3*64+1) 224*224*64*3*3*64
MaxPool-1 112x112x64 0
Conv-3 112x112x128 128*(3*3*64+1) 112*112*128*3*3*64
Conv-4 112x112x128 128*(3*3*128+1) 112*112*128*3*3*128
MaxPool-2 56x56x128 0
Conv-5 56x56x256 256*(3*3*128+1) 56*56*256*3*3*128
Conv-6 56x56x256 256*(3*3*256+1) 56*56*256*3*3*256
Conv-7 56x56x256 256*(3*3*256+1) 56*56*256*3*3*256
MaxPool-3 28x28x256 0
Conv-8 28x28x512 512*(3*3*256+1) 28*28*512*3*3*256
Conv-9 28x28x512 512*(3*3*512+1) 28*28*512*3*3*512
Conv-10 28x28x512 512*(3*3*512+1) 28*28*512*3*3*512
MaxPool-4 14x14x512 0
Conv-11 14x14x512 512*(3*3*512+1) 14*14*512*3*3*512
Conv-12 14x14x512 512*(3*3*512+1) 14*14*512*3*3*512
Conv-13 14x14x512 512*(3*3*512+1) 14*14*512*3*3*512
MaxPool-5 7x7x512 0
FC-1 1x1x4096 4096*(25088+1) 4096*25088
FC-2 1x1x4096 4096*(4096+1) 4096*4096
FC-3 1x1x1000 1000*(4096+1) 1000*4096
Total
138,357,544 15,470,264,320

 

AlexNet과 비교하면 파라미터가 2배 정도 더 늘어났지만 network의 depth와 정확도도 2배 늘어난 것을 확인해볼 수 있다.

'자연어 처리 과정' 카테고리의 다른 글

LSTM  (0) 2022.12.18
RNN  (0) 2022.12.18
CNN의 연산  (0) 2022.12.18
AlexNet  (0) 2022.12.18
Batch normalization  (0) 2022.12.13