Humza Ali commited on
Commit
e969727
·
verified ·
1 Parent(s): 2994590
Files changed (3) hide show
  1. demo_app.py +18 -0
  2. moleimages.py +107 -0
  3. mymodel-2.h5 +3 -0
demo_app.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from skimage import io
2
+ import base64
3
+ from tensorflow.keras.models import load_model
4
+ import numpy as np
5
+ import gradio
6
+ import moleimages
7
+
8
+ model = load_model("mymodel-2.h5")
9
+
10
+ def predict(input):
11
+ mimg = moleimages.MoleImages()
12
+ X = mimg.load_image(input)
13
+ y_pred = model.predict(X)
14
+ return {"Benign": float(y_pred[0][0]), "Malignant": float(1-y_pred[0][0])}
15
+
16
+ io = gradio.Interface(fn=predict, inputs='image', outputs='label', analytics_enabled=True,
17
+ title="Skin Cancer Detection FYP Model Demo", description="FYP Demo by FYP GROUP:- 20F-18 \n [Leader: Humza Ali \n | Members: Dilshad Hussain, Yasir Ali]")
18
+ io.launch()
moleimages.py ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from skimage import io
3
+ from skimage.transform import resize
4
+
5
+ import matplotlib.pyplot as plt
6
+ import glob
7
+ import h5py
8
+
9
+
10
+ class MoleImages():
11
+ def __init__(self, dir=None):
12
+ self.dir = dir
13
+ self.size = None
14
+
15
+ def resize_bulk(self, size=(128,128)):
16
+ '''
17
+ Resize Images and create matrix
18
+ Input: size of the images (128,128)
19
+ Output: Numpy array of (size,num_images)
20
+ '''
21
+ self.size = size
22
+ X = []
23
+ image_list = glob.glob(self.dir)
24
+ n_images = len(image_list)
25
+ print('Resizing {} images:'.format(n_images))
26
+ for i, imgfile in enumerate(image_list):
27
+ print('Resizing image {} of {}'.format(i+1, n_images))
28
+ img = io.imread(imgfile)
29
+ img = resize(img, self.size)
30
+ X.append(img)
31
+ return np.array(X)
32
+
33
+ def load_test_images(self, dir_b, dir_m):
34
+ X = []
35
+ image_list_b = glob.glob(dir_b + '/*.png')
36
+ n_images_b = len(image_list_b)
37
+ print('Loading {} images of class benign:'.format(n_images_b))
38
+ for i, imgfile in enumerate(image_list_b):
39
+ print('Loading image {} of {}'.format(i+1, n_images_b))
40
+ img = io.imread(imgfile)
41
+ X.append(img)
42
+ image_list_m = glob.glob(dir_m + '/*.png')
43
+ n_images_m = len(image_list_m)
44
+ print('Loading {} images of class benign:'.format(n_images_m))
45
+ for i, imgfile in enumerate(image_list_m):
46
+ print('Loading image {} of {}'.format(i+1, n_images_m))
47
+ img = io.imread(imgfile)
48
+ X.append(img)
49
+ y = np.hstack((np.zeros(n_images_b), np.ones(n_images_m)))
50
+
51
+ return np.array(X), y.reshape(len(y),1)
52
+
53
+ def load_image_from_filename(self, filename, size=(128,128)):
54
+ self.size = size
55
+ img = io.imread(filename)
56
+ img = resize(img, self.size, mode='constant') * 255
57
+ if img.shape[2] == 4:
58
+ img = img[:,:,0:3]
59
+ return img.reshape(1, self.size[0], self.size[1], 3)
60
+
61
+ def load_image(self, img, size=(128,128)):
62
+ self.size = size
63
+ img = resize(img, self.size, mode='constant', anti_aliasing=True,
64
+ anti_aliasing_sigma=None) * 255
65
+ if img.shape[2] == 4:
66
+ img = img[:, :, 0:3]
67
+ return img.reshape(1, self.size[0], self.size[1], 3)
68
+
69
+ def save_h5(self, X, filename, dataset):
70
+ '''
71
+ Save a numpy array to a data.h5 file specified.
72
+ Input:
73
+ X: Numpy array to save
74
+ filename: name of h5 file
75
+ dataset: label for the dataset
76
+ '''
77
+ with h5py.File(filename, 'w') as hf:
78
+ hf.create_dataset(dataset, data=X)
79
+ print('File {} saved'.format(filename))
80
+
81
+ def load_h5(self, filename, dataset):
82
+ '''
83
+ Load a data.h5 file specified.
84
+ Input: filename, dataset
85
+ Output: Data
86
+ '''
87
+ with h5py.File(filename, 'r') as hf:
88
+ return hf[dataset][:]
89
+
90
+ def save_png(self, matrix, dir, tag='img', format='png'):
91
+ for i, img in enumerate(matrix):
92
+ if dir[-1] != '/':
93
+ filename = dir + '/' + tag + str(i) + '.' + format
94
+ else:
95
+ filename = dir + tag + str(i) + '.' + format
96
+ print('Saving file {}'.format(filename))
97
+ io.imsave(filename, img)
98
+
99
+
100
+
101
+ if __name__ == '__main__':
102
+ # benign = MoleImages('data/malignant/*.jpg')
103
+ # ben_images = benign.resize_bulk()
104
+ # print('Shape of benign images: ', ben_images.shape)
105
+ # benign.save_h5(ben_images, 'benigns.h5', 'benign')
106
+ benign = MoleImages()
107
+ X = benign.load_h5('benigns.h5','benign')
mymodel-2.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:51e475095c9009d75af1daab0fbbd4a773d232a01df7bcb7e32046a476086c8c
3
+ size 10025768