티스토리 뷰
반응형
반응형
데이터셋 생성하기
케라스에서는 이미지 파일을 쉽게 학습시킬 수 있는 ImageDataGenerator 클래스를 설명한다.
이 클래스는 특정 폴더에 이미지를 분류하고 폴더내 이미지들을 학습시키기 위한 입력 데이터셋으로 만들어주는 기능을 설명한다.
먼저 ImageDataGenerator 클래스를 이용하여 객체를 생성하고, flow_from_directory() 함수를 이용하여 학습데이터를 생성합니다.
flow_from_directory() 함수의 주요 인자는 아래와 같습니다.
- 첫 번째 인자(directory) : 이미지 경로를 지정합니다.
- target_size : 이미지 크기를 지정합니다. 폴더에 있는 원본 이미지 크기가 다르더라도 targer_size에 지정된 크기로 자동 조절됩니다.
- batch_size : 배치 크기를 지정합니다.
- class_mode : 분류 방식에 대해서 지정합니다.
- categorical: 2D one-hot 부호화된 라벨이 반환됩니더.
- binary : 1D 이진 라벨이 반환됩니다.
- sparse : 1D 정수 라벨이 반환됩니다.
- None : 라벨이 반환되지 않습니다.
예를 들어 학습데이터의 폴더 구조가 다음 그림과 같고 현재 폴더가 python_work일때 이미지는 경로는 data/handwriting_shape이고
이미지 크기는 24 x 24이기 때문에 target_size도 (24, 24)로 설정한다.
학습 데이터 수가 클래스 당 15개이니 배치 크기를 3으로 지정하여 총 5번 배치를 수행하면 하나의 epoch가 수행될 수 있다.
세 개의 라벨 값을 가지는 다중 클래스 문제이므로 class_mode는 ‘categorical’로 지정한다.
# 필요한 패키지 불러오기 + 동일한 결과를 반복할 수 있도록 랜덤시드 지정
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.preprocessing.image import ImageDataGenerator
# 랜덤 시드 고정시키기
np.random.seed(3)
train_datagen = ImageDataGenerator(rescale = 1./255)
train_generator = train_datagen.flow_from_directory(
'C:/python_work/data/handwriting_shape/train',
target_size = (24, 24),
batch_size = 3,
class_mode = 'categorical')
test_datagen = ImageDataGenerator(rescale = 1./255)
test_generator = test_datagen.flow_from_directory(
'C:/python_work/data/handwriting_shape/test',
target_size = (24, 24),
batch_size = 3,
class_mode = 'categorical')
반응형
'머신러닝 & 딥러닝' 카테고리의 다른 글
cnn 모델을 이용한 꽃 종류를 예측하기 (0) | 2022.08.12 |
---|---|
딥러닝 시계열 분석 기본 방법 (0) | 2022.08.11 |
CNN 모델의 사용자 이미지 데이터 생성하기 (0) | 2022.08.06 |
[실습-03] Python에서 TensorFlow를 사용한 토지 피복 분류 (0) | 2022.08.03 |
컨볼루션 뉴럴 네트워크(CNN)를 위한 Tensorflow Keras 기본 패키지 불러오기 (0) | 2022.08.03 |
댓글