Input Image Size는 224 × 224로 고정한다.
Conv Layer
- Conv Filter는 stride가 1이고, 연산 시 padding이 적용됨
- Pooling Layer
- Max Pooling은 Conv Layer 다음에 적용되고 총 5개의 Max Pooling Layer로 구성된다.
- Pooling 연산은 2×2, stride 2로 구성된다.
- FC(Fully-Connected) layer
- 4096,4096,1000 channel로 이루어져있다.
- 모든 hidden layer에는 ReLU 활성화 함수가 적용된다.
“해당 파트에서는 layer depth에 따라 VGG 모델을 조금씩 변형시켜 연구를 진행했다고 언급하고 있다. 모델명은 A~E까지 있으며, 각 11~19 Weight layers를 이루고 있다.”
“모델의 depth가 증가하더라도 증가 계수에 비해 parameter개수가 크게 증가하지 않는다는 특징을 갖고 있다.”
“Discussion Part의 내용을 Architecture Part에서 다뤘기 때문에 넘어가도록 하겠습니다.”
“AlexNet보다 더 깊고, 파라미터도 살짝 더 많지만 더 적은 epoch을 기록했다고 언급되어 있음”
why?
Single-scale Training
Multi-scale Training
→ 오버피팅을 막기 위해
Test에서는 Training에서 사용되던 첫 번째, FC layer를 7×7로 변경하고, 나머지 2개의 FC layer를 1×1로 변경하였음. 이를 통해, uncropped 이미지에 적용할 수 있다고 함.(?)
어떻게?
이 부분 이해 X
#pytorch
self.avgpool = nn.AdaptiveAvgPool2d((7, 7))
#keras
pooling: Optional pooling mode for feature extraction
when `include_top` is `False`.
- `None` means that the output of the model will be
the 4D tensor output of the
last convolutional block.
- `avg` means that global average pooling
will be applied to the output of the
last convolutional block, and thus
the output of the model will be a 2D tensor.
- `max` means that global max pooling will
be applied.
if pooling == 'avg':
x = layers.GlobalAveragePooling2D()(x)
elif pooling == 'max':
x = layers.GlobalMaxPooling2D()(x)
Very Deep Convolutional Networks for Large-Scale Image Recognition
models/vgg.py at master · tensorflow/models
vision/vgg.py at baa592b215804927e28638f6a7f3318cbc411d49 · pytorch/vision
VGGNet-16 Architecture: A Complete Guide
VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
본 포스팅은 개인 공부용으로 논문 외에 위 블로그 및 자료를 참고하였습니다.