close_btn
조회 수 1226 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
과제 1
오늘 배운 모델 (VGG, GoogLe, Res 등) 아무거나 활용해서 Caltech101 데이터를 학습하고 테스트 해보세요
1. Data Pre-Processing¶
1-1. Read Data
import os
import cv2
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
import random
from tqdm import tqdm
from google.colab import drive
drive.mount('/content/gdrive',force_remount = True)
%%time
X=[]
y=[]
path='/content/gdrive/My Drive/Colab Notebooks/101_ObjectCategories'
category_list=os.listdir(path)
for category in tqdm(category_list):
    imges=os.listdir(path+'/'+category)
    for img in imges:
        data=cv2.imread(path+'/'+category+'/'+img)
        data=cv2.resize(data,(224,224))
        label=category
        X.append(data)
        y.append(label)
X=np.array(X)
y=np.array(y)
encoder=LabelEncoder()
labels=encoder.fit_transform(y)
from keras.utils import to_categorical
display(labels.shape)
labels = to_categorical(labels, num_classes=None)
display(labels.shape)
import matplotlib
from matplotlib import pyplot as plt
%matplotlib inline
plt.figure(figsize=(5,5))
plt.imshow(X[0])
plt.title(y[0])
plt.show()
 
1-2 Processing
X= X/255
from sklearn.model_selection import train_test_split
#X_train, X_test, y_train, y_test = train_test_split(X,labels,test_size=0.2,random_state=7)
train_data, validation_data, train_label, validation_label = train_test_split(X,labels,test_size=0.2,random_state=7)
del X
#Augmentation
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
    featurewise_center=False,  # set input mean to 0 over the dataset
    samplewise_center=False,  # set each sample mean to 0
    featurewise_std_normalization=False,  # divide inputs by std of the dataset
    samplewise_std_normalization=False,  # divide each input by its std
    rotation_range=0,  # randomly rotate images in the range (degrees, 0 to 180)
    width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)
    height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)
    horizontal_flip=True,  # randomly flip images
    vertical_flip=False)  # randomly flip images
datagen.fit(train_data)
2. Modeling
2-1. ResNet
from keras import models, layers
from keras import Input
from keras.models import Model, load_model
from keras.preprocessing.image import ImageDataGenerator
from keras import optimizers, initializers, regularizers, metrics
from keras.callbacks import ModelCheckpoint, EarlyStopping
from keras.layers import BatchNormalization, Conv2D, Activation, Dense, GlobalAveragePooling2D, MaxPooling2D, ZeroPadding2D, Add
from keras import optimizers
from keras.optimizers import adam
from keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
Just ResNet ( Not Trained )
resnet_not_trained=ResNet50(include_top=True,input_shape=(224,224,3))
model = models.Sequential()
model.add(resnet_not_trained)
model.add(layers.Dense(102,activation = 'softmax'))
model.summary()
batch_size = 32
history = model.fit_generator(datagen.flow(train_data, train_label,
                                           batch_size=batch_size),
                              steps_per_epoch= (train_data.shape[0// batch_size),
                              epochs = 50,
                              validation_data=(validation_data,validation_label))
Train loss, Validation loss 모두 천천히 줄어든다 ( 에폭을 더 돌리면, 더 줄일 수 있을듯)
 
3.1 Transfer Learning
 
snet5
from keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
resnet = ResNet50(weights = 'imagenet', include_top = False, input_shape = (224,224,3))
model = models.Sequential()
model.add(resnet)
model.add(layers.Flatten())
model.add(layers.Dense(102,activation = 'softmax'))
model.summary()
Model: "sequential_3"
# resnet를 동결
print('resnet 동결하기 전 훈련되는 레이어의 수 :',len(model.trainable_weights))
resnet.trainable = False
print('resnet을 동결한 후 훈련되는 레이어의 수:',len(model.trainable_weights))
resnet 동결하기 전 훈련되는 레이어의 수 : 216
resnet을 동결한 후 훈련되는 레이어의 수: 4
model.compile(loss = 'categorical_crossentropy',
             optimizer = adam(),
             metrics = ['acc'])
batch_size = 32
history = model.fit_generator(datagen.flow(train_data, train_label,
                                           batch_size=batch_size),
                              steps_per_epoch= (train_data.shape[0// batch_size),
                              epochs = 50,
                              validation_data=(validation_data,validation_label))

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 우수 코드 게시판 이용 관련 공지사항 DataMarket 2014.05.21 43164
» 투빅스 11기&12기 9주차 CNN심화(1) - 12기 김주호 file 김주호 2019.09.25 1226
186 투빅스 11기&12기 9주차 CNN심화(2) - 12기 김태한 file 12기김태한 2019.09.25 879
185 투빅스 11기&12기 8주차 CNN심화(3) - 12기 배유나 file 배유나 2019.09.24 981
184 투빅스 11기&12기 8주차 CNN심화(4) - 12기 배유나 file 배유나 2019.09.24 977
183 투빅스 11기&12기 8주차 CNN - 12기 박재민 jaemin0095 2019.09.23 913
182 투빅스 11기&12기 8주차 NLP기초 - 12기 박진혁 file 박진혁 2019.09.21 947
181 투빅스 11기&12기 8주차 NLP - 12기 김주호 file 김주호 2019.09.20 857
180 투빅스 11기&12기 7주차 알고리즘(1) - 12기 김탁영 file 2019.09.19 889
179 투빅스 11기&12기 7주차 알고리즘(2) - 김효은 file 김효은 2019.09.17 836
178 투빅스 11기&12기 7주차 프레임워크(PyTorch) - 12기 신윤종 file yj 2019.09.16 889
177 투빅스 11기&12기 6주차 크롤링 - 이유진 yooj_lee 2019.09.04 874
176 투빅스 11기&12기 6주차 크롤링 - 12기 신윤종 file yj 2019.08.31 811
175 투빅스 11기&12기 6주차 크롤링 - 12기 김주호 file 김주호 2019.08.31 861
174 투빅스 11기&12기 5주차 알고리즘 - 12기 김탁영 2019.08.29 856
173 투빅스 11기&12기 5주차 SVM - 12기 이홍정 올타임넘버원메시 2019.08.27 896
172 투빅스 11기&12기 5주차 PCA - 12기 김태한 file 12기김태한 2019.08.27 927
171 투빅스 11기&12기 4주차 Ensemble - 12기 배유나 배유나 2019.08.26 892
170 투빅스 11기&12기 5주차 Class - 12기 이세윤 세윤 2019.08.26 825
169 투빅스 11기&12기 3주차 Naive bayes - 12기 김태한 12기김태한 2019.08.19 849
168 투빅스 11기&12기 4주차 Clustering - 12기 신윤종 file yj 2019.08.17 867
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 ... 10 Next ›
/ 10

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5