이전 내용 확인
- 이번 글에서는 이전 블로그에 이어 데이터 증식을 사용한 특성 추출을 진행해 보겠습니다.
- 첫번째 글 : https://ls-alt.tistory.com/28
- 두번째 글 : https://ls-alt.tistory.com/29
- 세번째 글 : https://ls-alt.tistory.com/30
교재 홍보
- 다음의 교재의 내용을 참고하였습니다.
- 교재 구매 : https://www.yes24.com/Product/Goods/112012471
케라스 창시자에게 배우는 딥러닝 개정 2판 - 예스24
단어 하나, 코드 한 줄 버릴 것이 없다!단 한 권의 딥러닝 책을 선택한다면 바로 이 책이다!케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많
www.yes24.com
1. 사전훈련 모델 가져오기
- ImageNet 데이터셋을 통해 사전훈련된 VGG16 모델의 합성곱 기반 층을 가져옵니다. 입력 이미지가 한 번만 합성곱 기반층을 통과하고 그 출력을 넘파이로 저장했던 이전과 달리 모든 입력 이미지가 매번 합성곱 기반층을 통과할 것이기 때문에 사전에 학습된 표현이 수정되지 않도록 합성곱 기반 층을 동결해 줘야 합니다.
- 합성곱 기반 층을 동결하면 층이나 모델의 훈련 가능한 가중치 개수가 0이 됩니다.
from tensorflow.python.util.traceback_utils import include_frame
conv_base = keras.applications.vgg16.VGG16(
weights="imagenet",
include_top=False)
conv_base.trainable=False # 합성곱 기반층을 동결
- 합성곱 기반 층을 동결하면 층이나 모델의 훈련 가능한 가중치 개수가 0이 됩니다.
conv_base.trainable=True
print(len(conv_base.trainable_weights)) # 동결 전 가중치 개수
conv_base.trainable=False
print(len(conv_base.trainable_weights)) # 동결 후 가중치 개수
2. 모델 생성
- 데이터 증식 층과 밀집분류기를 동결된 합성곱 기반층에 추가하여 모델을 생성합니다.
# 데이터 증식층
data_augmentation = keras.Sequential(
[
layers.RandomFlip('horizontal'),
layers.RandomRotation(0.1),
layers.RandomZoom(0.2),
]
)
# 입력층
inputs = keras.Input(shape=(180, 180, 3))
x = data_augmentation(inputs)
x = keras.applications.vgg16.preprocess_input(x) # 입력값의 스케일 조정
# 은닉층 = 합성곱 층 연결 (vgg16)
x = conv_base(x)
# 출력층
x = layers.Flatten()(x)
x = layers.Dense(256)(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(1, activation="sigmoid")(x)
model = keras.Model(inputs, outputs)
model.compile(loss="binary_crossentropy",
optimizer="rmsprop",
metrics=["accuracy"])
3. 모델 훈련
- 모델을 훈련해줍니다.
callbacks = [
keras.callbacks.ModelCheckpoint(
filepath="feature_extraction_with_data_augmentation.keras",
save_best_only=True,
monitor="val_loss")
]
history = model.fit(
train_dataset,
epochs=20,
validation_data=validation_dataset,
callbacks=callbacks)
4. 손실과 정확도 그래프
- vis함수를 이용해 그래프를 그려줍니다.
- 검증 정확도가 98%로 이전보다 모델의 성능이 향상됐고, 5에포크만에 과대적합이 일어나던 현상도 완화되었습니다.
vis(history)

'DeepLearning' 카테고리의 다른 글
| 회귀 모델_Boston 주택가격 (0) | 2023.09.01 |
|---|---|
| CNN_사전훈련된 모델 (0) | 2023.08.31 |
| CNN_데이터 증식 (0) | 2023.08.30 |
| CNN_강아지 vs 고양이 (0) | 2023.08.30 |
| CNN_MNIST (0) | 2023.08.29 |
