Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from web_backend import predict_image_pil | |
| def analyze_image(image): | |
| label, confidence, heatmap = predict_image_pil(image) | |
| if label == "Fake": | |
| if confidence >= 90: | |
| risk = "🚨 High likelihood of Deepfake" | |
| elif confidence >= 60: | |
| risk = "⚠️ Possibly Deepfake" | |
| else: | |
| risk = "⚠️ Uncertain Deepfake" | |
| else: | |
| if confidence >= 90: | |
| risk = "✅ Likely Real" | |
| elif confidence >= 60: | |
| risk = "⚠️ Possibly Real" | |
| else: | |
| risk = "⚠️ Uncertain – Needs Review" | |
| return label, f"{confidence} %", risk, heatmap | |
| with gr.Blocks() as demo: | |
| # -------- MAIN TITLE ONLY -------- | |
| gr.Markdown("# 🧠 Deepfake Image Detection System") | |
| with gr.Row(): | |
| # LEFT SIDE | |
| with gr.Column(scale=1): | |
| image_input = gr.Image( | |
| label="Upload Image", | |
| type="pil", | |
| height=280 | |
| ) | |
| submit_btn = gr.Button("Submit") | |
| clear_btn = gr.Button("Clear") | |
| # RIGHT SIDE | |
| with gr.Column(scale=2): | |
| prediction = gr.Text(label="Prediction") | |
| confidence = gr.Text(label="Confidence") | |
| risk = gr.Text(label="Risk Assessment") | |
| heatmap = gr.Image( | |
| label="Explainability Heatmap", | |
| height=280 | |
| ) | |
| submit_btn.click( | |
| fn=analyze_image, | |
| inputs=image_input, | |
| outputs=[prediction, confidence, risk, heatmap] | |
| ) | |
| clear_btn.click( | |
| fn=lambda: (None, "", "", None), | |
| inputs=None, | |
| outputs=[image_input, prediction, confidence, risk] | |
| ) | |
| demo.launch() | |