[Keras] ImageDataGenerator에서 Image와 Label 뽑아내기

2021. 7. 16. 16:37스터디/Python

1. ImageDataGenerator 정의

Label 별 폴더로 잘 정리된 이미지 데이터 셋은 다음과 같이 로드할 수 있다.

 

from keras.preprocessing.image import ImageDataGenerator

batch_size = 30

datagen = ImageDataGenerator(rescale = 1./255, validation_split = 0.3, featurewise_center = True)
generator = datagen.flow_from_directory('./data', shuffle = True, target_size=(30,30), batch_size=batch_size, class_mode = 'categorical')

 

2. 생성된 총 이미지 수와 실행 횟수 산출

n_img = generator.n
steps = n_img // batch_size

 

3. Image와 Label 도출

import numpy as np

imgs, labels = [], []
for i in range(steps):
    a, b = generator.next()
    imgs.extend(a)
    labels.extend(b)

imgs = np.asarray(imgs)
labels = np.asarray(labels)

 

(참고) Label 얻기

labels = generator.classes

 

(참고) shuffle 시 섞인 index 순서

idx = generator.index_array
shuffle_classes = generator.classes[idx]

 

참고자료

https://stackoverflow.com/questions/44842097/how-to-get-list-of-values-in-imagedatagenerator-flow-from-directory-keras