본문 바로가기

DeepLearning

VGGNet

VGGNet 은 2014년 ILSVRC 대회에서 2등에 올랐던 네트워크 이다.

원 논문은 Very Deep Convolutional Networks For Large-Scale Image Recognition 

https://arxiv.org/pdf/1409.1556.pdf

이전의 AlexNet 과의 차이점이라고 하면 filter 의 크기를 (3x3, 5x5, 7x7)에서 선택되어 사용되었던 것과 달리 3x3 filter 를 지속적으로 사용하는 것을 확인할 수 있는데. 

가장 먼저 파악해야할 점이 이 3 x 3 filter 만으로 사용한 것에 대한 정의이다.

1. Receptive - field

Receptive field 라는 말부터 이해해보자.

아래의 그림을 확인해보면 Layer(Conv) 가 거듭될수록 이전 입력 이미지의 정보가 압축되어 다음 레이어에 기록되는 것을 알 수 있다. 

만약 VGG-Net 의 관점으로 확인해보면 가령 원본이미지가 224x224x3 이라고하면 3x3x#filters 를 적용한 뒤는 원본이미지의 3x3 pixel 의 정보는 Layer 적용 뒤에는 1x1 pixel 에 기록되며 축약된 정보를 받아오는 경향을 보인다. 이것을 여러번 반복할 수 있다면 작은 공간에 원본이미지의 커다란 정보를 작은 공간에 매핑할 수 있는 것이 아닐까?

https://theaisummer.com/receptive-field/

만약 7x7 filter 대신 3x3 filter 를 적용하여 얻게되는 장점이란?

224x224x3 의 원본이미지를 이용하였다고 가정하게 되면

224x224 에서 7x7 이라는 공간의 정보가 Conv layer 이후 1x1 pixel 에 축약되게 된다. 동일한 기준으로 3x3 의 정보를 1x1 pixel 에서 담아갈 수 있다는 것이다. 가령 직관적인 이해를 담아 보자면 세밀한 공간의 정보를 좀 더 많이 기록하는 것이다.

 

- 1개의 nonlinear rectification layer 대신 3개의 nonlinear rectification layer 를 사용할 수 있기에 비선형성의 증가를 이룰 수 있다.

 

또 다른 장점으로는 Learning Parameter 의 수를 감소할 수 있다.

3개의 3x3 filter 를 적용하게 된다면 parameter = 3x3x3x3(#input channel ) = 81 개가 생성되고

3개의 7x7 filter 를 적용하게 된다면 parameter = 3x7x7x3(#input channel) = 441 개로 단순하게 5.5배 이상의 차이가 발생할 수 있다는 점이다. 

VGGNet 구조 [ref: original paper]
VGGNet 구조

 

앞선 방법들과 Network 를 구성하는 것에 차이점은 없다. 참고사항으로 Convolutional layer 에서는 "same" padding 이 적용된 것.

구현할 내용은 D type 의 VGG16 이다.

vgg16.py
0.00MB

'DeepLearning' 카테고리의 다른 글

ResNet  (0) 2021.12.24
Inception Network (GoogleNet)  (0) 2021.12.23
AlexNet  (0) 2021.12.23
Why Convolutions ?  (0) 2021.12.23
LeNet-5 (Basic CNN)  (0) 2021.12.23