Spaces:
Sleeping
Sleeping
File size: 3,815 Bytes
ee7397b 479cf4e |
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
import os
from PIL import Image as PILImage
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.media import Image as AgnoImage
import gradio as gr
# Set your API Key (Replace with your actual key)
GOOGLE_API_KEY = "AIzaSyCUPYFW5ESk1YIwSjwpGd3jZJJ7oPAX4_s"
os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY
# Ensure API Key is provided
if not GOOGLE_API_KEY:
raise ValueError("⚠️ Please set your Google API Key in GOOGLE_API_KEY")
# Initialize the Medical Agent
medical_agent = Agent(
model=Gemini(id="gemini-2.0-flash-exp"),
tools=[DuckDuckGoTools()],
markdown=True
)
# Medical Analysis Query
query = """
You are a highly skilled medical imaging expert with extensive knowledge in radiology and diagnostic imaging. Analyze the medical image and structure your response as follows:
### 1. Image Type & Region
- Identify imaging modality (X-ray/MRI/CT/Ultrasound/etc.).
- Specify anatomical region and positioning.
- Evaluate image quality and technical adequacy.
### 2. Key Findings
- Highlight primary observations systematically.
- Identify potential abnormalities with detailed descriptions.
- Include measurements and densities where relevant.
### 3. Diagnostic Assessment
- Provide primary diagnosis with confidence level.
- List differential diagnoses ranked by likelihood.
- Support each diagnosis with observed evidence.
- Highlight critical/urgent findings.
### 4. Patient-Friendly Explanation
- Simplify findings in clear, non-technical language.
- Avoid medical jargon or provide easy definitions.
- Include relatable visual analogies.
### 5. Research Context
- Use DuckDuckGo search to find recent medical literature.
- Search for standard treatment protocols.
- Provide 2-3 key references supporting the analysis.
Ensure a structured and medically accurate response using clear markdown formatting.
"""
# Function to analyze medical image
def analyze_medical_image(image):
"""Processes and analyzes a medical image using AI."""
if image is None:
return "⚠️ Please upload an image to analyze."
# Save the input image to a temporary file
temp_path = "temp_image.png"
image.save(temp_path)
# Create AgnoImage object
agno_image = AgnoImage(filepath=temp_path)
# Run AI analysis
try:
response = medical_agent.run(query, images=[agno_image])
return response.content
except Exception as e:
return f"⚠️ Analysis error: {e}"
finally:
# Clean up temporary file
if os.path.exists(temp_path):
os.remove(temp_path)
# Create Gradio interface
with gr.Blocks(title="Medical Image Analysis") as demo:
gr.Markdown(
"""
# 🩺 Medical Image Analysis Tool 🔬
Welcome to the **Medical Image Analysis** tool! 📸
Upload a medical image (X-ray, MRI, CT, Ultrasound, etc.), and our AI-powered system will analyze it,
providing detailed findings, diagnosis, and research insights.
Let's get started!
"""
)
with gr.Row():
with gr.Column(scale=1):
input_image = gr.Image(type="pil", label="Upload Medical Image")
analyze_button = gr.Button("Analyze Image", variant="primary")
with gr.Column(scale=2):
output_report = gr.Markdown(label="Analysis Report")
analyze_button.click(
fn=analyze_medical_image,
inputs=input_image,
outputs=output_report
)
# gr.Examples(
# examples=[
# "examples/xray_chest.jpg",
# "examples/mri_brain.jpg",
# "examples/ct_abdomen.jpg"
# ],
# inputs=input_image
# )
# Launch the application
if __name__ == "__main__":
demo.launch(debug=True, share=True) |