VGG16 이란?
VGG16은 옥스포드 대학의 연구팀 VGG에 의해 개발된 모델로써,
이미지넷 이미지 인식 대회에서 준우승을 한 모델입니다.
우승은 GoogLeNet이 했지만 사용하기 쉬운 구조와 좋은 성능 덕분에 VGG16이 더 인기를 얻었습니다.
VGG16은 네트워크의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는지를 확인하고자 한것입니다.
깊이의 영향만을 확인하고자 필터커널 사이즈를 가장 작은 3x3으로 고정했습니다.
여기서 D에 해당하는것이 VGG16입니다.
conv3을 연속적으로 사용했는데 그 이유를 알아보겠습니다.
① 3x3 필터로 두차례 컨볼루션 = 5x5 필터로 한번 컨볼루션 → 동일한 사이즈
② 3x3 필터로 세차례 컨볼루션 = 7x7 필터로 한번 컨볼루션 → 동일한 사이즈
여기서, 가중치 수를 계산해보겠습니다.
① 3x3 + 3x3 = 18 < 5x5 → 즉, 3x3을 두차례 사용한것이 더욱 가볍습니다.
② 3x3 + 3x3 + 3x3 = 27 < 7x7 → 즉, 3x3을 세차례 사용한것이 더욱 가볍습니다.
이렇게 가중치의 수가 적어집니다.
그로인해 학습시킬 가중치의 개수가 줄어들어 학습속도가 빨라지고,
동시에 층의 갯수가 늘어나서 비선형성을 더욱 증가시킬 수 있습니다.
VGG16 구조
마지막이 1000인 이유는 이미지넷 대회에서는 1000개의 label이 있기 때문입니다.
또한 위에서 설명한것과 같이 필터 사이즈를 3x3로 공되어 있습니다.
Code
url은 이미 train된 모델들의 가중치 값들을 다운받아 올 수 있는 url 입니다.
'vgg11': 'https://download.pytorch.org/models/vgg11-bbd30ac9.pth',
'vgg13': 'https://download.pytorch.org/models/vgg13-c768596a.pth',
'vgg16': 'https://download.pytorch.org/models/vgg16-397923af.pth',
'vgg19': 'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth',
'vgg11_bn': 'https://download.pytorch.org/models/vgg11_bn-6002323d.pth',
'vgg13_bn': 'https://download.pytorch.org/models/vgg13_bn-abd245e5.pth',
'vgg16_bn': 'https://download.pytorch.org/models/vgg16_bn-6c64b313.pth',
'vgg19_bn': 'https://download.pytorch.org/models/vgg19_bn-c79401a0.pth',
위에서 설명한 것과 같이 VGG16은 손으로 일일이 타이핑 하기에 굉장히 귀찮을 수 있기 때문에
features에 간단한 숫자나 기호를 넣어주면 자동으로 Layer를 구축할 수 있게 해줍니다.
여기서 init_weights=True면 가중치들을 초기화 해주는 함수입니다.
features와 classifier들의 가중치들을 초기화 해줍니다.
nn.init.kaiming_normal_ 이 함수는 어떤 activation을 사용하냐에 따라서 weight 초기화를 해줍니다.
kaiming_he 검색해보기!
make_layers에 cfg를 인수로 넣어줌으로써 layer를 편하게 쌓을 수 있게 됩니다.
출처:
https://www.youtube.com/watch?v=KbNbWTnlYXs&list=PLIMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=38
https://www.youtube.com/watch?v=opD4z9xoBv4&list=PLQ28Nx3M4JrhkqBVIXg-i5_CVVoS1UzAv&index=24&t=167s
'Deep Learning > Pytorch' 카테고리의 다른 글
21_Pytorch_RNN (0) | 2021.10.06 |
---|---|
20_Pytorch_ResNet (0) | 2021.10.06 |
18_Pytorch_CNN_MNIST (0) | 2021.09.30 |
17_Pytorch_CNN (Convolutional_Neural_Network) (0) | 2021.09.30 |
16_Pytorch_Batch_Normalization (0) | 2021.09.29 |