Views
No views yet
!pip install -q transformers torch pillow gradio1import gradio as gr
2from transformers import AutoImageProcessor
3from transformers import SiglipForImageClassification
4from transformers.image_utils import load_image
5from PIL import Image
6import torch
7
8# Load model and processor
9model_name = "prithivMLmods/AI-vs-Deepfake-vs-Real-Siglip2"
10model = SiglipForImageClassification.from_pretrained(model_name)
11processor = AutoImageProcessor.from_pretrained(model_name)
12
13def image_classification(image):
14 """Classifies an image as AI-generated, deepfake, or real."""
15 image = Image.fromarray(image).convert("RGB")
16 inputs = processor(images=image, return_tensors="pt")
17
18 with torch.no_grad():
19 outputs = model(**inputs)
20 logits = outputs.logits
21 probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist()
22
23 labels = model.config.id2label
24 predictions = {labels[i]: round(probs[i], 3) for i in range(len(probs))}
25
26 return predictions
27
28# Create Gradio interface
29iface = gr.Interface(
30 fn=image_classification,
31 inputs=gr.Image(type="numpy"),
32 outputs=gr.Label(label="Classification Result"),
33 title="AI vs Deepfake vs Real Image Classification",
34 description="Upload an image to determine whether it is AI-generated, a deepfake, or a real image."
35)
36
37# Launch the app
38if __name__ == "__main__":
39 iface.launch()Classification report:
precision recall f1-score support
AI 0.9794 0.9955 0.9874 1334
Deepfake 0.9931 0.9782 0.9856 1333
Real 0.9992 0.9977 0.9985 1333
accuracy 0.9905 4000
macro avg 0.9906 0.9905 0.9905 4000
weighted avg 0.9906 0.9905 0.9905 4000