File size: 1,861 Bytes
3cce3e9 fe08bee 2ae87d4 fe08bee 3cce3e9 2ae87d4 3cce3e9 fd0a84c 3cce3e9 fe08bee 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 2ae87d4 3cce3e9 fd0a84c 2ae87d4 3cce3e9 2ae87d4 9499ccb fd0a84c 3cce3e9 | 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 | import gradio as gr
import numpy as np
from PIL import Image
import cv2
from inference import FakeImageDetector
# Initialize detector
detector = FakeImageDetector()
def predict_image(image):
"""
Predict if image is real or fake
"""
try:
# Convert Gradio image to PIL
if isinstance(image, np.ndarray):
image_pil = Image.fromarray(image)
else:
image_pil = image
# Make prediction
result = detector.predict(image_pil, return_confidence=True)
if result is None:
return "Error processing image", None
# Prepare output
label = result['prediction']
confidence = result['confidence']
# Create visualization
display_img = np.array(image_pil)
display_img = cv2.resize(display_img, (400, 400))
# Add text overlay
color = (0, 255, 0) if label == 'Real' else (255, 0, 0) # Green for real, red for fake
cv2.putText(display_img, f"{label}: {confidence:.1f}%",
(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
return f"Prediction: {label} (Confidence: {confidence:.1f}%)", display_img
except Exception as e:
return f"Error: {str(e)}", None
# Create Gradio interface
title = "Fake Image Detector"
description = "Upload an image to detect if it's real or AI-generated/fake"
examples = [["real_0.jpg"], ["fake_0.jpg"]] # Add your example images
iface = gr.Interface(
fn=predict_image,
inputs=gr.Image(type="pil", label="Upload Image"),
outputs=[
gr.Textbox(label="Prediction"),
gr.Image(label="Visualization", type="numpy")
],
title=title,
description=description,
examples=examples,
theme="soft"
)
if __name__ == "__main__":
iface.launch(share=True) |