아롱이 탐험대

VGG NET: Very Deep Convolution Networks For Large-Scale Image Recognition 본문

study/paper reviews

VGG NET: Very Deep Convolution Networks For Large-Scale Image Recognition

ys_cs17 2020. 3. 13. 15:14
반응형

Very Deep Convolution Networks For Large-Scale Image Recognition (VGG16)

-Karen Simonyan, Andrew Zisserman-

 

1. Introduction

Faster-RCNN을 분석하기 앞서 여기서 쓰이는 네트워크 모델인 VGG16을 먼저 공부하고 분석할 필요가 있어 VGG NET을 먼저 분석하겠다. 우선 해당 네트워크는 2014image net image recognition contest에서 google net에 밀려 2위를 했던 네트워크이다. (정확히는 VGG19이다.) google net의 네트워크 구조는 매우 복잡한 방면 VGG16은 사용하기 간단하고, 다른 네트워크에 변형하기도 쉬우며 성능적인 면에서도 나쁘지 않아 다른 논문에서도 많이 reference 된 논문이다. 우선 해당 논문은 network에 대해서만 연구한 것이 아닌 네트워크의 깊이가 성능과 시간에 대해 어떤 영향을 미치는지에 대해서도 연구를 진행하였다.

 

2. Network

우선 전체 네트워크의 구조를 보기 전 알아야 되는 사실이 있다. 바로 이 연구에서는 모든 kernelsize3*3으로 고정하여 진행하였다. 그 이유는 바로 효율성 차이이다.

kernel size와 weight 개수의 상관 관계

7*7imageconvolution3*3 size로 만든다고 생각을 해보자. 만약 7*7 kernel을 사용하게 된다면 총 weight의 합은 49개가 된다. 하지만 3*3 kernel을 가지고 3번의 convolution을 진행하게 된다면 총 9+9+9=27개의 weight로 학습속도가 확실히 빨라진다. 또한 층이 더욱 deep해지면서 non linear성을 더욱 증가시키기 때문에 학습하는데 효율이 더욱 올라가게 된다.

VGG16 network

Input: 224*224*3 RGB image

Stage 1 conv) 64개의 3*3*3 sizekernelconvolution한다. 이때 zero padding1, stride1로 설정하여 224*224*64 size가 나오고 이를 ReLuactivation화 해준다. 이후의 conv layerzero paddingstride, activation function은 모두 같다.

Stage 2 conv) 64개의 3*3*64kernel을 가지고 convolution 224*224*64 sizeactivation map2*2 max poolingstride 2로 적용해 112*112*64feature map을 얻는다.

Stage 3 conv) 128개의 3*3*128kernel을 가지고 convolution을 하여 112*112*128을 얻는다.

Stage 4 conv) 똑같이 해주고 pooling을 진행한다.

Stage 5 conv) 256개의 3*3*128 kerenlconvolution한 후 256장의 56*56*256을 얻는다.

Stage 6 conv) 똑같이 해준다.

Stage 7 conv) 똑같이 해준 후 pooling을 진행한다. 28*28*256 feature map을 얻는다.

Stage 8 conv) 512개의 3*3*512 kernelconvolution28*28*512를 얻는다.

Stage 9 conv) 같게 해준다.

Stage 10 conv) 같게 진행 후 pooling을 진행하면 14*14*512를 얻는다.

Stage 11 conv) stage 8과 동일하게 진행 후 14*14*512feature map을 얻는다.

Stage 12 conv) 같게 진행한다.

Stage 13 conv)같게 진행 후 pooling을 하면 7*7*512를 얻는다.

Stage 14 fc1) flatten 25088개의 뉴런을 가지고 fc14096 뉴런과 fully connect한다. 이때 drop out이 진행된다.

Stage 15 fc2) 4096개의 뉴런을 fc24096 뉴런과 fc한다. Drop out이 적용된다.

Stage 16 fc3) fc2의 결과인 4096개의 뉴런과 1000개의 뉴런을 fc하고 softmax 함수로 loss를 출력한다.

Output: 1000label로 분류된 loss

 

3. result

위에서 말했던 바와 같이 해당 VGG16은 매우 단순하고 성능도 괜찮은 네트워크라 변형도 많이 되여 쓰인다. 하지만 3번의 fcpooling과정을 통해 parameter의 개수가 너무 많아지고 이는 gradient vanishing과 연결이 될 수 있다. 하지만 이 net는 깊이가 깊어질수록 성능이 좋아질 수 있다는 점을 증명한 점에서 추후 많은 net들의 발전에 기어하였다.

 

4. reference

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION (paper)

https://datascienceschool.net/view-notebook/47c57f9446224af08f13e1f3b00a774e/

https://bskyvision.com/504

반응형
Comments