File size: 2,300 Bytes
d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 5c7cdbe d8e0712 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import gradio as gr
from src.pipeline import generate_report
# ------------------------------------------------------------------
# 1. Pre-load models on Space start-up
# ------------------------------------------------------------------
print("Pre-loading models for fast inference …")
try:
from src.tools_loader import get_tools # downloads BiomedCLIP + SPECTER-2
_ = get_tools()
print("Models pre-loaded successfully!")
except Exception as e:
print(f"Model pre-loading failed: {e}")
# ------------------------------------------------------------------
# 2. Inference wrapper
# ------------------------------------------------------------------
def process_upload(image_path: str):
"""Run the multi-agent pipeline on an uploaded chest X-ray."""
if image_path is None:
return "Please upload a chest X-ray image."
try:
report = generate_report(image_path)
return report
except Exception as e:
return f"Error processing image: {e}"
# ------------------------------------------------------------------
# 3. Gradio UI
# ------------------------------------------------------------------
with gr.Blocks(title="Multi-Agent Radiology Assistant") as demo:
gr.Markdown(
"""
# Multi-Agent Radiology Assistant
Upload a chest X-ray and receive an AI-generated report produced by a multi-agent pipeline.
"""
)
# --- Upload widget + button ------------------------------------------------
with gr.Column():
input_image = gr.Image(
type="filepath",
label="Upload Chest X-ray",
height=400
)
process_btn = gr.Button("Generate Report", variant="primary")
# --- Report output ---------------------------------------------------------
output_report = gr.Markdown(label="Radiology Report", show_label=True)
# --- Wire everything together ---------------------------------------------
process_btn.click(
fn=process_upload,
inputs=input_image,
outputs=output_report
)
gr.Markdown("### Need an example? \nUse any frontal CXR PNG file and click **Generate Report**.")
# ------------------------------------------------------------------
if __name__ == "__main__":
demo.launch() |