개발공부

ImageDataGenerator 를 이용해서 데이터 증강하는 방법 본문

Python/Deep Learning

ImageDataGenerator 를 이용해서 데이터 증강하는 방법

mscha 2022. 6. 15. 17:31

데이터를 증강한다는 것은 모델을 학습시킬 때 사용할 데이터를

기울이거나, 확대하거나, 반전하거나, 이동시키거나, 회전시키는 등의 기법들을 사용해

여러 조건에서의 데이터들을 만들어 데이터를 풍부하게 하는 것이다.

 

예시 코드 

from tensorflow.keras.preprocessing.image import ImageDataGenerator

rotation_range : 데이터 회전 범위 (0–180)도
width_shift_range : 좌우 이동 범위

height_shift_range : 상하 이동 범위 
shear_range : 기울기 범위
zoom_range : 확대 범위
horizontal_flip : 상하 대칭
fill_mode : 회전 또는 너비/높이 이동 후에 나타날 수 있는 새로 생성된 픽셀을 채우는 데 사용되는 기법

# 이미지 증강은 학습데이터를 풍부하게 하기위해 하는 것이기 때문에 
# 나머지 데이터들은 이미지 증강을 꼭 할 필요는 없다.
train_datagen = ImageDataGenerator(rescale= 1/255.0, 
                                   rotation_range=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')
validation_datagen = ImageDataGenerator(rescale= 1/255.0)
train_generator = train_datagen.flow_from_directory('/tmp/cats_and_dogs_filtered/train', 
					target_size = (300, 300), class_mode= 'binary', batch_size = 20)
                    
validation_generator = validation_datagen.flow_from_directory('/tmp/cats_and_dogs_filtered/validation', 
						target_size = (300, 300), class_mode = 'binary', batch_size = 20)
epoch_history = model.fit(train_generator, epochs = 10, validation_data = (validation_generator),
                          steps_per_epoch = 100, validation_steps = 50)