* 여태까지는 tensor 형태의 잘 정제된 데이터를 사용했지만, 실무에서는 jpg와 png 같이 정제되지 않은 바이너리 데이터를 사용해야한다. 이렇게 이미지 파일을 읽어서 텐서 객체로 바꿔서 모델에게 전달하는 과정을 데이터 파이프라이닝이라고 한다. 이를 편리하게 할 수 있게 keras에서 지원하는 api가 imagedatagenerator이다.
from tensorflow import keras
import os
1. Cats and Dogs 데이터셋 다운로드
url = 'https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip'
keras.utils.get_file(fname='cats_and_dogs_filtered.zip', origin=url, extract=True, cache_dir='')
2. ImageDataGenerator를 이용해 이미지 파일을 load 하기 위한 경로 지정
train_dir = '/content/datasets/cats_and_dogs_filtered/train'
3. ImageDataGenerator 객체 생성
from tensorflow.keras.preprocessing.image import imageDataGenerator
datagen = ImageDataGenerator()
4. ImagDataGenerator.flow_from_directory() 함수 사용
- ImageDataGenerator에 데이터를 읽어오는 경로 연결
- 이미지 데이터를 읽어 텐서 객체로 변환하는 파이프라인 설정
- DirectoryIterator 객체로 변화됨
train_generator = datagen.flow_from_directory(
directory=train_dir,
target_size=(150, 150),
batch_size=32,
shuffle=True,
class_mode='binary'
)
5. DirectoryIterator 객체의 속성 및 메서드
- .samples : 연결된 경로에서 읽어들일 이미지 파일의 개수
- len() : batch 덩어리의 개수 확인
- next() : batch 데이터 호출
- .getitem(idx) : 원하는 index의 batch 데이터 호출
train_generator.samples # 2000
len(train_generator) # 63 === 2000/32 = 62.5
next(train_generator) # 다음 batch 데이터
train_generator.__getitem__(0) # 원하는 index의 batch 데이터
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 가위바위보 데이터셋 분류 CNN 모델 구현 (0) | 2022.03.14 |
---|---|
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CNN 모델을 이용한 Cats & Dogs 분류 분석 (0) | 2022.03.10 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CIFAR-10-codepresso 분류 CNN 모델 구현 (0) | 2022.03.07 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CIFAR-10 분류 CNN 모델 구현 (0) | 2022.03.07 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - fashion-mnist 분류 CNN 모델 구현 (0) | 2022.03.07 |