딥러닝

[딥러닝] 이미지 증강(Augmentation): 이미지 , 넘파이 어레이

eyoo 2022. 6. 15. 18:03
ImageDataGenerator함수를 사용하여 이미지 파일을 학습 시킬수있도록 변환할때
 
현재 가지고 있는 이미지 데이터를 증강처리 하여,
 
각도, 위치, 크기 등을 조정하여 학습이 더 잘될수 있도록 만든다.
 
from keras_preprocessing.image.image_data_generator import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale= 1/255.0,
                                   rotation_range=30, 
                                   width_shift_range=0.2,
                                   height_shift_range=0.2,
                                   shear_range=0.2,
                                   zoom_range=0.2,
                                   horizontal_flip=True)

# rotation_range 로 이미지를 몇도까지 회전할지 정한다.

# width_shift_range와 height_shift_range로 상하 좌우로 이미지를 움직인다.
# shear_range로 이미지를 밀리게 할수있다.

# zoom_range로 확대시킨다.

# horizontal_flip 수평방향으로 반전시킨다.

 

 

그 후 flow_from_directory에 학습할 사진이 들어있는 디렉토리를 입력하고 학습데이터를 세팅한다. 

 

train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human',target_size= (300,300),class_mode='binary')

 

 

넘파이 어레이 형식의 이미지 데이터를 증강할때는 그 전에 피처스케일링을 진행하므로

 

ImageDataGenerator 의 rescale파라미터를 사용하지 않는다.

 

train_datagen = ImageDataGenerator(horizontal_flip=True, 
                                   zoom_range=0.2, 
                                   rotation_range=15,
                                   width_shift_range=0.1,
                                   height_shift_range=0.1)

 

 

이미지가 아닌 넘파이 어레이기에 flow함수를 사용한다.

 

train_generator = train_datagen.flow(X_train,y_train)

# (X_train, y_train) , (X_test, y_test) = cifar10.load_data() 코드를 사용한 뒤 가공한 상태