File size: 4,122 Bytes
0e09d38 8af3596 0e09d38 24498f3 ea29443 5de535d ea29443 f65a4c6 0e09d38 ea29443 e85fa60 ea29443 |
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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
---
license: apache-2.0
datasets:
- prithivMLmods/OpenDeepfake-Preview
language:
- en
base_model:
- google/siglip2-base-patch16-512
pipeline_tag: image-classification
library_name: transformers
tags:
- deepfake
- detection
- SigLIP2
- art
- synthetic
---

# open-deepfake-detection
> open-deepfake-detection is a vision-language encoder model fine-tuned from `siglip2-base-patch16-512` for binary image classification. It is trained to detect whether an image is fake or real using the *OpenDeepfake-Preview* dataset. The model uses the `SiglipForImageClassification` architecture.
> \[!note]
> *SigLIP 2: Multilingual Vision-Language Encoders with Improved Semantic Understanding, Localization, and Dense Features*
> [https://arxiv.org/pdf/2502.14786](https://arxiv.org/pdf/2502.14786)
> \[!important]
Experimental Model
```py
Classification Report:
precision recall f1-score support
Fake 0.9718 0.9155 0.9428 10000
Real 0.9201 0.9734 0.9460 9999
accuracy 0.9444 19999
macro avg 0.9459 0.9444 0.9444 19999
weighted avg 0.9459 0.9444 0.9444 19999
```

---
## Label Space: 2 Classes
The model classifies an image as either:
```
Class 0: Fake
Class 1: Real
```
---
## Install Dependencies
```bash
pip install -q transformers torch pillow gradio hf_xet
```
---
## Inference Code
```python
import gradio as gr
from transformers import AutoImageProcessor, SiglipForImageClassification
from PIL import Image
import torch
# Load model and processor
model_name = "prithivMLmods/open-deepfake-detection" # Updated model name
model = SiglipForImageClassification.from_pretrained(model_name)
processor = AutoImageProcessor.from_pretrained(model_name)
# Updated label mapping
id2label = {
"0": "Fake",
"1": "Real"
}
def classify_image(image):
image = Image.fromarray(image).convert("RGB")
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist()
prediction = {
id2label[str(i)]: round(probs[i], 3) for i in range(len(probs))
}
return prediction
# Gradio Interface
iface = gr.Interface(
fn=classify_image,
inputs=gr.Image(type="numpy"),
outputs=gr.Label(num_top_classes=2, label="Deepfake Detection"),
title="open-deepfake-detection",
description="Upload an image to detect whether it is AI-generated (Fake) or a real photograph (Real), using the OpenDeepfake-Preview dataset."
)
if __name__ == "__main__":
iface.launch()
```
---
## Demo Inference
> [!warning]
real


> [!warning]
fake


## Intended Use
`open-deepfake-detection` is designed for:
* **Deepfake Detection** – Identify AI-generated or manipulated images.
* **Content Moderation** – Flag synthetic or fake visual content.
* **Dataset Curation** – Remove synthetic samples from mixed datasets.
* **Visual Authenticity Verification** – Check the integrity of visual media.
* **Digital Forensics** – Support image source verification and traceability. |