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

이미지 증강 레이어

~8 min · keras-cv

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

이미지 증강은 저렴한 규제 방법이야

이미지 모델의 일반화를 돕는 가장 싼 방법은 더 많은 사진을 모으는 대신 가진 사진의 다양한 모습을 보여 주는 거야. 뒤집기, 회전, 자르기, 색 변경은 고양이가 거꾸로 있거나 그늘에 있어도 고양이라는 불변성을 가르쳐. KerasCV 레이어는 입력 파이프라인의 일부로 GPU에서 실행 중 변환하므로 원본 데이터셋의 디스크 크기를 늘리지 않아.

KerasCV의 강점은 두 표본을 섞는 배치 수준 증강까지 제공한다는 점이야:

증강설명
CutMix한 이미지의 무작위 조각을 다른 이미지에 붙이고 레이블을 면적 비율대로 섞음
MixUp두 이미지와 레이블 사이를 선형 보간
RandAugment미리 정의된 집합에서 N개 변환을 무작위 정책으로 적용해 수동 조정을 줄임
MosaicAugmentation이미지 4장을 모자이크로 결합하며 YOLO 학습에 사용

레이블을 섞어도 도움이 되는 이유

MixUp과 CutMix는 고양이 0.7, 개 0.3처럼 두 이미지와 레이블을 함께 섞어. 이런 표본은 모델의 과도한 확신을 줄이고 날카로운 경계를 외우는 대신 부드러운 판정 경계를 배우게 해 과적합을 낮춰. 최신 분류 절차에 널리 쓰이는 이유야. 다만 학습에만 적용해야 하며 기본 증강보다 하이퍼파라미터에 민감해.

Code

배치 혼합과 정책 기반 이미지 증강기·python
# CutMix and MixUp
augmenter = keras_cv.layers.CutMix(alpha=1.0)
augmenter = keras_cv.layers.MixUp(alpha=0.2)

# RandAugment
augmenter = keras_cv.layers.RandAugment(
    value_range=(0, 255), augmentations_per_image=3
)
tf.data 입력 파이프라인에 이미지 증강 연결하기·python
# Apply during training only, on the input pipeline
train_ds = train_ds.map(
    lambda x, y: augmenter({"images": x, "labels": y}),
    num_parallel_calls=tf.data.AUTOTUNE,
)
# No augmentation on the validation set — measure the real thing
val_ds = val_ds  # left untouched

External links

Exercise

같은 모델과 일정으로 CIFAR-10에 세 가지 증강 전략을 적용해: 기본 뒤집기와 회전, MixUp(0.2), CutMix(1.0). 50에포크까지 학습·검증 정확도 곡선을 모두 그리고, 최종 검증 정확도와 두 곡선의 간격을 함께 비교해. 어느 전략이 간격을 가장 줄였는지, MixUp 효과가 이른지 늦은지도 기록해.
Hint
MixUp은 섞인 레이블을 맞히기 어려워 학습 정확도가 더 낮아 보일 수 있지만 검증 성능은 좋아질 수 있어. 이 차이는 오류가 아니라 규제가 작동하는 신호야.

Progress

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

댓글 0

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

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