Keras에선 자체적으로 이미지를 다룰수 있는 기능을 제공하고 있습니다.
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
keras.preprocessing.image의 ImageGenerator,img_to_array, load_img를 이용해 쉽게 Test, Valid 이미지를 나눌 수 있습니다.
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False, zca_epsilon=1e-06,
rotation_range=0,
width_shift_range=0.0,
height_shift_range=0.0,
brightness_range=None,
shear_range=0.0,
zoom_range=0.0,
channel_shift_range=0.0,
fill_mode='nearest',
cval=0.0,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=None,
validation_split=0.0,
dtype=None
한번 입력하면 각각의 이미지를 불러올때마다 각 인수들을 적용합니다.
- featurewise_center=False, 불린, 데이터셋에 대해 특성별로 인풋의 평균이 0이 되도록합니다.
- samplewise_center=False, 각 샘플의 평균이 0이 되도록 합니다.
- featurewise_std_normalization=False, 불린, 인풋을 각 특성 내에서 데이터셋의 표준 편차로 나눕니다.
- samplewise_std_normalization=False, 불린, 각 인풋을 표준편차로 나눕니다.
- zca_whitening=False, 불린, 영위상 성분분석 백색화를 적용할지 여부입니다.
- zca_epsilon=1e-06, 영위상 성분분석 백색화의 엡실론 값. 디폴트 값은 1e-6입니다.
- rotation_range=0, 정수범위 만큼 무작위로 회전합니다.
- width_shift_range=0.0, 사진을 좌우로 이동시킵니다. 0이하 일땐 전체의 비율, 0이상일땐 픽셀단위입니다.
- height_shift_range=0.0, 상하로 이동합니다. 0이하일땐 전체 비율, 1이상일땐 픽셀단위로 움직입니다.
- brightness_range=None, 밝기를 변경합니다. (0.0, 5.0) 이런식의 두 부동소수점이 포함된 튜플로 구성됩니다.
- shear_range=0.0, 이미지를 찌그러 트립니다. 회전이 아님에 주의 합니다.
- zoom_range=0.0, 이미지를 확대 혹은 축소합니다. 부동소수점, 혹은 상한 하한선을 정해서 사용합니다.
- channel_shift_range=0.0, 무작위 채널 이동 범위입니다.
- fill_mode='nearest', 회전 축소 등으로 이미지에 여백이생겼을때 채우는 방법입니다.
- cval=0.0, fill_mode의 constant시 배경색을 정해줍니다.
- horizontal_flip=False, 좌우로 뒤집습니다, 무작위로 시행됩니다.
- vertical_flip=False, 상하로 뒤집습니다.
- rescale=None, 이미지 처리 마지막에 주어진 값을 곱해 크기를 조정합니다.
- preprocessing_function=None, 이미지 처리전에 주어진 값을곱해 크기를 조정합니다.
- data_format=None, 이미지 데이터 형식을 바꿔줍니다.
- channels_last = (샘플, 높이, 넓이, 채널)(일반적으로 기본값)
- channels_first = (샘플, 채널, 높이, 넓이)
- validation_split=0.0, 부동소수점 값으로 train과 valid 로 이미지를 자동으로 나누어 줍니다. subset을 통해 불러옵니다.
- dtype=None, 생성된 배열에 사용할 자료형을 지정합니다.
이미지 복사해서 생성하기
from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
너무 길기때문에 keras를 import한뒤 따로 import 해서 사용합니다.
def datagen(path):
datagen = ImageDataGenerator(rotation_range=50,
width_shift_range=0.3,
height_shift_range=0.3,
brightness_range=(0.0, 0.9),
shear_range=0.5,
zoom_range=0.5,
horizontal_flip=True,
vertical_flip=True)
load_sample = load_img(path)
sample = img_to_array(load_sample)
sample = sample.reshape((1,) + sample.shape)
i=0
for batch in datagen.flow(sample, batch_size=1, save_to_dir='./example', save_prefix='example', save_format='jpg'):
i += 1
if i > 10: # 여기서 지정해준 만큼 이미지를 생성합니다.
break
함수형태로 구성해놓으면 사용하기 편리합니다.
위와같이 코드를 실행할 경우 10번에 걸쳐 복사한 이미지를 생성합니다. save_prefix로 이미지 이름에 고정적으로 들어갈 문자를 넣을 수 있고, 이미지의 형식을 지정할 수 있습니다.
'Back > Deep Learning' 카테고리의 다른 글
[Keras] 모델 불러오기 (0) | 2020.09.24 |
---|---|
[Keras] 모델 저장하기 (0) | 2020.09.23 |
[Python] [CNN]점자번역 프로그램(7) - 정리 (1) | 2020.09.03 |
[Python] [CNN]점자번역 프로그램(6) (0) | 2020.09.02 |
[Python] [CNN]점자번역 프로그램(5) (0) | 2020.09.02 |