Spaces:
Sleeping
Sleeping
adidtiya commited on
Commit ·
936580a
1
Parent(s): 99e8b57
Deploy Deepfake Shield Backend v2.0
Browse files- detector.py +18 -6
- model_loader.py +1 -1
detector.py
CHANGED
|
@@ -140,7 +140,11 @@ class FaceDeepfakeDetector:
|
|
| 140 |
# Jalankan model untuk klasifikasi pada crop wajah dengan kedua model
|
| 141 |
df_score = self._classify_image(face_crop, model_loader.face_deepfake_model)
|
| 142 |
ai_score = self._classify_image(face_crop, model_loader.face_ai_edit_model)
|
| 143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
|
| 145 |
face_scores.append(score)
|
| 146 |
face_boxes.append([x1, y1, x2 - x1, y2 - y1])
|
|
@@ -150,15 +154,23 @@ class FaceDeepfakeDetector:
|
|
| 150 |
# lebih mudah dideteksi palsu daripada crop wajah.
|
| 151 |
df_full_score = self._classify_image(frame_rgb, model_loader.face_deepfake_model)
|
| 152 |
ai_full_score = self._classify_image(frame_rgb, model_loader.face_ai_edit_model)
|
| 153 |
-
full_frame_score = min(df_full_score, ai_full_score)
|
| 154 |
|
| 155 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
# Kumpulkan semua score (Full Frame + Wajah)
|
| 157 |
all_scores = [full_frame_score] + face_scores
|
| 158 |
|
| 159 |
-
# Ambil
|
| 160 |
-
#
|
| 161 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
|
| 163 |
logger.info(
|
| 164 |
f"📊 Skor: Full Frame={full_frame_score:.3f}, Wajah={[round(s,3) for s in face_scores]} "
|
|
|
|
| 140 |
# Jalankan model untuk klasifikasi pada crop wajah dengan kedua model
|
| 141 |
df_score = self._classify_image(face_crop, model_loader.face_deepfake_model)
|
| 142 |
ai_score = self._classify_image(face_crop, model_loader.face_ai_edit_model)
|
| 143 |
+
|
| 144 |
+
# Wvolf model (Deepfake) sangat akurat untuk wajah.
|
| 145 |
+
# dima806 (AI Edit) sering false-positive di foto DSLR/Webcam.
|
| 146 |
+
# Beri bobot 85% untuk Deepfake dan 15% untuk AI Edit agar akurat.
|
| 147 |
+
score = (df_score * 0.85) + (ai_score * 0.15)
|
| 148 |
|
| 149 |
face_scores.append(score)
|
| 150 |
face_boxes.append([x1, y1, x2 - x1, y2 - y1])
|
|
|
|
| 154 |
# lebih mudah dideteksi palsu daripada crop wajah.
|
| 155 |
df_full_score = self._classify_image(frame_rgb, model_loader.face_deepfake_model)
|
| 156 |
ai_full_score = self._classify_image(frame_rgb, model_loader.face_ai_edit_model)
|
|
|
|
| 157 |
|
| 158 |
+
# Untuk full frame, bobot diseimbangkan sedikit lebih tinggi untuk AI Edit (25%)
|
| 159 |
+
# karena konteks background berguna untuk deteksi AI generatif.
|
| 160 |
+
full_frame_score = (df_full_score * 0.75) + (ai_full_score * 0.25)
|
| 161 |
+
|
| 162 |
+
# --- Sistem Penilaian Komprehensif ---
|
| 163 |
# Kumpulkan semua score (Full Frame + Wajah)
|
| 164 |
all_scores = [full_frame_score] + face_scores
|
| 165 |
|
| 166 |
+
# Ambil rata-rata dari semua skor, namun condong ke skor yang paling mencurigakan
|
| 167 |
+
# Ini lebih seimbang daripada sekadar mengambil min() yang sering false-positive.
|
| 168 |
+
if len(all_scores) > 0:
|
| 169 |
+
avg_score = sum(all_scores) / len(all_scores)
|
| 170 |
+
min_score = min(all_scores)
|
| 171 |
+
representative_score = (avg_score * 0.6) + (min_score * 0.4)
|
| 172 |
+
else:
|
| 173 |
+
representative_score = full_frame_score
|
| 174 |
|
| 175 |
logger.info(
|
| 176 |
f"📊 Skor: Full Frame={full_frame_score:.3f}, Wajah={[round(s,3) for s in face_scores]} "
|
model_loader.py
CHANGED
|
@@ -77,7 +77,7 @@ class ModelLoader:
|
|
| 77 |
self._log_device_info()
|
| 78 |
|
| 79 |
# Muat model klasifikasi wajah
|
| 80 |
-
self._face_deepfake_model = self._load_model_pipeline("
|
| 81 |
self._face_ai_edit_model = self._load_model_pipeline("dima806/deepfake_vs_real_image_detection", "AI Edit")
|
| 82 |
|
| 83 |
# Muat model klasifikasi audio (CNN sederhana)
|
|
|
|
| 77 |
self._log_device_info()
|
| 78 |
|
| 79 |
# Muat model klasifikasi wajah
|
| 80 |
+
self._face_deepfake_model = self._load_model_pipeline("Wvolf/ViT_Deepfake_Detection", "Deepfake")
|
| 81 |
self._face_ai_edit_model = self._load_model_pipeline("dima806/deepfake_vs_real_image_detection", "AI Edit")
|
| 82 |
|
| 83 |
# Muat model klasifikasi audio (CNN sederhana)
|