VGG16은 2014년 Visual Geometry Group에서 나온 모델로, 구조가 매우 단순하다.
VGG 아키텍처는 ILSVRC 2014 대회에서 1위
from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Dropout, GlobalAveragePooling2D
# ImageNet으로 사전 학습된 VGG16 불러오기
base_model = VGG16(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
# 기존 VGG16 Feature Extractor 부분
x = base_model.output
# Feature map → 1차원 벡터
x = GlobalAveragePooling2D()(x)
# 새 분류기 추가
x = Dense(512, activation="relu")(x)
x = Dropout(0.5)(x)
# 예: 5개 클래스 분류
output = Dense(5, activation="softmax")(x)
model = Model(
inputs=base_model.input,
outputs=output
)
model.summary()
다만 "최신 이미지 인식 모델"로 현업에서 주력으로 쓰는 경우는 거의 줄었다.
현재는 주로 교육, 연구, 전이학습(Transfer Learning), 비교 기준(Baseline) 용도로 많이 사용된다.
모든 convolution kernel을 3×3으로 통일하고 깊게 쌓아서 성능 향상하는데 구조가 직관적이라 CNN 기본 구조를 설명할때 최고수준의 예제가된다 .
현업에서 잘 쓰지않는이유는 파라미터 약 1.38억 개, 모델 크기 약 528MB의 연산량이 많기 때문인데 비슷한 성능을 훨씬 작은 모델이 내고있기 때문이다.
| VGG16 | 2014 | 깊은 CNN |
| ResNet | 2015 | Skip Connection |
| EfficientNet | 2019 | 효율 최적화 |
| Vision Transformer(ViT) | 2020 | Transformer 기반 |
| ConvNeXt | 2022 | 현대식 CNN |