VGGNet
8-6. VGGNet
VGGNet의 배경
- 강의에는 나오지 않았지만 검색해서 나온 몇가지 정보를 적어놓으려고 한다.
- VGGNet은 ImageNet 대회에서 가장 처음으로 CNN를 깊이있게 신경망을 구축한 사례이다.
- VGGNet은 2014년에 준우승을 차지했고 그 이후 대회 수상자들의 네트워크도 점점 더 층이 깊어져가며 우리가 흔히 아는 ResNet은 152개의 층으로 이루어져있다.
VGGNet의 구조


-
VGGNet논문에서는 6가지의 버전을 내놓았지만 우리가 여기서 다룰 것은 D파트에 해당한다.
- 총 16개의 층으로 구성되어있으며 합성곱과 최대 풀링이 반복되고 마지막에 FC Layer가 오는 전형적인 CNN의 모습을 띈다.
- 입력 층
- 입력 데이터로는 3x224x224 사이즈의 RGB 컬러 이미지가 들어온다.
- Conv_Block_1_1 (conv3-64)
- 3x3x3 사이즈의 64개의 필터가 합성곱 연산이 될 예정이다.
- 입력 채널이 3개였으니 여기도 필터가 3개의 채널을 가지고 있을 것이다.
- Stride는 1, Padding 사이즈도 1로 고정된다. (이 과정은 매 합성곱마다 반복이니 이후엔 설명을 생략하겠다)
- 합성곱 이후 64x224x224 사이즈의 피처 맵이 출력된다.
- Conv_Block_1_2 (conv3-64)
- 64x3x3 사이즈의 64개의 필터가 적용이 된다.
- 출력 피처 맵 사이즈는 64x224x224.
- MaxPool(2)
- Stride와 Size가 모두 (2,2) 이다. (VGG-Net에서의 풀링은 모두 사이즈가 2이다)
- 풀링 이후 사이즈는 64x112x112이다.
- Conv_Block_2_1 (conv3-128)
- 64x3x3 사이즈의 128개의 필터가 적용 된다.
- 출력 피처 맵 사이즈는 128x112x112
- Conv_Block_2_2(conv3-128)
- 128x3x3 사이즈의 128개의 필터가 적용 된다.
- 출력 피처 맵 사이즈는 128x112x112
- MaxPool(2)
- 풀링 이후 사이즈는 128x56x56
- Conv_Block_3_1(conv3-256)
- 128x3x3 사이즈의 256개의 필터가 적용된다.
- 출력 피처 맵 사이즈는 256x56x56
- Conv_Block_3_2 & Conv_Block_3_3(conv3-256)
- 256x3x3 사이즈의 256개의 필터가 적용된다.
- 출력 피처 맵 사이즈는 256x56x56
- MaxPool(2)
- 풀링 이후 사이즈는 256x28x28
- Conv_Block_4_1(conv3-512)
- 256x3x3 사이즈의 512개의 필터가 적용된다.
- 출력 피처 맵 사이즈는 512x28x28
- Conv_Block_4_2 & 3 (conv3-512)
- 512x3x3 사이즈의 512개의 필터가 적용된다.
- 출력 피처 맵 사이즈는 512x28x28
- MaxPool(2)
- 풀링 이후 사이즈는 512x14x14
- Conv_Block_5_1 & 2 & 3 (conv3-512)
- 512x3x3 사이즈의 512개의 필터가 적용된다.
- 출력 피처 맵 사이즈는 512x28x28
- MaxPool(2)
- 풀링 이후 사이즈는 512x7x7
- FC-4096
- 512x7x7의 입력 데이터를 4096개의 노드와 fully connect 해준다.
- FC-4096
- 4096개의 노드를 다시 4096개의 노드와 fully connect 해준다.
- FC-1000
- 4096개의 노드를 1000개의 노드와 fully connect 해준다.
- Softmax
- 1000개의 노드의 출력 값을 softmax를 이용해 확률 값으로 바꾸어준다.