본문 바로가기
Deep Learning/Convolutional Neural Networks

VGG-16, VGG-19, 2014

by YJJo 2023. 2. 20.

1. VGG 개요

VGG는University of Oxford의 Visual Geometry Group에서 제안한 ILSVRC, 2014 대회에서 준우승한 CNN 구조 (VGG-19)입니다. 2014 대회의 우승은 GoogLeNet (inception - v1)이 차지했지만, VGG의 구조가 워낙 간결해서 더 많은 인기를 얻었습니다.

Simonyan et al., 2014 연구의 핵심은 네트워크의 깊이를 깊게 만드는 것과 모델 성능의 관계를 확인하는 것이었습니다. 때문에 kernel의 크기를 3x3으로 고정하고 layer를 깊게 만들어가며 성능을 비교했습니다.

Fig. 1: VGG Configuration

논문에 실려있는 위 그림 Fig. 1에 다양한 VGG 실험 결과가 있습니다. 먼저 A, A-LRN에서는 구조 A에 Local Response Normalization을 추가하여 실험을 했는데, 성능에 큰 영향이 없어 이후 B, C, D, E에는 적용하지 않았다고 합니다. A 보다 더 깊은 구조인 B, C, D, E에서는 성능이 개선됨을확인했습니다. 다시 말해서 깊어질수록 성능이 좋아짐을 관찰 했습니다. 위 여러 구조에서 D, E가 각각 VGG-16, VGG-19이며 뒤에 붙는 숫자는 Layer의 수를 의미합니다.

VGG 이후로 CNN의 깊이가 깊어지기 시작했다는 점에서 역사적인 의의가 있습니다.

2. VGG 특징

VGG의 특징은 3x3 필터 사용과 zero-padding의 사용입니다.VGG 이전에는 주로 5x5 필터를 사용했는데, 더 작은 크기인 3x3 필터를 사용하고, zero-padding을 사용함으로써 convolution layer를 더 깊게 쌓을 수 있게 됩니다. Layer가 깊어지면 여러번 non-linear activation function (예를 들어 ReLU)을 거쳐 feature에 보다 많은 non-linearity를 줄 수 있게 됩니다. 작은 필터를 사용하면 convolution layer에 필요한 weight가 줄어듭니다.

예를 들어 10x10 input에 5x5 filter,1 stride를 적용하면 6x6 feature map을 얻고 이때 필요한 weight의 수는 25개 입니다. 반면에 10x10 input에 3x3 filter, 1 stride를 두 번 적용하면 마찬가지로, 6x6 feature map을 얻는데, 이때 필요한 weight의 수는 9x2=18개가 됩니다.

같은 맥락에서 3x3 filter, 1 stride를 두 번 적용하는 것은 5x5 filter, 1 stride를 한 번 적용하는 것과 비슷합니다. 또한 3x3 filter, 1 stride를 세 번 적용하는 것은 7x7 filter, 1 stride를 한 번 적용하는 것과 같은 효과를 지닙니다. VGG에서는 기존의 5x5 또는 7x7 filter를 적용하는 것 대신 3x3 filter를 여러번 적용합니다.

3. VGG 구조

Fig. 2: VGG-16

VGG-16의 상세한 구조는 위 Fig. 2와 같습니다. 복잡한 내용 없이 convolution의 depth를 깊게 구성하여 좋은 성능을 보이는 것이 VGG의 큰 장점입니다. 하지만 네트워크가 깊어진 만큼 학습해야이 오래 걸린다는 단점도 갖고 있습니다.

이상으로 VGG 포스팅을 마치겠습니다.

감사합니다:)

References

'Deep Learning > Convolutional Neural Networks' 카테고리의 다른 글

AlexNet, 2012  (0) 2023.02.10
LeNet-5, 1998  (0) 2023.01.30
CNN 역전파 (Backpropagation for CNN)  (6) 2019.07.02
Convolution Neural Networks (합성곱 신경망)  (42) 2019.06.23

댓글