adidtiya commited on
Commit
936580a
·
1 Parent(s): 99e8b57

Deploy Deepfake Shield Backend v2.0

Browse files
Files changed (2) hide show
  1. detector.py +18 -6
  2. 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
- score = min(df_score, ai_score)
 
 
 
 
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
- # --- Sistem Penilaian Agresif ---
 
 
 
 
156
  # Kumpulkan semua score (Full Frame + Wajah)
157
  all_scores = [full_frame_score] + face_scores
158
 
159
- # Ambil nilai probabilitas REAL terkecil (artinya paling FAKE).
160
- # Jika salah satu komponen (background/wajah) terdeteksi palsu, anggap palsu.
161
- representative_score = float(min(all_scores))
 
 
 
 
 
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("prithivMLmods/deepfake-detector-model-v1", "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)
 
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)