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

이미지 증강

~8 min · data

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

기존 이미지에서 새로운 학습 사례 만들기

작은 데이터셋을 보완하는 경제적인 방법은 사진을 더 모으는 대신 매 에포크마다 조금씩 다른 모습으로 보여 주는 거야. 뒤집기, 회전, 확대, 색 변화가 반복될 때 모델은 같은 입력을 그대로 외우기 어려워지고, 과제에 필요한 불변성을 배우게 돼. 고양이는 조금 기울거나 밝기가 달라지고 중앙에서 벗어나도 여전히 고양이라는 사실 말이야.

학습할 때만 켜지고 추론할 때는 꺼져

Random* 레이어는 training=True일 때만 무작위 변환을 적용해. fit() 중에는 입력을 다양하게 만들지만 predict()evaluate()에서는 원본을 그대로 통과시켜. 증강의 목적은 학습 과제를 어렵게 만드는 것이지 평가 입력을 흔드는 것이 아니기 때문이야. 일반 레이어처럼 별도의 Sequential 블록에 쌓아 어떤 모델에도 붙일 수 있어.

변형 강도는 데이터의 의미에 맞춰

모든 과제에 통하는 설정은 없어. 회전 0.05, 확대 0.05처럼 약하게 시작하고 검증 정확도를 보며 점차 높여. 변형이 지나쳐 학습 정확도까지 정체되면 모델이 배울 수 없을 만큼 과제를 어렵게 만든 거야. 실제 세계에서 의미가 보존되는지도 확인해야 해. RandomFlip("horizontal")은 고양이 사진에는 알맞지만, 뒤집힌 2를 같은 숫자로 볼 수 없는 손글씨 숫자에는 맞지 않아.

Code

내장 이미지 증강 레이어 묶음·python
# Built-in Keras augmentation layers
data_augmentation = keras.Sequential([
    layers.RandomFlip("horizontal"),
    layers.RandomRotation(0.1),        # ±10% of full rotation
    layers.RandomZoom(0.1),            # ±10% zoom
    layers.RandomContrast(0.1),        # ±10% contrast
])

# Applied only during training (training=True)
# At inference time, augmentation is a no-op

External links

Exercise

CIFAR-10을 세 가지 증강 수준으로 학습해: 없음, 약한 뒤집기와 회전 0.1, 강한 뒤집기와 회전 0.3·확대 0.2·대비 0.3. 학습과 검증 곡선을 한 차트에 그리고 가장 알맞은 강도를 찾아.

Progress

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

댓글 0

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

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