Commit 0c71a422 authored by Saluk Bawantha's avatar Saluk Bawantha

Merge branch 'IT18124354_SALUKB.M.M' into 'master'

Create Model

See merge request !13
parents a573d2fd 7760321d
.idea
data
model_saved.h5
\ No newline at end of file
# importing libraries
import keras, tensorflow
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
img_width, img_height = 350, 350
train_data_dir = 'data/train'
validation_data_dir = 'data/test'
nb_train_samples = 168
nb_validation_samples = 20
epochs = 20
batch_size = 20
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
model = Sequential()
model.add(Conv2D(32, (2, 2), input_shape = input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size =(2, 2)))
model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size =(2, 2)))
model.add(Conv2D(64, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size =(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss ='sparse_categorical_crossentropy',
optimizer ='adam',
metrics =['accuracy'])
train_datagen = ImageDataGenerator(
rescale = 1. / 255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1. / 255)
train_generator = train_datagen.flow_from_directory(train_data_dir,
target_size =(img_width, img_height),
batch_size = batch_size, class_mode ='sparse')
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size =(img_width, img_height),
batch_size = batch_size, class_mode ='sparse')
model.fit_generator(train_generator,
steps_per_epoch = nb_train_samples // batch_size,
epochs = epochs, validation_data = validation_generator,
validation_steps = nb_validation_samples // batch_size)
model.save_weights('model_saved.h5')
from keras.layers import Activation
import keras
import numpy as np
import tensorflow
from keras import backend as K
from keras.layers import Activation
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Dense, Dropout, Flatten
from keras.models import Sequential
print(tensorflow.__version__)
print(keras.__version__)
def predictImageClass(image):
K.clear_session()
tensorflow.reset_default_graph()
nb_train_samples = 112
nb_validation_samples = 20
epochs = 10
batch_size = 2
img_width, img_height = 350, 350
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
modelI = Sequential()
modelI.add(Conv2D(32, (2, 2), input_shape=input_shape))
modelI.add(Activation('relu'))
modelI.add(MaxPooling2D(pool_size=(2, 2)))
modelI.add(Conv2D(32, (2, 2)))
modelI.add(Activation('relu'))
modelI.add(MaxPooling2D(pool_size=(2, 2)))
modelI.add(Conv2D(64, (2, 2)))
modelI.add(Activation('relu'))
modelI.add(MaxPooling2D(pool_size=(2, 2)))
modelI.add(Flatten())
modelI.add(Dense(64))
modelI.add(Activation('relu'))
modelI.add(Dropout(0.5))
modelI.add(Dense(2))
modelI.add(Activation('softmax'))
modelI.compile(loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
modelI.load_weights('model_saved.h5')
sess = keras.backend.get_session()
# image = request.args.get('image', default = 1, type = str)
print("------------------")
print(image)
print("------------------")
img = tensorflow.read_file(image)
img = tensorflow.image.decode_jpeg(img, channels=3)
img.set_shape([None, None, 3])
img = tensorflow.image.resize_images(img, (350, 350))
img = img.eval(session=sess) # convert to numpy array
img = np.expand_dims(img, 0) # make 'batch' of 1
pred = modelI.predict(img)
# pred = labels["label_names"][np.argmax(pred)]
print(pred)
y = ["Ring worms", "Sarcoptic & demodectic mange"]
print(np.argmax(pred))
print(y[np.argmax(pred)])
return y[np.argmax(pred)]
predictImageClass("data/test/Ringworm/Ringworm1.jpg")
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment