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

Keras Sequential API와 TensorFlow로 꽃 데이터셋 탐색하는 방법

PIL 패키지의 'Image.open' 메서드를 활용하면 Keras Sequential API를 통해 꽃 데이터셋을 손쉽게 탐색할 수 있습니다. 각 하위 디렉터리에는 서로 다른 종류의 꽃 이미지가 저장되어 있으며, 이를 인덱싱하여 콘솔에 표시할 수 있습니다.

Keras Sequential API란?

Keras Sequential API는 레이어를 순서대로 쌓아 올리는 순차 모델을 구축하는 데 유용한 도구입니다. 이 모델에서는 모든 레이어가 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다. 이미지 분류기는 keras.Sequential 모델을 사용해 생성되며, 데이터는 preprocessing.image_dataset_from_directory를 통해 로드됩니다.

꽃 데이터셋 개요

데이터는 디스크에서 효율적으로 로드되며, 학습 과정에서 과대적합(overfitting) 여부를 파악한 후 이를 완화하기 위한 다양한 기법이 적용됩니다. 대표적인 기법으로는 데이터 증강(data augmentation)드롭아웃(dropout)이 있습니다.

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

  • 데이지(Daisy)
  • 민들레(Dandelion)
  • 장미(Roses)
  • 해바라기(Sunflowers)
  • 튤립(Tulips)

Google Colaboratory에서 실행하기

본 예제 코드는 Google Colaboratory 환경에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있도록 지원하며, 별도의 설정 없이 GPU(그래픽 처리 장치)에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

다음 코드에서는 data_dir.glob('*/*.jpg') 패턴을 사용해 데이터셋 내 전체 JPG 이미지의 개수를 계산하고, 'roses'와 'tulips' 하위 디렉터리에서 샘플 이미지를 가져와 화면에 출력합니다.

image_count = len(list(data_dir.glob('*/*.jpg')))
print("데이터셋에 포함된 이미지 수:")
print(image_count)
print("데이터셋 미리보기")
print("장미(ROSES)")
roses = list(data_dir.glob('roses/*'))
PIL.Image.open(str(roses[1]))
print("튤립(TULIPS)")
tulips = list(data_dir.glob('tulips/*'))
PIL.Image.open(str(tulips[0]))

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

출력 결과

데이터셋에 포함된 이미지 수:
3670
데이터셋 미리보기
장미(ROSES)

튤립(TULIPS)

Keras Sequential API와 TensorFlow로 꽃 데이터셋 탐색하는 방법


Keras Sequential API와 TensorFlow로 꽃 데이터셋 탐색하는 방법

설명

  • glob 함수를 사용해 각 클래스별 이미지 파일 목록을 가져옵니다.
  • PIL.Image.open 메서드를 통해 해당 경로의 이미지를 열어 콘솔에 샘플로 표시합니다.
  • 전체 데이터셋에는 총 3,670장의 이미지가 포함되어 있음을 확인할 수 있습니다.