close_btn
조회 수 795 추천 수 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 40434
168 투빅스 11기&12기 3주차 Naive bayes - 12기 김태한 12기김태한 2019.08.19 42
167 투빅스 11기&12기 4주차 Clustering - 12기 신윤종 file yj 2019.08.17 47
166 투빅스 11기&12기 4주차 Decision Tree - 12기 김탁영 file 2019.08.17 47
165 투빅스 11기&12기 3주차 알고리즘 - 12기 김효은 file 김효은 2019.08.16 53
164 투빅스 11기&12기 2주차 로지스틱 회귀(2) - 12기 조민호 file dizwe 2019.08.14 39
163 투빅스 11기&12기 3주차 알고리즘 - 11기 이도연 file 도연 2019.08.14 70
162 투빅스 11기&12기 3주차 KNN - 12기 김주호 file 김주호 2019.08.14 34
161 투빅스 11기&12기 2주차 로지스틱회귀(2) - 12기 김태한 12기김태한 2019.08.10 90
160 투빅스 11기&12기 2주차 로지스틱회귀(1) - 12기 김태한 file 12기김태한 2019.08.10 70
159 투빅스 11기&12기 1주차 알고리즘 - 이유진 file yooj_lee 2019.08.06 125
158 투빅스 11기&12기 2주차 로지스틱회귀 - 12기 이홍정 file 올타임넘버원메시 2019.08.05 96
157 투빅스 11기&12기 1주차 알고리즘 - 12기 조민호 file dizwe 2019.08.04 99
156 투빅스 11기&12기 2주차 회귀분석 - 12기 김주호 file 김주호 2019.08.04 102
155 투빅스 11기&12기 1주차 전처리&EDA - 12기 박재민 file jaemin0095 2019.07.28 158
154 투빅스 11기&12기 1주차 전처리&EDA 과제 2 - 12기 이홍정 file 올타임넘버원메시 2019.07.28 128
153 투빅스 11&12기 1주차 전처리와 EDA 과제1 - 12기 김태욱 Uk 2019.07.26 177
» 투빅스 10기&11기 8주차 CNN 심화 [VGG 구현]- 11기 홍지은 file 오디빛 2019.03.27 795
151 투빅스 10기&11기 8주차 CNN 심화 - 11기 정혜인 file 정혜인 2019.03.27 623
150 투빅스 10기&11기 7주차 NLP - 11기 김유민 file 2019.03.21 676
149 투빅스 10기&11기 7주차 Algorithm - 11기 한재연 file 한재연 2019.03.20 544
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 ... 9 Next ›
/ 9

나눔글꼴 설치 안내


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

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

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5