MetaQu commited on
Commit
555fed5
·
verified ·
1 Parent(s): 7908448

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -20
app.py CHANGED
@@ -1,3 +1,12 @@
 
 
 
 
 
 
 
 
 
1
  def detect_image(img: Image.Image):
2
  results = {}
3
 
@@ -13,34 +22,29 @@ def detect_image(img: Image.Image):
13
  res3 = model3(img)
14
  results["Model 3 (Hemg)"] = res3
15
 
16
- # --- Ensemble dengan aturan baru ---
17
  ai_score, real_score = 0, 0
18
- real_votes, ai_votes = 0, 0
19
-
20
  for res in [res1, res2, res3]:
21
- top = res[0]
22
- label = top["label"].lower()
23
- score = top["score"]
24
-
25
- if "real" in label:
26
- real_score += score
27
- if score >= 0.5: # ambang confidence
28
- real_votes += 1
29
- else:
30
- ai_score += score
31
- if score >= 0.5:
32
- ai_votes += 1
33
-
34
- # Normalisasi skor
35
  total = ai_score + real_score + 1e-9
36
  ai_percent = (ai_score / total) * 100
37
  real_percent = (real_score / total) * 100
38
 
39
- # Keputusan akhir (butuh ≥2 real votes)
40
- if real_votes >= 2:
41
  verdict = f"✅ Foto Asli ({real_percent:.2f}%)"
42
- else:
43
  verdict = f"⚠️ AI Generated ({ai_percent:.2f}%)"
 
 
44
 
45
  # Format output
46
  output = f"## 📊 Ringkasan Deteksi\n"
@@ -50,3 +54,14 @@ def detect_image(img: Image.Image):
50
  output += f"\n=== 🧠 ENSEMBLE HASIL AKHIR ===\n{verdict}\n"
51
 
52
  return output
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline
3
+ from PIL import Image
4
+
5
+ # === Load 3 model publik khusus AI vs Real ===
6
+ model1 = pipeline("image-classification", model="prithivMLmods/AI-vs-Deepfake-vs-Real")
7
+ model2 = pipeline("image-classification", model="dima806/ai_vs_real_image_detection")
8
+ model3 = pipeline("image-classification", model="Hemg/AI-VS-REAL-IMAGE-DETECTION")
9
+
10
  def detect_image(img: Image.Image):
11
  results = {}
12
 
 
22
  res3 = model3(img)
23
  results["Model 3 (Hemg)"] = res3
24
 
25
+ # --- Ensemble dengan threshold agar lebih stabil ---
26
  ai_score, real_score = 0, 0
 
 
27
  for res in [res1, res2, res3]:
28
+ for item in res:
29
+ label = item["label"].lower()
30
+ score = item["score"]
31
+ if "real" in label:
32
+ real_score += score
33
+ elif "fake" in label or "deepfake" in label or "artificial" in label:
34
+ ai_score += score
35
+
36
+ # Normalisasi
 
 
 
 
 
37
  total = ai_score + real_score + 1e-9
38
  ai_percent = (ai_score / total) * 100
39
  real_percent = (real_score / total) * 100
40
 
41
+ # Keputusan akhir dengan threshold
42
+ if real_percent > ai_percent and real_percent > 55:
43
  verdict = f"✅ Foto Asli ({real_percent:.2f}%)"
44
+ elif ai_percent > real_percent and ai_percent > 55:
45
  verdict = f"⚠️ AI Generated ({ai_percent:.2f}%)"
46
+ else:
47
+ verdict = f"⚠️ Tidak Pasti (Real {real_percent:.2f}%, AI {ai_percent:.2f}%)"
48
 
49
  # Format output
50
  output = f"## 📊 Ringkasan Deteksi\n"
 
54
  output += f"\n=== 🧠 ENSEMBLE HASIL AKHIR ===\n{verdict}\n"
55
 
56
  return output
57
+
58
+ iface = gr.Interface(
59
+ fn=detect_image,
60
+ inputs=gr.Image(type="pil"),
61
+ outputs="markdown",
62
+ title="Deteksi AI vs Foto Asli (Ensemble 3 Model Publik)",
63
+ description="Menggunakan 3 model publik Hugging Face (prithivMLmods, dima806, Hemg) dengan threshold untuk mendeteksi apakah gambar AI-generated atau asli."
64
+ )
65
+
66
+ if __name__ == "__main__":
67
+ iface.launch()