샘플데이터는 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)
'data science > deep learning' 카테고리의 다른 글
바이너리 분류 모델에 있어서 평가 항목 (0) | 2024.01.16 |
---|---|
일반 데이터 학습용/테스트용 분리 (0) | 2024.01.14 |
(VGG16) Fine tunning (0) | 2024.01.01 |