[팀프로젝트] - Tensorflow Resnet50

from tensorflow.keras.layers import Input, Lambda, Dense, Flatten
from tensorflow.keras.models import Model
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.applications import EfficientNetB0
from tensorflow.keras.applications import ResNet50

from tensorflow.keras.applications.resnet50 import preprocess_input
from tensorflow.keras.applications.inception_v3 import preprocess_input

import tensorflow as tf
from tensorflow import keras


from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator,load_img
from tensorflow.keras.models import Sequential
import numpy as np
from glob import glob

필요한 라이브러리 임포트. 

pytorch를 주로 사용했는데, 쿠다 환경과 등등의 문제로 제대로 모델이 돌아가지 않아서 텐서플로우로 대신했다.

ResNet= ResNet50(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)

ResNet 모델을 불러오고 이미지를 넣어주는 코드를 작성합니다. 

x = Flatten()(ResNet.output)

model.compile(
  loss='categorical_crossentropy',
  optimizer='adam',
  metrics=['accuracy']
)

from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory(train_path,
                                                 target_size = (224, 224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')
                                                 
test_set = test_datagen.flow_from_directory(valid_path,
                                            target_size = (224, 224),
                                            batch_size = 32,
                                            class_mode = 'categorical')

 

model에 fit 해주며 학습 과정을 지켜봤는데요, 

아직 gpu 환경이 구축되지 않아서 로컬 환경에서 학습 시간이 매우 많이 소요됩니다.

r = model.fit(
  training_set,
  validation_data=test_set,
  epochs=10,
  steps_per_epoch=len(training_set),
  validation_steps=len(test_set),
  callbacks=[cp_callback]
)​

epochs를 50에서 10으로 줄였으나 학습 시간이 너무 오래걸려서 중간에 셀을 중지했다.

 

Epoch 2: saving model to /home/minyoungxi/project/output
1267/1267 [==============================] - 2529s 2s/step - loss: 0.8374 - accuracy: 0.6788 - val_loss: 8.1047 - val_accuracy: 0.3776


Epoch 4: saving model to /home/minyoungxi/project/output
1267/1267 [==============================] - 2524s 2s/step - loss: 0.6824 - accuracy: 0.7429 - val_loss: 1.6154 - val_accuracy: 0.5466

epch 4정도를 돌 때  val accuracy가 향상되어서 더 돌려보고 싶었지만 아직 못했다ㅠㅜ

반응형