File size: 1,596 Bytes
8c30b41
2d38802
c03cdfb
923a637
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c03cdfb
 
8c30b41
923a637
 
 
8c30b41
 
923a637
 
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
import gradio as gr
from transformers import pipeline
from PIL import Image

# Model utama untuk deteksi real vs AI
detector = pipeline("image-classification", model="umm-maybe/AI-image-detector")

# Model tambahan general classifier (backup)
general = pipeline("image-classification", model="google/vit-base-patch16-224")

def detect_image(img):
    try:
        # Prediksi dengan AI detector
        result1 = detector(img)
        label1 = result1[0]['label']
        conf1 = round(result1[0]['score'] * 100, 2)

        # Prediksi dengan model general (untuk cek ganda)
        result2 = general(img)
        label2 = result2[0]['label']
        conf2 = round(result2[0]['score'] * 100, 2)

        # Logika sederhana untuk memutuskan hasil
        if "fake" in label1.lower() or "artificial" in label1.lower():
            final = f"⚠️ Kemungkinan Besar AI Generated ({conf1}%)"
        elif "real" in label1.lower():
            final = f"✅ Kemungkinan Besar Foto Asli ({conf1}%)"
        else:
            final = f"⚠️ Tidak Pasti (cek manual)"

        output = f"""
### Hasil Deteksi:
{final}

**Model AI-detector:** {label1} ({conf1}%)
**Model General (ViT):** {label2} ({conf2}%)
"""
        return output
    except Exception as e:
        return f"Terjadi error: {str(e)}"

# UI Gradio
iface = gr.Interface(
    fn=detect_image,
    inputs=gr.Image(type="pil"),
    outputs="markdown",
    title="AI vs Real Image Detector",
    description="Upload foto untuk mendeteksi apakah gambar kemungkinan besar asli atau hasil AI."
)

if __name__ == "__main__":
    iface.launch()