ImageDataGenerator ์ฌ์ฉํ์ฌ data augmentation ์ํํ๊ธฐ
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
- ์ ๋ฒ์๋ ์ด๋ ๊ฒ๋ง ์ฌ์ฉ์ ํ์์ง๋ง, ์ด๋ฒ์๋ data augmentation๊น์ง ํด๋ณด์!
- ๋จ์ํ ์๋์ ๊ฐ์ด ๋ช ๊ฐ์ง ๊ฐ์ ์ง์ ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋งค์ฐ ์ฝ๊ฒ data augmentation์ด ๋๋๋ค.
- ์ด ์ดํ์ ์ ์ฐจ๋ ์ด์ ๊ณผ ๋ค๋ฅผ๋ฐ๊ฐ ์๋ค.
train_datagen = ImageDataGenerator(
rescale = 1./255,
rotation_rate=40,
width_shift_range=0.2, // ์ข์ฐ์ด๋ (์ด๋ฏธ์ง ํฌ๊ธฐ ๋๋น ์ด๋)
height_shift_range=0.2, // ์ํ์ด๋
shear_range=0.2, // ๊ธฐ์ธ์
zoom_range=0.2, // ํ๋ (์๋์ ํ๋ ๋น์จ)
horizontal_flip=True, // ์ํ๋ฐฉํฅ ๋ค์ง๊ธฐ
fill_mode='nearest' // ์์ค๋์์ ํฝ์
์ ๊ฐ์ฅ ๊ฐ๊น์ด ํฝ์
๊ฐ์ ์ด์ฉํ์ฌ ์ฑ์ด๋ค
)
- augmentation ์ฌ์ฉํ๋ฉด training ์ด๋ฏธ์ง์ ๋ค์์ฑ(=random)์ ๋ถ์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ overfitting ๋ฌธ์ ๋ฅผ ์ํํ ์ ์๋ค.
- ํ์ง๋ง validation ์ด๋ฏธ์ง์์์ randomness์ train์์์ randomness๊ฐ ์ผ์นํ์ง ์๋๋ค๋ฉด,
- data augmentation์ ์ํํด๋ validation accuracy๊ฐ ๋์์ง์ง ์์ ์ ์๋ค.
- (data augmentation์ด ํญ์ overfitting ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด ์๋๋ค)
- validation data๋ data augmentation ํด์ฃผ๋ฉด ์ ๋๋ค
TRAINING_DIR = '/tmp/cats-v-dogs/training'
train_datagen = ImageDataGenerator(
rescale=1./255,
width_shift_range=0.2,
height_shift_range=0.2,
rotation_range=0.2,
horizontal_flip=True
)
train_generator = train_datagen.flow_from_directory(
TRAINING_DIR,
target_size=(300, 300),
batch_size=10,
class_mode='binary'
)
VALIDATION_DIR = '/tmp/cats-v-dogs/testing'
validation_datagen = ImageDataGenerator(
rescale=1./255
# data augmentation ์ํํ๋ฉด X
)
validation_generator = validation_datagen.flow_from_directory(
VALIDATION_DIR,
target_size=(300, 300),
batch_size=10,
class_mode='binary'
)