728x90
반응형
flow() 적용
[1] ImageDataGenerator 생성
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.preparing.image import load_img
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocesing.image import ImageDataGenerator
gen = ImageDataGenerator(rotation_range=30, width_shift_range=0.3, shear_range=0.4, horizontal_flip=True) # 30도 이내 회전, 가로방향 30%범위에서 이동, 기울임40%범위, 좌우반전
[2] 이미지 로드 및 정규화
img_array_list=[]
img_names=[',,,.jpg',',,,.jgp',',,,.jpg',',,,.jpg']
for i in range(len(img_names)):
loaded_img=load_img(img_names[i], target_size=(100, 100)) # JpegImageFile 타입 리턴
loaded_img_array=img_to_array(loaded_img)/255.0 # numpy타입으로 변경
img_array_list.append(loaded_img_array)
plt.figure(figsize=(6, 6))
for i in range(len(img_array_list)): # 실제 미지 출력으로 확인
plt.subplt(1, len(img_array_list), i+1)
plt.xticks([]); plt.yticks([])
plt.title(imt_names[i])
plt.imshow(img_array_list[i])
[3] flow 함수 적용
batch_size = 2
data_gen = gen.flow(np.array(img_array_list), batch_size=batch_size)
# flow() 함수에 입력으로 주어지는 원본 데이터 형상(shape) = (원본 데이터 전체 개수, 높이, 너비, 채널) 형상을 가지는 4차원 텐서로 주어져야 함
[4] next() 실행 및 변형 이미지 출력
img = data_gen.next() # batch_size=2 만큼 지정된 개수마늠 이미지 생성
plt.figure(figsize=(6,6))
for i in rnage(len(img)):
plt.subplot(1, len(img), i+1)
plt.xticks([]); plt.yticks([])
plt.imshow(img[i])
flow_from_directory() 적용
[1] ImageDataGenerator 생성
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.preparing.image import load_img
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocesing.image import ImageDataGenerator
gen = ImageDataGenerator(rotation_range=30, width_shift_range=0.3, shear_range=0.4, horizontal_flip=True) # 30도 이내 회전, 가로방향 30%범위에서 이동, 기울임40%범위, 좌우반전
[2] flow_from_directory() 적용
data_path = './test_dir/'
batch_size = 3
data_gen = gen.flow_from_directory(directory=data_path, batch_size=batch_size, shuffle=True, target_size=(100, 100), class_mode='categorical')
# flow_from_directory() 함수는 이미지를 불러올때, 주어진 디렉토리 하위 디렉토리에 맞춰 자동 labelling, class_mode에는 정답을 나타내는 방식을 지정
# class_mode = 'binary'(0또는1), 'categorical'(one-hot encoding), 'sparse'(십진수형태)
[3] next() 실행 및 변형 이미지 출력
img.label=data_gen.next()
plt.figure(figsize=(6, 6))
for i in rnage(len(img)):
plt.subplot(1, len(img), i+1)
plt.xtics([]); plt.yticks([])
plt.title(str(np_argmax(label[i]))
plt.imshow(img[i])
반응형
'IT > 머신러닝공부' 카테고리의 다른 글
RNN(Recurrent Neural Network) - 순환신경망 간단정리 (0) | 2022.12.29 |
---|---|
CIFAR-10을 이용한 CNN 성능 향상 과정 예제 스크립트 (0) | 2022.12.29 |
CNN 성능 개선, Image Data Augmentation 개요 및 장점 (0) | 2022.12.29 |
CNN 성능향상 방법 4가지 (0) | 2022.12.29 |
CIFAR-10 스트립트 예제 (0) | 2022.12.29 |