반응형
VGGNet은 ILSVRC 2014년도에 2위를 한 모델로 모델의 깊이에 따른 변화를 비교할 수 있게 만든 모델
이전까지의 모델들은 첫 번째 Conv Layer에서는 입력 영상의 축소를 위해 11 x 11, 7 x 7의 filter 를 사용한 것에 비해 VGGNet 은 Convolution Layer 에 3 x 3 filter 를 사용한 것이 특징
import tensorflow as tf
from tensorflow import keras
def VGG16():
# Sequential 모델 선언
model = keras.Sequential()
# TODO : 지시사항을 잘 보고 VGG16 Net을 완성해보세요.
# 첫 번째 Conv Block
# 입력 Shape는 ImageNet 데이터 세트의 크기와 같은 RGB 영상 (224 x 224 x 3)입니다.
model.add(keras.layers.Conv2D(filters = 64, kernel_size = (3,3), padding = "same" ,activation="relu", input_shape = (224, 224, 3)))
model.add(keras.layers.Conv2D(filters = 64, kernel_size = (3,3), padding = "same", activation = "relu", ))
model.add(keras.layers.MaxPooling2D(2))
# 두 번째 Conv Block
model.add(keras.layers.Conv2D(filters = 128, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 128, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.MaxPooling2D(2)),
# 세 번째 Conv Block
model.add(keras.layers.Conv2D(filters = 256, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 256, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 256, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.MaxPooling2D(2)),
# 네 번째 Conv Block
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.MaxPooling2D(2)),
# 다섯 번째 Conv Block
# TODO: 다섯 번째 Conv Block은 네 번째 Block과 동일합니다. 앞의 코드를 참고하여 다섯 번째 Block를 추가하세요
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.Conv2D(filters = 512, kernel_size = (3,3), activation = "relu", padding = "same" ))
model.add(keras.layers.MaxPooling2D(2)),
# Fully Connected Layer
model.add(keras.layers.Flatten()),
model.add(keras.layers.Dense(4096, activation = "relu")),
model.add(keras.layers.Dense(4096, activation = "relu")),
model.add(keras.layers.Dense(1000, activation = "softmax")) # 마지막 레이어의 노드수를 2로 변경하세요
return model
'파이썬 이것저것 > 파이썬 딥러닝 관련' 카테고리의 다른 글
[Python] 딥러닝 ViT 모델을 활용하여 고추잎 질병 이미지 판별 (0) | 2022.07.26 |
---|---|
[Python] 딥러닝 ResNet 구현하기 (0) | 2022.07.17 |
[Python] 딥러닝 CNN 연산 (0) | 2022.07.17 |
[Python] Tensorflow 커스텀 데이터셋 불러오기 (0) | 2022.07.17 |
[Python] PIL 알아보기 (0) | 2022.07.17 |