MetaQu commited on
Commit
034fc15
·
verified ·
1 Parent(s): 9e00005

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -46
app.py CHANGED
@@ -1,54 +1,55 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
-
4
- # Daftar model publik yang relatif stabil
5
- model_ids = [
6
- "umm-maybe/AI-image-detector",
7
- "falconsai/nsfw_image_detection", # meski nsfw, output-nya bermanfaat untuk fitur visual
8
- "microsoft/resnet-50" # model general untuk referensi real-world image
9
- ]
10
-
11
- # Load semua model
12
- detectors = [pipeline("image-classification", model=m) for m in model_ids]
13
-
14
- def detect_image(image):
15
- combined_scores = {}
16
- results_text = []
17
-
18
- # Jalankan semua model
19
- for i, detector in enumerate(detectors):
20
- preds = detector(image)
21
- results_text.append(f"Model {i+1} ({model_ids[i]}):")
22
- for p in preds:
23
- label = p["label"]
24
- score = float(p["score"])
25
- results_text.append(f" {label}: {round(score*100, 2)}%")
26
-
27
- # Gabungkan skor
28
- if label not in combined_scores:
29
- combined_scores[label] = []
30
- combined_scores[label].append(score)
31
-
32
- # Hitung rata-rata dari semua model
33
- final_scores = {label: sum(scores)/len(scores) for label, scores in combined_scores.items()}
34
-
35
- # Cari label dengan skor tertinggi
36
- best_label = max(final_scores, key=final_scores.get)
37
- best_score = round(final_scores[best_label]*100, 2)
38
-
39
- results_text.append("\n=== ENSEMBLE HASIL AKHIR ===")
40
- results_text.append(f"{best_label} ({best_score}%)")
41
-
42
- return "\n".join(results_text)
43
-
44
- # Gradio interface
45
- iface = gr.Interface(
 
46
  fn=detect_image,
47
  inputs=gr.Image(type="pil"),
48
  outputs="text",
49
- title="AI vs Real Image Detector (3-Model Ensemble)",
50
- description="Menggabungkan 3 model publik untuk meningkatkan akurasi deteksi gambar AI vs asli."
51
  )
52
 
53
  if __name__ == "__main__":
54
- iface.launch()
 
1
  import gradio as gr
2
  from transformers import pipeline
3
+ from PIL import Image
4
+ import numpy as np
5
+
6
+ # Model 1: Hugging Face AI Image Detector
7
+ detector_hf = pipeline("image-classification", model="falconsai/nsfw_image_detection")
8
+
9
+ # Model 2: ViT (ImageNet classification)
10
+ detector_vit = pipeline("image-classification", model="google/vit-base-patch16-224")
11
+
12
+ # Model 3: ResNet50
13
+ detector_resnet = pipeline("image-classification", model="microsoft/resnet-50")
14
+
15
+ def detect_image(img):
16
+ results = {}
17
+
18
+ # Model 1
19
+ try:
20
+ out1 = detector_hf(img)
21
+ results["HF AI-Detector"] = out1
22
+ except Exception as e:
23
+ results["HF AI-Detector"] = str(e)
24
+
25
+ # Model 2
26
+ try:
27
+ out2 = detector_vit(img)
28
+ results["ViT Model"] = out2
29
+ except Exception as e:
30
+ results["ViT Model"] = str(e)
31
+
32
+ # Model 3
33
+ try:
34
+ out3 = detector_resnet(img)
35
+ results["ResNet50"] = out3
36
+ except Exception as e:
37
+ results["ResNet50"] = str(e)
38
+
39
+ # Gabungkan skor sederhana
40
+ summary = "📊 Ringkasan Deteksi:\n"
41
+ for k, v in results.items():
42
+ summary += f"\n🔹 {k}: {v}\n"
43
+
44
+ return summary
45
+
46
+ demo = gr.Interface(
47
  fn=detect_image,
48
  inputs=gr.Image(type="pil"),
49
  outputs="text",
50
+ title="🖼️ Multi-Model AI Image Detector",
51
+ description="Menggunakan 3 model (HF Detector, ViT, ResNet) untuk mendeteksi apakah gambar AI-generated atau asli."
52
  )
53
 
54
  if __name__ == "__main__":
55
+ demo.launch()