yaraa11 commited on
Commit
2ce14ec
·
verified ·
1 Parent(s): 79ba3a2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -4
app.py CHANGED
@@ -4,6 +4,27 @@ from tensorflow.keras.models import load_model
4
  from tensorflow.keras import backend as K
5
  from PIL import Image
6
  from huggingface_hub import hf_hub_download
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
  # -----------------------
9
  # Custom metric
@@ -46,15 +67,15 @@ def predict(img):
46
  orig_size = img.size # (width, height)
47
 
48
  # Resize image for model
49
- img_gray = img.convert("L").resize((224, 224))
50
- x = np.expand_dims(np.expand_dims(np.array(img_gray)/255.0, -1), 0)
51
-
52
  # Predict mask
53
  pred = model.predict(x)[0]
54
  tumor_present = pred.max() > 0.7
55
 
56
  if tumor_present:
57
- mask = (pred > 0.7).astype(np.uint8) * 255
58
  mask_img = Image.fromarray(mask.squeeze()).convert("L")
59
 
60
  # Resize mask back to original image size
 
4
  from tensorflow.keras import backend as K
5
  from PIL import Image
6
  from huggingface_hub import hf_hub_download
7
+ import cv2
8
+
9
+
10
+ # -----------------------
11
+ # Preprocessing
12
+ # -----------------------
13
+ def preprocess(img):
14
+ img_gray = np.array(img.convert("L")) # grayscale
15
+ img_resized = cv2.resize(img_gray, (256, 256)) # resize to model input
16
+ clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
17
+ img_clahe = clahe.apply(img_resized) # enhance contrast
18
+ img_norm = img_clahe / 255.0 # normalize to [0,1]
19
+ return img_norm
20
+ from skimage import measure
21
+
22
+ def remove_small_blobs(mask, min_size=50):
23
+ labels = measure.label(mask)
24
+ for region in measure.regionprops(labels):
25
+ if region.area < min_size:
26
+ mask[labels == region.label] = 0
27
+ return mask
28
 
29
  # -----------------------
30
  # Custom metric
 
67
  orig_size = img.size # (width, height)
68
 
69
  # Resize image for model
70
+ img_processed = preprocess(img) # preprocess function
71
+ x = np.expand_dims(np.expand_dims(img_processed, -1), 0)
72
+
73
  # Predict mask
74
  pred = model.predict(x)[0]
75
  tumor_present = pred.max() > 0.7
76
 
77
  if tumor_present:
78
+ mask = remove_small_blobs(mask, min_size=50)
79
  mask_img = Image.fromarray(mask.squeeze()).convert("L")
80
 
81
  # Resize mask back to original image size