CardioGuard-AI / app.py
talha420's picture
moved gradcam inside app
bd2cbcd
import gradio as gr
import numpy as np
from app.predictor import predict_disease, compute_ai_risk
from app.gradcam import generate_gradcam
def predict(image):
if image is None:
return "Upload image first", None
label, confidence, tensor, original = predict_disease(image)
# GradCAM
heatmap = generate_gradcam(tensor, label)
# ensure numpy
heatmap = np.array(heatmap)
# safe normalization
heatmap = heatmap.astype(np.float32)
if heatmap.max() > 1:
heatmap = heatmap / 255.0
heatmap = np.clip(heatmap, 0, 1)
heatmap = (heatmap * 255).astype(np.uint8)
# ensure RGB format
if len(heatmap.shape) == 2:
heatmap = np.stack([heatmap]*3, axis=-1)
risk = compute_ai_risk(label, confidence, heatmap)
report = (
"🫀 CardioGuard AI Report\n\n"
f"Disease: {label}\n"
f"Confidence: {confidence*100:.2f}%\n"
f"Risk: {risk}"
)
return report, heatmap
demo = gr.Blocks()
with demo:
gr.Markdown("# 🫀 CardioGuard AI")
with gr.Row():
img = gr.Image(type="pil")
out2 = gr.Image()
out1 = gr.Textbox(label="Report")
btn = gr.Button("Analyze")
btn.click(
fn=predict,
inputs=img,
outputs=[out1, out2]
)
demo.queue()
demo.launch(
server_name="0.0.0.0",
server_port=7860
)