Tensorflow

이미지 데이터 제너레이터가 하는 역할과 코드

728x90

CNN은 영상의 2차원 변환인 회전(Rotation), 크기(Scale), 밀림(Shearing), 반사(Reflection), 이동(Translation)과 같은 2차원 변환인 Affine Transform에 취약하여 변환된 사진 또는 영상을 다른 자료로 인식한다. 

 

ImageDataGenerator는 Noise삽입, 색상, 밝기 변형 등을 활용하여 실시간으로 데이터 증강을 사용하고, 텐서 이미지 데이터 배치를 생성하여 데이터 학습의 정확도를 높이는 역할을 한다.

 

 

#ImageDataGenerator의 호출

from keras.preprocessing.image import ImageDataGenerator

#이미지 증강을 위한 옵션 사용

TRAINING_DIR = '/tmp/cats-v-dogs/training'

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,

                                   vertical_flip = True,

                                   fill_mode = 'nearest')

train_generator = train_datagen.flow_from_directory(TRAINING_DIR, target_size=(150,150), batch_size=20, class_mode='binary')



VALIDATION_DIR = '/tmp/cats-v-dogs/testing'

validation_datagen = ImageDataGenerator(rescale = 1/255.0)

validation_generator = validation_datagen.flow_from_directory(VALIDATION_DIR, target_size=(150,150), batch_size=20, class_mode='binary')

 

rotation_range = 90

지정된 각도 범위내에서 임의로 원본이미지를 회전시킴. 단위는 도이며, 정수형이다. 예를 들어 90이라면 0도에서 90도 사이에 임의의 각도로 회전시킨다. 

 

width_shift_range = 0.1

지정된 수평방향 이동 범위내에서 임의로 원본이미지를 이동시킨다. 수치는 전체 넓이의 비율(실수)로 나타낸다. 예를 들어 0.1이고 전체 넓이가 100이면, 10픽셀 내외로 좌우 이동시킨다. 

 

height_shift_range = 0.1

지정된 수직방향 이동 범위내에서 임의로 원본이미지를 이동시킨다. 수치는 전체 높이의 비율(실수)로 나타낸다. 예를 들어 0.1이고 전체 높이가 100이면, 10픽셀 내외로 상하 이동시킨다. 

 

shear_range = 0.5

밀림 강도 범위내에서 임의로 원본이미지를 변형시킨다. 수치는 시계반대방향으로 밀림 강도를 라디안으로 나타낸다. 예를 들어 0.5이라면, 0.5 라이안내외로 시계반대방향으로 변형시킨다. 

 

zoom_range = 0.3

지정된 확대/축소 범위내에서 임의로 원본이미지를 확대/축소한다. “1-수치”부터 “1+수치”사이 범위로 확대/축소를 한다. 예를 들어 0.3이라면, 0.7배에서 1.3배 크기 변화를 시킨다. 

 

horizontal_flip = True

수평방향으로 뒤집기를 한다. 

 

vertical_flip = True

수직방향으로 뒤집기를 한다. 

 

 

 

 

 

 

 

 

 

 

 

 

keras.io/ko/preprocessing/image/

 

Image Preprocessing - Keras Documentation

이미지 전처리 [source] ImageDataGenerator 클래스 keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, samplewise_center=False, featurewise_std_normalization=False, samplewise_std_normalization=False, zca_whitening=False, zca_epsi

keras.io

tykimos.github.io/2017/06/10/CNN_Data_Augmentation/

 

컨볼루션 신경망 모델을 위한 데이터 부풀리기

본 강좌에서는 컨볼루션 신경망 모델의 성능을 높이기 위한 방법 중 하나인 데이터 부풀리기에 대해서 알아보겠습니다. 훈련셋이 부족하거나 훈련셋이 시험셋의 특성을 충분히 반영하지 못할

tykimos.github.io

 

728x90