Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

TensorFlow와 Keras로 꽃 이미지 데이터셋을 학습·검증 세트로 분할하는 방법

꽃(flower) 데이터셋은 Keras 전처리(preprocessing) API가 제공하는 image_dataset_from_directory 유틸리티를 활용하면 학습(training) 세트와 검증(validation) 세트로 간편하게 분할할 수 있습니다. 이 유틸리티는 검증 세트에 할당할 비율만 지정해 주면 나머지 분할 작업을 자동으로 처리해 줍니다.

데이터 로딩 및 모델 구성 개요

이미지 분류기는 keras.Sequential 모델을 기반으로 생성되며, 데이터는 preprocessing.image_dataset_from_directory를 통해 디스크에서 효율적으로 불러옵니다. 이 과정에서 과적합(overfitting) 여부를 확인하고, 이를 완화하기 위한 기법들을 적용합니다. 대표적인 기법으로는 데이터 증강(data augmentation)과 드롭아웃(dropout)이 있습니다.

사용된 데이터셋에는 약 3,700장의 꽃 이미지가 포함되어 있으며, 총 5개의 하위 디렉터리로 구성되어 있습니다. 각 하위 디렉터리는 하나의 클래스에 해당하며, 클래스는 다음과 같습니다.

  • daisy (데이지)
  • dandelion (민들레)
  • roses (장미)
  • sunflowers (해바라기)
  • tulips (튤립)

실행 환경: Google Colaboratory

아래 코드는 Google Colaboratory(Colab)에서 실행합니다. Colab은 브라우저에서 바로 Python 코드를 실행할 수 있는 환경으로, 별도의 설정이 필요 없으며 GPU(그래픽 처리 장치)도 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

코드 예제

batch_size = 32
img_height = 180
img_width = 180
print("데이터를 학습 세트와 검증 세트로 분할합니다")
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    data_dir,
    validation_split=0.2,
    subset="training",
    seed=123,
    image_size=(img_height, img_width),
    batch_size=batch_size)

코드 출처: https://www.tensorflow.org/tutorials/images/classification

출력 결과

데이터를 학습 세트와 검증 세트로 분할합니다
5개 클래스에 속하는 3670개의 파일을 찾았습니다.
학습에 2936개의 파일을 사용합니다.

코드 설명

  • 이미지는 image_dataset_from_directory 유틸리티를 사용하여 디스크에서 직접 불러옵니다.
  • 이 유틸리티는 디스크상의 이미지 디렉터리를 tf.data.Dataset 형태로 변환해 줍니다.
  • 데이터 다운로드가 완료되면, 데이터 로더(loader)에 사용할 여러 매개변수(배치 크기, 이미지 크기, 시드 등)를 정의합니다.
  • validation_split=0.2 옵션을 통해 전체 데이터의 20%를 검증 세트로, 나머지 80%를 학습 세트로 분할합니다.
  • seed 값을 고정하면 재현 가능한(reproducible) 분할 결과를 얻을 수 있습니다.