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

이미지 불러오기

~8 min · data

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

폴더 구조를 클래스 이름으로 사용해

keras.utils.image_dataset_from_directory는 디스크의 이미지 파일을 배치된 학습 데이터셋으로 바꾸는 표준 진입점이야. 클래스마다 하위 폴더를 하나 만들고 그 안에 이미지를 넣으면, 부모 폴더를 지정하는 한 번의 호출로 클래스 이름 추론, 이미지 읽기, 일정한 image_size로 크기 변경, 배치 구성, 섞기까지 처리해. 별도의 레이블 배열이나 파일 검색 반복문이 필요 없어.

분할할 때는 같은 seed를 사용해

validation_split, subset, seed를 조합하면 같은 폴더에서 학습과 검증 자료를 나눌 수 있어. 함수는 두 번 호출해야 해. 한 번은 subset="training", 다른 한 번은 subset="validation"으로 두고 두 호출에 같은 seed를 전달해. 그래야 두 분할이 겹치지 않고 일관되게 유지돼. label_mode="categorical"은 원-핫 표적과 categorical_crossentropy에, "int"는 정수 레이블과 sparse_categorical_crossentropy에 맞아.

읽기 병목 줄이기

에포크마다 디스크에서 다시 읽고 디코딩하면 느려. .cache()는 첫 통과 뒤의 이미지를 보관하고, .prefetch(tf.data.AUTOTUNE)는 GPU가 현재 배치를 처리하는 동안 CPU가 다음 배치를 준비하게 해. 둘을 함께 쓰면 에포크 시간이 절반 이하로 줄기도 해. 순서도 중요해. 캐시는 무작위 증강보다 앞에 두어 원본을 저장하고 증강은 매 에포크 달라지게 하며, 미리 가져오기는 맨 끝에 둬.

Code

폴더 트리에서 레이블이 붙은 이미지 데이터셋 불러오기·python
# Folder structure:
# data/
#   cats/
#     cat001.jpg
#     cat002.jpg
#   dogs/
#     dog001.jpg
#     dog002.jpg

train_ds = keras.utils.image_dataset_from_directory(
    "data/",
    image_size=(224, 224),   # Resize all images
    batch_size=32,
    validation_split=0.2,
    subset="training",
    seed=42,
    label_mode="categorical", # or "int" for integer labels
)

External links

Exercise

클래스별 폴더에 무작위 이미지 100개를 만들고 image_dataset_from_directory로 불러와. 배치 하나의 모양을 출력한 뒤 cache()와 prefetch()를 추가해 한 에포크 시간을 비교해.

Progress

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

댓글 0

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

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