Spaces:
Sleeping
Sleeping
File size: 2,214 Bytes
555fed5 267b575 ddda8d5 555fed5 ddda8d5 555fed5 3898bcc 034fc15 ddda8d5 3898bcc ddda8d5 3022c96 ddda8d5 267b575 ddda8d5 267b575 ddda8d5 555fed5 ddda8d5 cfb7b57 ddda8d5 555fed5 ddda8d5 3022c96 ddda8d5 034fc15 ddda8d5 034fc15 ddda8d5 555fed5 ddda8d5 555fed5 ddda8d5 555fed5 ddda8d5 |
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 |
import gradio as gr
from transformers import pipeline
from PIL import Image
# === Load 3 model publik khusus AI vs Real ===
model1 = pipeline("image-classification", model="prithivMLmods/AI-vs-Deepfake-vs-Real")
model2 = pipeline("image-classification", model="dima806/ai_vs_real_image_detection")
model3 = pipeline("image-classification", model="Hemg/AI-VS-REAL-IMAGE-DETECTION")
def detect_image(img: Image.Image):
results = {}
# Model 1
res1 = model1(img)
results["Model 1 (prithivMLmods)"] = res1
# Model 2
res2 = model2(img)
results["Model 2 (dima806)"] = res2
# Model 3
res3 = model3(img)
results["Model 3 (Hemg)"] = res3
# --- Ensemble dengan threshold agar lebih stabil ---
ai_score, real_score = 0, 0
for res in [res1, res2, res3]:
for item in res:
label = item["label"].lower()
score = item["score"]
if "real" in label:
real_score += score
elif "fake" in label or "deepfake" in label or "artificial" in label:
ai_score += score
# Normalisasi
total = ai_score + real_score + 1e-9
ai_percent = (ai_score / total) * 100
real_percent = (real_score / total) * 100
# Keputusan akhir dengan threshold
if real_percent > ai_percent and real_percent > 55:
verdict = f"✅ Foto Asli ({real_percent:.2f}%)"
elif ai_percent > real_percent and ai_percent > 55:
verdict = f"⚠️ AI Generated ({ai_percent:.2f}%)"
else:
verdict = f"⚠️ Tidak Pasti (Real {real_percent:.2f}%, AI {ai_percent:.2f}%)"
# Format output
output = f"## 📊 Ringkasan Deteksi\n"
for name, res in results.items():
output += f"\n🔹 **{name}**: {res}\n"
output += f"\n=== 🧠 ENSEMBLE HASIL AKHIR ===\n{verdict}\n"
return output
iface = gr.Interface(
fn=detect_image,
inputs=gr.Image(type="pil"),
outputs="markdown",
title="Deteksi AI vs Foto Asli (Ensemble 3 Model Publik)",
description="Menggunakan 3 model publik Hugging Face (prithivMLmods, dima806, Hemg) dengan threshold untuk mendeteksi apakah gambar AI-generated atau asli."
)
if __name__ == "__main__":
iface.launch()
|