파일로 학습 :: 컴퓨터 비전 - mindscale
Skip to content

파일로 학습

데이터 다운로드

https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip

파일을 다운로드 후 압축 풀기

data_dir = 'cats_and_dogs_filtered'
BATCH_SIZE = 32
IMG_SIZE = (224,224)

데이터 폴더의 구조

  • train과 validation 폴더에 cats와 dogs 폴더가 존재
  • 고양이 사진은 cats 폴더에
  • 강아지 사진은 dogs 폴더에
  • 위와 같이 이미지 종류별로 폴더에 나누어 저장하면 폴더별로 레이블을 붙여 자동으로 로딩

훈련 데이터 로딩

import tensorflow as tf
train_dataset = \
    tf.keras.preprocessing.image_dataset_from_directory(
        f'{data_dir}/train',
        shuffle=True,
        batch_size=BATCH_SIZE,
        image_size=IMG_SIZE)
Found 2000 files belonging to 2 classes.
  • 특별한 언급이 없어도, train 폴더에서 dogs와 cats의 이미지를 로딩
  • 메모리를 절약하기 위해 필요한만큼만 로딩하므로 shuffle과 batch_size를 설정
  • image_size를 설정하면 크기는 자동 조정

검증 데이터 로딩

validation_dataset = \
    tf.keras.preprocessing.image_dataset_from_directory(
        f'{data_dir}/validation',
        shuffle=False,
        batch_size=BATCH_SIZE,
        image_size=IMG_SIZE)
Found 1000 files belonging to 2 classes.

모형 정의

from tensorflow.keras.layers import *
model = tf.keras.Sequential([
    Rescaling(scale=1/127.5, offset=-1),
    Flatten(),
    Dense(1, activation="sigmoid"),
])

훈련

model.compile(
    loss="binary_crossentropy",
    metrics=["accuracy"])

model.fit(train_dataset, validation_data=validation_dataset)
63/63 [==============================] - 3s 46ms/step - loss: 7.0829 - accuracy: 0.5375 - val_loss: 4.9212 - val_accuracy: 0.5350
<keras.callbacks.History at 0x22c21c31570>