본문 바로가기
data science/deep learning

학습 데이터 준비

by 꼰대코더 2024. 1. 2.

샘플데이터는 Food-11 을 사용하겠다.

구조는 아래와 같고 training은 학습용, validation은 학습중 배치별 학습평가용, evaluation은 최종 모델의 평가용이다.

 

Data

 

Data Augmentation

인위적으로 학습 데이터를 이용하여 변형된 데이터셋을 만드는 기술을 Data Augmentation 이라 한다.

목적은 아래와 같다.

  •  모델이 overfitting되는 걸 방지
  • 초기 학습데이터가 적을시
  • 모델의 정확도를 향상
  • 새롭게 데이터를 늘리는 라벨링과 클리닝의 오퍼레이션 코스트를 삭감

ImageDataGenerator 

학습(training)용과 밸리데이션용을 따로 정의. 

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
    rescale=1.0 / 255,		# 0-1 normalizing
    rotation_range=30,		# 회전
    zoom_range=0.15,		# 확대 축소
    width_shift_range=0.2,	# 수평이동
    height_shift_range=0.2,	# 수직이동
    shear_range=0.15,		# 변형
    horizontal_flip=True,	# 좌우 반사
    fill_mode="nearest")
validation_datagen = ImageDataGenerator(rescale=1.0 / 255)

 

.flow_from_directory

 

trainGen = train_datagen.flow_from_directory(
	"Data/training",			# 학습데이터 폴더
	class_mode="categorical",		# 둘중 하나선택이라면 binary
	target_size=(224, 224),			# 입력 W x H (데이터는 제각각 WH 를 가지고 있다.)
	color_mode="rgb",
	shuffle=True,				# 순서를 랜덤으로 바꿈
	batch_size=100)				# 학습시 파라미터를 결정하는 학습 데이터 묶음 단위
valGen = validation_datagen.flow_from_directory(
	"Data/validation",
	class_mode="categorical",
	target_size=(224, 224),
	color_mode="rgb",
	shuffle=False,
	batch_size=100)
testGen = validation_datagen.flow_from_directory(
	"Data/evaluation",
	class_mode="categorical",
	target_size=(224, 224),
	color_mode="rgb",
	shuffle=False,
	batch_size=100)

 

위의 Generator 는 모델의 학습에 지정

model.fit(
	x=trainGen,
	steps_per_epoch=totalTrain # 학습 데이터 수
	validation_data=valGen,
	validation_steps=totalVal  # 밸리데이션 데이터 수
	epochs=50)