개발학습일지

[AI] 딥러닝 이미지증강 ImageDataGenerator _ 이미지 파일 학습데이터로 만들기 본문

AI/Deep Learning

[AI] 딥러닝 이미지증강 ImageDataGenerator _ 이미지 파일 학습데이터로 만들기

처카푸 2024. 4. 19. 14:18

이미지 파일을 학습 시키기 전에,

이미지 파일(jpg, png...)을 학습 데이터인 넘파이 어레이로 만들어야 한다

 

인공지능을 학습시킬때 들어가는 데이터는 넘파이 어레이가 들어가야하지만 가지고 있는 데이터는 이미지 파일이라서

이미지 파일의 형태로는 fit 함수로 학습이 불가능하다

그래서, 파일을 텐서플로우 keras preprocessing image 에  ImageDataGenerator 라이브러리를 사용해서 변환시켜줘야 한다

import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator

 

ImageDataGenerator 에 들어가는 파라미터

- rescale = 1/255 이미지를 불러오면서 피처스케일링까지 한다
- shear = 이미지를 알아서 눞히거나 늘리고 변경해서 저장
- zoom = 원본사진을 가까이 줌으로 변경해서 저장
- horizontal flip = 손들고 있는사진 한쪽손만 올리고 있느면 반대로 돌려서 반대 사진으로 저장
- shift _ width_shift_range,  height_shift_range = 원본사진을 왼쪽 오른쪽 이동시켜서 데이터로 저장
- rotation = 원본사진 회전하여 저장 각도 360도까지 가능
- fill_mode = 'nearest' 변형하다 픽셀 비게 되면 옆에 있는 픽셀로 채워라

# 이미지 증강까지해서 메모리에 데이터 생성하는 코드
train_datagen = ImageDataGenerator(rescale=1/255,
                                   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')
# 이미지가 들어있는 디렉토리의 정보, 이미지 사이즈 정보, 몇개로 분류할지 정보를 입력
train_generator = train_datagen.flow_from_directory(train_dir,
                                                    target_size=(150,150),
                                                    class_mode='binary')

# 분류되어 있는 이미지 폴더 마다 설정해준다
# ImageDataGenerator(rescale=1/255) 이거는 필수!!
val_datagen = ImageDataGenerator(rescale=1/255)
val_generator = val_datagen.flow_from_directory(train_dir,
                                                target_size=(150,150),
                                                class_mode='binary')