제로베이스 데이터취업스쿨 DAY86-107 자동차브랜드분류 Tensorlow

NAYOUNG KIM·2023년 7월 21일
0
post-thumbnail

VGGNet

from glob import glob
from tensorflow.keras import models, layers
from tensorflow.keras.applications.vgg16 import VGG16
from tensorflow.keras.layers import Input, Lambda, Dense, Flatten
from tensorflow.keras.models import Model, load_model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import ModelCheckpoint
from google.colab import drive

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 구글 드라이브 연결
drive.mount('/content/drive')

# 데이터셋 경로
train_path = '/content/drive/MyDrive/딥러닝_프로젝트/Car_Brand_Logos/Train'
test_path = '/content/drive/MyDrive/딥러닝_프로젝트/Car_Brand_Logos/Test'

forder_path = glob(train_path + '/*')
brands = [brand.split('/')[-1] for brand in forder_path]
# 이미지 사이즈 고정
IMAGE_SIZE = [256,256]

# 학습된 VGG16 모델 불러오기
vgg = VGG16(input_shape=IMAGE_SIZE+[3],
            weights='imagenet',
            include_top=False)
            
# 특징추출 파라미터는 이미지넷으로 학습된 값들을 그대로 사용
vgg.trainable = False

# include_top=False 했으니, 마지막 레이어 수정
vgg_model = models.Sequential()
vgg_model.add(vgg)
vgg_model.add(layers.Flatten())
vgg_model.add(layers.Dense(8, activation='softmax'))

# vgg_model.summary()
vgg_model.compile(
    loss='categorical_crossentropy',
    optimizer='adam',
    metrics=['accuracy'])
    
train_datagen = ImageDataGenerator(rescale = 1./256)
test_datagen = ImageDataGenerator(rescale = 1./256)

train_set = train_datagen.flow_from_directory(
    train_path,
    target_size=IMAGE_SIZE,
    batch_size=32,
    class_mode='categorical'
)

test_set = test_datagen.flow_from_directory(
    test_path,
    target_size=IMAGE_SIZE,
    batch_size=32,
    class_mode='categorical'
)

history = vgg_model.fit(
    train_set,
    validation_data=test_set,
    epochs=50,
    steps_per_epoch=len(train_set),
    validation_steps=len(test_set)
)

ResNet

from glob import glob
from tensorflow.keras import models, layers
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input
from tensorflow.keras.layers import Input, Lambda, Dense, Flatten
from tensorflow.keras.models import Model, load_model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import ModelCheckpoint
from google.colab import drive

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 구글 드라이브 연결
drive.mount('/content/drive')

# 데이터셋 경로
train_path = '/content/drive/MyDrive/딥러닝_프로젝트/Car_Brand_Logos/Train'
test_path = '/content/drive/MyDrive/딥러닝_프로젝트/Car_Brand_Logos/Test'

forder_path = glob(train_path + '/*')
brands = [brand.split('/')[-1] for brand in forder_path]
# 이미지 사이즈 고정
IMAGE_SIZE = [256,256]

resnet = ResNet50(input_shape=IMAGE_SIZE+[3],
            weights='imagenet',
            include_top=False)
            
# 특징추출 파라미터는 이미지넷으로 학습된 값들을 그대로 사용
resnet.trainable = False

# include_top=False 했으니, 마지막 레이어 수정
resnet_model = models.Sequential()
resnet_model.add(resnet)
resnet_model.add(layers.Flatten())
resnet_model.add(layers.Dense(8, activation='softmax'))

# resnet_model.summary()
resnet_model.compile(
    loss='categorical_crossentropy',
    optimizer='adam',
    metrics=['accuracy'])
    
train_datagen = ImageDataGenerator(rescale = 1./256)
test_datagen = ImageDataGenerator(rescale = 1./256)

train_set = train_datagen.flow_from_directory(
    train_path,
    target_size=IMAGE_SIZE,
    batch_size=32,
    class_mode='categorical'
)

test_set = test_datagen.flow_from_directory(
    test_path,
    target_size=IMAGE_SIZE,
    batch_size=32,
    class_mode='categorical'
)

history = resnet_model.fit(
    train_set,
    validation_data=test_set,
    epochs=50,
    steps_per_epoch=len(train_set),
    validation_steps=len(test_set)
)
profile
21세기 주인공

0개의 댓글