Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.42 KB | None | 0 0
  1. from keras.models import Sequential
  2. from keras.layers import Conv2D
  3. from keras.layers import MaxPooling2D
  4. from keras.layers import Flatten
  5. from keras.layers import Dense
  6. from keras.layers import concatenate
  7. from keras.models import Model
  8. from keras.utils import plot_model
  9. from keras.engine.input_layer import Input
  10. from keras.preprocessing.image import ImageDataGenerator
  11. from keras.preprocessing.image import img_to_array
  12. import numpy as np
  13. from keras.preprocessing import image
  14. from sklearn.preprocessing import MultiLabelBinarizer
  15. import cv2
  16. import os
  17. import shutil
  18.  
  19. train_path = "D:\Work\Project\\data_train\\"
  20. old_data_path = "D:\Work\Project\Dictionary_word\\"
  21. number_of_copy = 5
  22. def create_y_train():
  23.     f = open("label.txt","r")
  24.     count_line = 0
  25.     label_list = []
  26.     for line in f:
  27.         label_list_string = line.strip('\n').split(" ")
  28.         label_list_temp = []
  29.         if count_line % 2 == 0:
  30.             for i in label_list_string:
  31.                 label_list_temp.append(int(i))
  32.             for i in range(number_of_copy):
  33.                 label_list.append(label_list_temp)
  34.         count_line = count_line + 1
  35.     mlb = MultiLabelBinarizer()
  36.     return mlb.fit_transform(label_list)
  37.  
  38. def create_x_train():
  39.     data_train = []
  40.     for file in os.listdir(train_path):
  41.         print (file)
  42.         img = cv2.imread(train_path + file)
  43.         img = cv2.resize(img,(32,32))
  44.         img = img_to_array(img)
  45.         data_train.append(img)
  46.     return data_train
  47.  
  48.  
  49. def save_file_to_train():
  50.     file_number = 0
  51.     for folder in os.listdir(old_data_path):
  52.         path_img = old_data_path + folder + "\\"
  53.         for file in os.listdir(path_img):
  54.             shutil.copy2(path_img + file, train_path + "{:09d}".format(file_number) + ".bmp")
  55.             file_number += 1
  56.             # img = cv2.imread(path_img+file)
  57.             # img = cv2.resize(img, (100, 50))
  58.  
  59. def create_model():
  60.     # Initialising the CNN
  61.     input_shape = Input(shape=(32, 32, 3))
  62.     # Step 1 - Convolution
  63.     feature_extract = Conv2D(32, (3, 3), activation = 'relu')(input_shape)
  64.     feature_extract = MaxPooling2D(pool_size = (2, 2))(feature_extract)
  65.  
  66.     feature_extract = Conv2D(32, (3, 3), activation = 'relu')(feature_extract)
  67.     feature_extract = MaxPooling2D(pool_size = (2, 2))(feature_extract)
  68.  
  69.     tone_mark_phase = Flatten()(feature_extract)
  70.     tone_mark_phase = Dense(units = 128, activation = 'relu')(tone_mark_phase)
  71.     tone_mark_phase = Dense(units = 6, activation = 'softmax')(tone_mark_phase)
  72.  
  73.     upper_vowel_phase = Flatten()(feature_extract)
  74.     upper_vowel_phase = Dense(units = 128, activation = 'relu')(upper_vowel_phase)
  75.     upper_vowel_phase = Dense(units = 6, activation = 'softmax')(upper_vowel_phase)
  76.  
  77.     alphabet_phase = Flatten()(feature_extract)
  78.     alphabet_phase = Dense(units = 128, activation = 'relu')(alphabet_phase)
  79.     alphabet_phase = Dense(units = 56, activation = 'softmax')(alphabet_phase)
  80.  
  81.     lower_vowel_phase = Flatten()(feature_extract)
  82.     lower_vowel_phase = Dense(units = 128, activation = 'relu')(lower_vowel_phase)
  83.     lower_vowel_phase = Dense(units = 3, activation = 'softmax')(lower_vowel_phase)
  84.  
  85.     out = concatenate([tone_mark_phase, upper_vowel_phase, alphabet_phase,lower_vowel_phase], axis=1)
  86.  
  87.     tone_mark_model = Model(input_shape,tone_mark_phase)
  88.     upper_vowel_model = Model(input_shape,upper_vowel_phase)
  89.     alphabet_model = Model(input_shape,alphabet_phase)
  90.     lower_vowel_model = Model(input_shape,lower_vowel_phase)
  91.    
  92.     o_model = Model(input_shape,out)
  93.  
  94.     plot_model(tone_mark_model, to_file="tone_mark.png")
  95.     plot_model(upper_vowel_model, to_file="upper.png")
  96.     plot_model(alphabet_model, to_file="alphabet.png")
  97.     plot_model(lower_vowel_model, to_file="lower.png")
  98.     plot_model(o_model, to_file="o.png")
  99.     return o_model
  100.  
  101.  
  102. # save_file_to_train()
  103. x_train = create_x_train()
  104. y_train = create_y_train()
  105. print ("x_train , y_train created !!")
  106. model = create_model()
  107. print ("model created !!")
  108. model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
  109.  
  110. train_datagen = ImageDataGenerator(rescale = 1./255,
  111.                                    shear_range = 0.2,
  112.                                    zoom_range = 0.2,
  113.                                    horizontal_flip = True)
  114. model.fit_generator(train_datagen.flow(x_train, y_train, batch_size=25))
  115.  
  116. model.save('test_run_data_alphabet_classification.model')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement