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

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files

DATA 나누기 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#Spliting data 
import random
import os
import shutil
import numpy as np
from numpy import *
 
base_path = os.getcwd()
data_path = os.path.join(base_path, "train"
categories = os.listdir(data_path)
test_path = os.path.join(base_path, "val")
 
for cat in categories:
    image_files = os.listdir(os.path.join(data_path, cat))
    choices = np.random.choice([01], size=(len(image_files),), p=[.8, .2])
    files_to_move = compress(choices, image_files)
    
    for _f in files_to_move:
        origin_path = os.path.join(data_path, cat,  _f)
        dest_dir = os.path.join(test_path, cat)
        dest_path = os.path.join(test_path, cat, _f)
        if not os.path.isdir(dest_dir):
            os.mkdir(dest_dir)
        shutil.move(origin_path, dest_path)
cs
Model 구현
1
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
import os
import re
import numpy as np
import random as rn
import keras
import tensorflow as tf
from keras import backend as K    
from keras.models import Model
from keras.layers import (
    Conv2D,
    MaxPooling2D,
    ZeroPadding2D,
)
from sklearn.preprocessing import LabelBinarizer
from keras.layers.normalization import BatchNormalization
from keras.initializers import he_normal
 
from keras import optimizers
from keras.callbacks import TensorBoard
from keras.preprocessing.image import ImageDataGenerator
from keras import regularizers
import matplotlib.pyplot as plt
from PIL import Image
from IPython.display import display
from sklearn.metrics import accuracy_score, f1_score
import vgg_19
import scipy.io
 
#Parameters
batch_size        = 32
num_classes       = 101
epochs            = 50
weight_decay      = 0.01
steps_per_epoch   = 9146 / batch_size
log_filepath      = '/tmp/caltech101/vgg19'
dropout           = 0.5
image_input_shape = (2242243,)
train_data_dir    = 'data/101_ObjectCategories/train'
val_data_dir      = 'data/101_ObjectCategories/val'
annotation_dir    = 'data/101_Annotations'
 
#Loading the data
catagories = os.listdir('data/101_ObjectCategories/train')
catagories_one_hot = LabelBinarizer().fit_transform(catagories)
 
#VGG19 model
vgg19_model = vgg_19.build_vgg19_model(image_input_shape, num_classes, dropout, weight_decay)
adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, decay=1e-6)
vgg19_model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['acc'])
 
tb_cb = TensorBoard(log_dir=os.path.join(os.path.join(log_filepath, 'v199_anno'), 'model_vgg_19'))
 
mean = [103.939116.779123.68]
def prep_image(im):    
    # Convert to BGR
    im = im[:,:, ::-1]
    im[..., 0-= mean[0]
    im[..., 1-= mean[1]
    im[..., 2-= mean[2]
    return im
 
train_datagen = ImageDataGenerator(
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    preprocessing_function=prep_image,
    rescale=1./255)
train_generator = train_datagen.flow_from_directory(
        train_data_dir,
        target_size=image_input_shape[:-1],
        batch_size=batch_size,
        class_mode='categorical')
val_datagen = ImageDataGenerator(
    preprocessing_function=prep_image,
    rescale=1./255)
val_generator = train_datagen.flow_from_directory(
        val_data_dir,
        target_size=image_input_shape[:-1],
        batch_size=batch_size,
        shuffle=False,   # Important to set to False in order to print falsely classified images
        class_mode='categorical')
 
vgg19_model.fit_generator(
    train_generator, epochs=epochs, 
    validation_data=val_generator,
    steps_per_epoch=steps_per_epoch, 
    callbacks=[tb_cb], 
    max_queue_size=100
)
 
#Save the code for further reuse
vgg19_model.save('model_vgg19_snapshot.h5')
 
#Analyze the result
v19_results = vgg19_model.predict_generator(val_generator)
v19_predicted = v19_results.argmax(axis=-1)
actual = val_generator.classes
key_to_label = {v: k for k, v in val_generator.class_indices.items()}
 
incorrect_indexes = np.nonzero(v19_predicted != actual)[0]
 
print('Total {0} incorrectly classified images out of {1}'.format(len(incorrect_indexes), len(v19_results)))
print('Accuracy: {0}'.format(accuracy_score(actual, v19_predicted)))
print('f1 score: {0}'.format(f1_score(actual, v19_predicted, average='weighted')))
 
#Plot incorrectly classified images
def plot_incorrect_images(predicted, actual):
    for i, (_actual, _predicted) in enumerate(zip(actual, predicted)):
        if not _actual == _predicted:
            image_file_name = val_generator.filenames[i]
            im = Image.open(os.path.join(val_data_dir, image_file_name))
            im.thumbnail((128128), Image.ANTIALIAS)
            display(im)
            print('Predicted: {0}\nActual   : {1}'.format(key_to_label[_predicted], key_to_label[_actual]))
plot_incorrect_images(v19_predicted, actual)
cs

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 우수 코드 게시판 이용 관련 공지사항 DataMarket 2014.05.21 36005
» 투빅스 10기&11기 8주차 CNN 심화 [VGG 구현]- 11기 홍지은 file 오디빛 2019.03.27 216
152 투빅스 10기&11기 8주차 CNN 심화 - 11기 정혜인 file 정혜인 2019.03.27 169
151 투빅스 10기&11기 7주차 NLP - 11기 김유민 file 2019.03.21 208
150 투빅스 10기&11기 7주차 Algorithm - 11기 한재연 file 한재연 2019.03.20 158
149 투빅스 10기&11기 7주차 CNN (Alexnet) - 11기 심은선 file 심은선 2019.03.15 157
148 투빅스 10기&11기 7주차 - NLP - 11기 유기윤 file 유기윤 2019.03.14 175
147 투빅스 10기&11기 6주차 Advanced Neural Network - 11기 김대웅 file 김대웅 2019.03.12 166
146 투빅스 10기&11기 5주차 Neural Network - 11기 김대웅 file 김대웅 2019.03.07 185
145 투빅스 10기&11기 4주차 Algorithm - 10기 정윤호 UNOVATE 2019.03.04 159
144 투빅스 10기&11기 4주차 ML Performance Tuning - 11기 김대웅 김대웅 2019.02.22 211
143 투빅스 10기&11기 4주차 PCA - 11기 임채빈 임채빈 2019.02.22 200
142 투빅스 10기&11기 3주차 Clustering - 11기 한재연 file 한재연 2019.02.16 219
141 투빅스 10기&11기 3주차 Decision Tree - 11기 김유민 file 2019.02.15 210
140 투빅스 10기&11기 3주차 Clustering - 11기 김대웅 file 김대웅 2019.02.15 223
139 투빅스 10기&11기 3주차 Algorithm - 11기 한재연 file 한재연 2019.02.15 179
138 투빅스 10기&11기3주차 앙상블(Kaggle HousePrice) - 11기 이소라 file 소라찌 2019.02.15 216
137 투빅스 10기&11기 2주차 SVM, Naive Bayes, KNN - 11기 유기윤 file 유기윤 2019.02.02 305
136 투빅스 10기&11기 2주차 SVM, Naive Bayes, KNN - 11기 김대웅 file 김대웅 2019.01.31 431
135 투빅스 10기&11기 1주차 Algorithm - 11기 한재연 1 file 한재연 2019.01.31 519
134 투빅스 10기&11기 1주차 Algorithm - 11기 권혜민 file 권혜민 2019.01.31 409
Board Pagination ‹ Prev 1 2 3 4 5 6 7 ... 8 Next ›
/ 8

나눔글꼴 설치 안내


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

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

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5