ImageDataGenerator

yeoni·2023년 6월 27일
0

Tensorflow

목록 보기
15/15

ImageDataGenerator

  • 데이터를 불러오는 동시에 여러가지 전처리를 쉽게 구현 할 수 있는 tf.keras의 기능
  • data augmentation → overfitting 방지
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
    rotation_range=20, # 20도내에서 랜덤하게 회전
    width_shift_range=0.2, #가로 이동 20%만큼 랜덤하게 생성
    height_shift_range=0.2, #세로 이동 20%만큼 랜덤하게 생성
    horizontal_flip=True) #가로축으로 반전 랜덤하게 생성

flow

  • 데이터를 모두 메모리에 불러두고 사용 할 때
result = next(iter(datagen.flow((train_x, train_y))))

x, y = result

plt.imshow(x[0, :, :, 0], 'gray')
plt.show()

flow_from_directory

# 클래스로 분류된 dir를 사용해야 한다
train_dir = "../../datasets/mnist_png/training"

input_shape = (28, 28, 1)
batch_size = 32

datagen.flow_from_directory(
    train_dir,
    target_size=input_shape[:2],# 이미지 크기를 어떻게 불러올지
    batch_size=batch_size,
    color_mode='grayscale',#rgb, rgba
)

x, y = next(iter(datagen.flow((train_x, train_y))))
print(x.shape) #(32, 32, 32, 3)
print(y.shape) #(32, 10)

flow_from_DataFrame

import pandas as pd
train_data = pd.read_csv("../../datasets/cifar/train_dataset.csv")
datagen.flow_from_dataframe(
    train_data,
    x_col="path",
    y_col="class_name",
    target_size=(32, 32),
    color_mode="rgb",
    class_model="categorical",
    batch_size=32
)

x, y = next(iter(datagen.flow((train_x, train_y))))

Reference
1) 제로베이스 데이터스쿨 강의자료

profile
데이터 사이언스 / just do it

0개의 댓글