VGG16과 ResNet50을 기본 모델로 사용하기
keras.applications.VGG16(weights='imagenet', include_top=False)을 사용하고 사용자 지정 헤드를 추가합니다.
VGG16과 ResNet50을 기본 모델로 사용하기은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
Keras 애플리케이션 모듈
tf.keras.applications에는 한 줄의 코드로 다운로드할 수 있는 수십 가지 사전 학습 아키텍처가 포함되어 있습니다. 대표적인 두 모델은 VGG16(단순하고 깊게 쌓은 3x3 합성곱)과 ResNet50(잔차 연결을 사용하며 더 깊고 정확함)입니다.
VGG16을 기반 모델로 불러오기
ImageNet 가중치를 사용하되 분류 헤드는 제외한 상태로 VGG16을 불러오면, 여기에 자체 헤드를 연결할 수 있습니다.
from tensorflow.keras.applications import VGG16
base = VGG16(
weights="imagenet", # download pretrained weights
include_top=False, # drop the 1000-class classifier
input_shape=(224, 224, 3) # standard ImageNet input size
)인수 이해하기
weights="imagenet": 무작위 가중치 대신 사전 학습된 가중치를 불러옵니다.include_top=False: 원래의 밀집 분류기를 제거하여 자체 분류기를 추가할 수 있게 합니다.input_shape=(224,224,3): 높이, 너비, 그리고 3개의 RGB 채널을 지정합니다.
include_top=False를 설정해야 모델을 새 작업에 재사용할 수 있습니다.
기반 모델 동결
base.trainable = False로 설정하면 첫 번째 학습 단계에서 사전 학습된 합성곱 가중치가 고정됩니다. 새로 추가한 헤드만 학습됩니다.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
기반 모델은 (7, 7, 512)와 같은 3차원 특징 맵을 출력합니다. GlobalAveragePooling2D는 공간 격자 전체에서 각 채널의 평균을 계산하여 채널마다 하나의 값으로 축소합니다. 이 예에서는 길이가 512인 벡터가 됩니다.
이 방식은 거대한 Flatten과 Dense의 조합을 대체하여 매개변수 수를 크게 줄이고 과적합도 완화합니다.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Dense 출력 헤드 추가
클래스 수에 맞는 Dense 계층을 연결합니다. 다중 클래스 분류에는 softmax를, 이진 분류에는 sigmoid를 사용하십시오.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(10, activation="softmax")(x)
model = Model(inputs=base.input, outputs=outputs)ResNet50으로 전환
ResNet50도 동일한 API를 사용합니다. 잔차(건너뛰기) 연결을 통해 기울기 소실 없이 훨씬 더 깊은 모델을 학습할 수 있으며, 일반적으로 비슷한 속도에서 VGG16보다 ImageNet 정확도가 높습니다.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16과 ResNet50 비교
- VGG16: 약 1억 3800만 개의 매개변수, 단순하고 균일하게 쌓은 3x3 구조, 높은 메모리 사용량, 이해하기 쉬움.
- ResNet50: 약 2500만 개의 매개변수, 잔차 블록, 더 깊은 구조, 일반적으로 더 높은 정확도와 더 가벼운 모델.
대부분의 최신 전이 학습 작업에서는 ResNet50이 더 강력한 기본 선택입니다.
전처리 방식 일치시키기
각 모델 계열에는 고유한 preprocess_input이 있습니다. VGG16은 RGB 평균값을 빼고, ResNet50은 이와 유사한 Caffe 스타일의 크기 조정을 사용합니다. 항상 기반 모델에 맞는 것을 가져오십시오.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct results모델 컴파일
기반 모델을 동결한 상태에서 일반적인 최적화 도구로 헤드를 컴파일하고 학습합니다.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)아키텍처 검사
model.summary()를 호출하여 기반 모델이 동결되었는지(학습 불가능한 매개변수 수가 큰지) 확인하고, 헤드만 학습 가능한지 확인하십시오. 이 점검을 통해 설정 오류를 초기에 발견할 수 있습니다.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"빠른 확인
Keras에서 전이 학습 모델을 구축하는 방법을 얼마나 이해했는지 확인해 보십시오.
복습
VGG16과 ResNet50을 weights="imagenet", include_top=False, input_shape=(224,224,3)과 함께 불러오고, base.trainable=False로 기반 모델을 동결했습니다. 그런 다음 GlobalAveragePooling2D로 특징을 풀링하고 Dense 출력 헤드를 추가했습니다.
ResNet50이 더 강력한 기본 선택입니다. 다음에는 계층의 동결을 해제하여 미세 조정합니다.
자주 묻는 질문
“VGG16과 ResNet50을 기본 모델로 사용하기” 강의는 무료인가요?
네 — “VGG16과 ResNet50을 기본 모델로 사용하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“VGG16과 ResNet50을 기본 모델로 사용하기”에서 뭘 배우나요?
keras.applications.VGG16(weights='imagenet', include_top=False)을 사용하고 사용자 지정 헤드를 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“VGG16과 ResNet50을 기본 모델로 사용하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 전이 학습의 개념과 전략
- VGG16과 ResNet50을 기본 모델로 사용하기
- 미세 조정: 동결 해제와 재학습
- 엣지 배포를 위한 MobileNet과 EfficientNet