├── README.md ├── predict_image.py └── Lungs.py /README.md: -------------------------------------------------------------------------------- 1 | # Deep-Learning-in-Medical-Science -------------------------------------------------------------------------------- /predict_image.py: -------------------------------------------------------------------------------- 1 | ## Predicitng Models 2 | 3 | 4 | from keras.models import load_model 5 | from keras.preprocessing import image 6 | from keras.applications.vgg16 import preprocess_input 7 | import numpy as np 8 | model = load_model('model_vgg19.h5') 9 | img = image.load_img('val/PNEUMONIA/person1946_bacteria_4874.jpeg', target_size=(224, 224)) 10 | x = image.img_to_array(img) 11 | x = np.expand_dims(x, axis=0) 12 | img_data = preprocess_input(x) 13 | classes = model.predict(img_data) 14 | -------------------------------------------------------------------------------- /Lungs.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | # -*- coding: utf-8 -*- 4 | """ 5 | @author: Krish.Naik 6 | """ 7 | 8 | from keras.layers import Input, Lambda, Dense, Flatten 9 | from keras.models import Model 10 | from keras.applications.vgg16 import VGG16 11 | from keras.applications.vgg16 import preprocess_input 12 | from keras.preprocessing import image 13 | from keras.preprocessing.image import ImageDataGenerator 14 | from keras.models import Sequential 15 | import numpy as np 16 | from glob import glob 17 | import matplotlib.pyplot as plt 18 | 19 | # re-size all the images to this 20 | IMAGE_SIZE = [224, 224] 21 | 22 | train_path = 'Datasets/train' 23 | valid_path = 'Datasets/test' 24 | 25 | # add preprocessing layer to the front of VGG 26 | vgg = VGG16(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False) 27 | 28 | # don't train existing weights 29 | for layer in vgg.layers: 30 | layer.trainable = False 31 | 32 | 33 | 34 | # useful for getting number of classes 35 | folders = glob('Datasets/train/*') 36 | 37 | 38 | # our layers - you can add more if you want 39 | x = Flatten()(vgg.output) 40 | # x = Dense(1000, activation='relu')(x) 41 | prediction = Dense(len(folders), activation='softmax')(x) 42 | 43 | # create a model object 44 | model = Model(inputs=vgg.input, outputs=prediction) 45 | 46 | # view the structure of the model 47 | model.summary() 48 | 49 | # tell the model what cost and optimization method to use 50 | model.compile( 51 | loss='categorical_crossentropy', 52 | optimizer='adam', 53 | metrics=['accuracy'] 54 | ) 55 | 56 | 57 | from keras.preprocessing.image import ImageDataGenerator 58 | 59 | train_datagen = ImageDataGenerator(rescale = 1./255, 60 | shear_range = 0.2, 61 | zoom_range = 0.2, 62 | horizontal_flip = True) 63 | 64 | test_datagen = ImageDataGenerator(rescale = 1./255) 65 | 66 | training_set = train_datagen.flow_from_directory('Datasets/train', 67 | target_size = (224, 224), 68 | batch_size = 32, 69 | class_mode = 'categorical') 70 | 71 | test_set = test_datagen.flow_from_directory('Datasets/test', 72 | target_size = (224, 224), 73 | batch_size = 32, 74 | class_mode = 'categorical') 75 | 76 | 77 | # fit the model 78 | r = model.fit_generator( 79 | training_set, 80 | validation_data=test_set, 81 | epochs=5, 82 | steps_per_epoch=len(training_set), 83 | validation_steps=len(test_set) 84 | ) 85 | # loss 86 | plt.plot(r.history['loss'], label='train loss') 87 | plt.plot(r.history['val_loss'], label='val loss') 88 | plt.legend() 89 | plt.show() 90 | plt.savefig('LossVal_loss') 91 | 92 | # accuracies 93 | plt.plot(r.history['acc'], label='train acc') 94 | plt.plot(r.history['val_acc'], label='val acc') 95 | plt.legend() 96 | plt.show() 97 | plt.savefig('AccVal_acc') 98 | 99 | import tensorflow as tf 100 | 101 | from keras.models import load_model 102 | 103 | model.save('model_vgg19.h5') 104 | 105 | --------------------------------------------------------------------------------