본문 바로가기
C.W.K.
Stream
Lesson 06 of 06 · published

실전 — 이미지 증강을 포함한 데이터 파이프라인

~8 min · data

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

트랙의 모든 조각을 하나의 스크립트로

이 마무리 실습은 지금까지 배운 요소를 완전한 이미지 파이프라인으로 합쳐. 레이어로 만든 전처리, 학습할 때만 켜지는 이미지 증강, 백엔드에 독립적인 fit(), 캐시와 미리 가져오기를 적용한 폴더 기반 데이터셋이 하나의 모델 정의와 학습 호출로 이어져.

전처리가 모델 안에 있어야 하는 이유

Rescaling과 이미지 증강 블록은 모든 Conv2D보다 앞선 첫 레이어들이야. 이제 모델은 [0, 255] 범위의 원시 이미지를 직접 받고 내부에서 정규화해. 별도의 전처리 스크립트를 맞춰 관리할 필요가 없으므로 학습과 서빙의 불일치도 막을 수 있어. 저장된 .keras 파일 자체가 전처리 규칙을 품는 셈이지. 증강은 Random* 블록이므로 추론할 때 자동으로 꺼지고, 운영 입력에는 고정된 크기 조정만 적용돼.

배포는 모델 파일 하나로

변환이 모델 가중치와 함께 이동하므로 배포 과정은 단순해져. .keras 파일을 서빙 장비로 옮기고 keras.saving.load_model()로 불러온 뒤 원시 이미지에 predict()를 호출하면 돼. 따로 배포할 전처리 코드나 재현해야 할 별도 환경이 없고 변환 규칙이 어긋날 여지도 줄어. 데이터를 모델 옆에 붙인 임시 스크립트가 아니라 모델의 일급 구성요소로 다룬 결과야.

Code

처음부터 끝까지 — 전처리와 증강을 모델에 포함하기·python
import keras
from keras import layers

# Data augmentation layers (only active during training)
augmentation = keras.Sequential([
    layers.RandomFlip("horizontal"),
    layers.RandomRotation(0.1),
    layers.RandomZoom(0.1),
])

# Model with preprocessing built in
model = keras.Sequential([
    keras.Input(shape=(224, 224, 3)),
    layers.Rescaling(1.0 / 255.0),   # Normalize
    augmentation,                       # Augment
    layers.Conv2D(32, 3, activation="relu"),
    layers.MaxPooling2D(2),
    layers.Conv2D(64, 3, activation="relu"),
    layers.MaxPooling2D(2),
    layers.GlobalAveragePooling2D(),
    layers.Dense(128, activation="relu"),
    layers.Dense(5, activation="softmax"),
])

model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(train_ds, validation_data=val_ds, epochs=20)

External links

Exercise

전체 파이프라인을 만들어 봐. 개와 고양이 이미지 폴더를 image_dataset_from_directory로 읽고 cache()와 prefetch()를 적용한 뒤, Rescaling·이미지 증강·작은 CNN을 포함한 모델을 학습하고 저장해. .keras 파일을 다시 불러와 원시 이미지에 predict()를 호출해 배포 흐름까지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.