Docfile commited on
Commit
70ce10a
·
1 Parent(s): 968c83f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -0
app.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ from skimage.transform import resize
4
+ from tensorflow.keras.models import Sequential, load_model
5
+ from tensorflow.keras.layers import Conv2D, MaxPool2D, Dropout, Dense, Flatten, BatchNormalization
6
+
7
+ class SkinCancer :
8
+ def __init__ (self):
9
+ self.model = self.load_model()
10
+
11
+ def build_model (self) :
12
+ model = Sequential()
13
+ model.add(Conv2D(filters = 128, kernel_size = (4,4), input_shape = (32, 32, 3), activation = 'relu'))
14
+ model.add(MaxPool2D(pool_size = (4,4)))
15
+ model.add(Conv2D(filters = 64, kernel_size = (2,2), activation = 'relu'))
16
+ model.add(MaxPool2D(pool_size = (2,2)))
17
+ model.add(BatchNormalization())
18
+ #model.add(GlobalAveragePooling2D())
19
+ model.add(Flatten())
20
+ model.add(Dense(128, activation = 'relu'))
21
+ model.add(Dropout(0.2))
22
+ model.add(Dense(2, activation = 'sigmoid')) # sigmoid is better for binary classification
23
+ #model.summary()
24
+ return model
25
+
26
+ def load_model(self):
27
+ model = self.build_model()
28
+ model = load_model("Normal_skin_cancer_model.h5")
29
+ return model
30
+
31
+ def preprocess_image(self,img):
32
+ img = resize(img, (32,32))
33
+ img = img.reshape(1,32,32,3)
34
+ return img
35
+
36
+ def predict(self,img):
37
+ real_labels = ["benign", "malignant"]
38
+ img = self.preprocess_image(img)
39
+ res = np.argmax(self.model.predict(img))
40
+ return real_labels[res]
41
+
42
+ def Test(img):
43
+ model_new = SkinCancer()
44
+ res = model_new.predict(img)
45
+ return res
46
+ #interface
47
+ interface = gr.Interface(fn = Test,
48
+ inputs = gr.inputs.Image(shape=(200,200)),
49
+ outputs=["text"],
50
+ title="Skin Cancer detection")
51
+ interface.launch()