AIOmarRehan commited on
Commit
96b6606
·
verified ·
1 Parent(s): 98d00b6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -12
app.py CHANGED
@@ -1,8 +1,7 @@
 
1
  import gradio as gr
2
  from PIL import Image
3
- import random
4
  from datasets import load_dataset
5
-
6
  from app.model import predict, gradcam, CLASS_NAMES
7
 
8
  # Load HF dataset once at startup
@@ -15,17 +14,15 @@ def to_pil(example):
15
  return Image.fromarray(example)
16
 
17
  def get_random_image():
18
- """Return a random image from the HF dataset."""
19
  sample = random.choice(dataset)
20
- img = sample["image"] # dataset must have column "image"
21
- return to_pil(img)
22
 
23
 
24
  # Prediction and Grad-CAM logic
25
  def predict_fn(img):
26
  label, confidence, probs = predict(img)
27
  probs_sorted = {k: float(v) for k, v in sorted(probs.items(), key=lambda x: x[1], reverse=True)}
28
- return {
29
  "Predicted label": label,
30
  "Confidence": round(confidence, 3),
31
  "Class probabilities": probs_sorted
@@ -44,28 +41,27 @@ with gr.Blocks(title="Brain Tumor MRI Classifier (InceptionV3 + Grad-CAM)") as d
44
  with gr.Row():
45
  with gr.Column():
46
  input_img = gr.Image(type="pil", label="Upload MRI Image")
47
-
48
  random_btn = gr.Button("Use Random Dataset Image")
49
-
50
  interpolant_slider = gr.Slider(0, 1, value=0.5, label="Grad-CAM Intensity (interpolant)")
51
  submit_btn = gr.Button("Run Prediction + Grad-CAM")
52
 
53
  with gr.Column():
 
54
  output_json = gr.JSON(label="Prediction Results")
55
  output_cam = gr.Image(label="Grad-CAM Overlay")
56
 
57
- # Button: Load random dataset image
58
  random_btn.click(
59
  fn=lambda: get_random_image(),
60
  inputs=[],
61
  outputs=[input_img]
62
  )
63
 
64
- # Button: Run prediction
65
  submit_btn.click(
66
- fn=lambda img, interp: (predict_fn(img), gradcam_fn(img, interp)),
67
  inputs=[input_img, interpolant_slider],
68
- outputs=[output_json, output_cam]
69
  )
70
 
71
  demo.launch()
 
1
+ import random
2
  import gradio as gr
3
  from PIL import Image
 
4
  from datasets import load_dataset
 
5
  from app.model import predict, gradcam, CLASS_NAMES
6
 
7
  # Load HF dataset once at startup
 
14
  return Image.fromarray(example)
15
 
16
  def get_random_image():
 
17
  sample = random.choice(dataset)
18
+ return to_pil(sample["image"])
 
19
 
20
 
21
  # Prediction and Grad-CAM logic
22
  def predict_fn(img):
23
  label, confidence, probs = predict(img)
24
  probs_sorted = {k: float(v) for k, v in sorted(probs.items(), key=lambda x: x[1], reverse=True)}
25
+ return label, {
26
  "Predicted label": label,
27
  "Confidence": round(confidence, 3),
28
  "Class probabilities": probs_sorted
 
41
  with gr.Row():
42
  with gr.Column():
43
  input_img = gr.Image(type="pil", label="Upload MRI Image")
 
44
  random_btn = gr.Button("Use Random Dataset Image")
 
45
  interpolant_slider = gr.Slider(0, 1, value=0.5, label="Grad-CAM Intensity (interpolant)")
46
  submit_btn = gr.Button("Run Prediction + Grad-CAM")
47
 
48
  with gr.Column():
49
+ output_label = gr.Textbox(label="Predicted Label Only")
50
  output_json = gr.JSON(label="Prediction Results")
51
  output_cam = gr.Image(label="Grad-CAM Overlay")
52
 
53
+ # Load random image
54
  random_btn.click(
55
  fn=lambda: get_random_image(),
56
  inputs=[],
57
  outputs=[input_img]
58
  )
59
 
60
+ # Prediction + GradCAM
61
  submit_btn.click(
62
+ fn=lambda img, interp: (*predict_fn(img), gradcam_fn(img, interp)),
63
  inputs=[input_img, interpolant_slider],
64
+ outputs=[output_label, output_json, output_cam]
65
  )
66
 
67
  demo.launch()