MetaQu commited on
Commit
c87cacc
·
verified ·
1 Parent(s): 3898bcc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -15
app.py CHANGED
@@ -2,32 +2,36 @@ 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
 
13
- # Model 1
14
  res1 = model1(img)
15
- results["Model 1 (prithivMLmods)"] = res1
16
-
17
- # Model 2
18
  res2 = model2(img)
19
- results["Model 2 (dima806)"] = res2
20
-
21
- # Model 3
22
  res3 = model3(img)
 
 
23
  results["Model 3 (Hemg)"] = res3
24
 
25
- # --- Ensemble sederhana ---
26
  ai_score, real_score = 0, 0
27
- for res in [res1, res2, res3]:
28
  top = res[0]
29
  label = top["label"].lower()
30
- score = top["score"]
 
31
  if "real" in label:
32
  real_score += score
33
  else:
@@ -38,14 +42,19 @@ def detect_image(img: Image.Image):
38
  ai_percent = (ai_score / total) * 100
39
  real_percent = (real_score / total) * 100
40
 
41
- # Keputusan akhir
42
- if real_percent > ai_percent:
 
 
 
 
 
43
  verdict = f"✅ Foto Asli ({real_percent:.2f}%)"
44
  else:
45
  verdict = f"⚠️ AI Generated ({ai_percent:.2f}%)"
46
 
47
  # Format output
48
- output = f"## 📊 Ringkasan Deteksi\n"
49
  for name, res in results.items():
50
  output += f"\n🔹 **{name}**: {res}\n"
51
 
@@ -58,7 +67,7 @@ iface = gr.Interface(
58
  inputs=gr.Image(type="pil"),
59
  outputs="markdown",
60
  title="Deteksi AI vs Foto Asli (Ensemble 3 Model Publik)",
61
- description="Menggunakan 3 model publik Hugging Face (prithivMLmods, dima806, Hemg) untuk mendeteksi apakah gambar AI-generated atau asli."
62
  )
63
 
64
  if __name__ == "__main__":
 
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
+ # Bobot tiap model
11
+ weights = {
12
+ "prithivMLmods": 1.2,
13
+ "dima806": 1.0,
14
+ "Hemg": 1.5
15
+ }
16
+
17
  def detect_image(img: Image.Image):
18
  results = {}
19
 
20
+ # Run semua model
21
  res1 = model1(img)
 
 
 
22
  res2 = model2(img)
 
 
 
23
  res3 = model3(img)
24
+ results["Model 1 (prithivMLmods)"] = res1
25
+ results["Model 2 (dima806)"] = res2
26
  results["Model 3 (Hemg)"] = res3
27
 
28
+ # Ensemble dengan bobot
29
  ai_score, real_score = 0, 0
30
+ for name, res in zip(["prithivMLmods", "dima806", "Hemg"], [res1, res2, res3]):
31
  top = res[0]
32
  label = top["label"].lower()
33
+ score = top["score"] * weights[name]
34
+
35
  if "real" in label:
36
  real_score += score
37
  else:
 
42
  ai_percent = (ai_score / total) * 100
43
  real_percent = (real_score / total) * 100
44
 
45
+ # Threshold khusus: jika ada model dengan real_score > 0.6 → override jadi real
46
+ override_real = any(
47
+ any("real" in r["label"].lower() and r["score"] > 0.6 for r in res)
48
+ for res in [res1, res2, res3]
49
+ )
50
+
51
+ if override_real or real_percent > ai_percent:
52
  verdict = f"✅ Foto Asli ({real_percent:.2f}%)"
53
  else:
54
  verdict = f"⚠️ AI Generated ({ai_percent:.2f}%)"
55
 
56
  # Format output
57
+ output = "## 📊 Ringkasan Deteksi\n"
58
  for name, res in results.items():
59
  output += f"\n🔹 **{name}**: {res}\n"
60
 
 
67
  inputs=gr.Image(type="pil"),
68
  outputs="markdown",
69
  title="Deteksi AI vs Foto Asli (Ensemble 3 Model Publik)",
70
+ description="Menggunakan 3 model publik Hugging Face (prithivMLmods, dima806, Hemg) dengan voting berbobot & threshold untuk deteksi AI vs real."
71
  )
72
 
73
  if __name__ == "__main__":