Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -15,7 +15,7 @@ import cv2
|
|
| 15 |
|
| 16 |
NOISE_THRESHOLD = 0.55
|
| 17 |
FREQ_THRESHOLD = 500
|
| 18 |
-
ELA_THRESHOLD = 0.25
|
| 19 |
MIN_SIGNALS = 2
|
| 20 |
|
| 21 |
|
|
@@ -159,12 +159,21 @@ def detect_deepfake(img):
|
|
| 159 |
ai_confidence += 20; signals_triggered += 1
|
| 160 |
reasons.append(f"⚠️ Gradients trop lisses (ratio={gradient_ratio:.2f} < 1.2)")
|
| 161 |
|
| 162 |
-
#
|
| 163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
ai_confidence += 30; signals_triggered += 1
|
| 165 |
reasons.append(
|
| 166 |
-
f"⚠️
|
| 167 |
-
f"variance inter-blocs={inter_block_var:.3f}"
|
| 168 |
)
|
| 169 |
|
| 170 |
# S6 — Skin smoothing
|
|
@@ -253,8 +262,8 @@ def process(input_img):
|
|
| 253 |
report += f" [S1] Bruit capteur corrigé : {noise_val:.3f} (seuil < {NOISE_THRESHOLD})\n"
|
| 254 |
report += f" [S2] Pic FFT : {freq_val:.0f} (seuil > {FREQ_THRESHOLD})\n"
|
| 255 |
report += f" [S3] ELA moyenne : {ela_val:.4f} (seuil < {ELA_THRESHOLD})\n"
|
| 256 |
-
report += f" [
|
| 257 |
-
report += f" [
|
| 258 |
if skin_ratio >= 0.02:
|
| 259 |
report += f" [S6] Texture peau (std) : {skin_std:.1f} (seuil < 8.0, zone={skin_ratio*100:.0f}%)\n"
|
| 260 |
else:
|
|
@@ -285,4 +294,4 @@ with gr.Blocks() as demo:
|
|
| 285 |
|
| 286 |
run_btn.click(process, inputs=in_img, outputs=[out_plot, out_text])
|
| 287 |
|
| 288 |
-
demo.launch(share=True, theme=gr.themes.Soft())
|
|
|
|
| 15 |
|
| 16 |
NOISE_THRESHOLD = 0.55
|
| 17 |
FREQ_THRESHOLD = 500
|
| 18 |
+
ELA_THRESHOLD = 0.30 # relevé de 0.25 → 0.30 pour attraper les retouches légères
|
| 19 |
MIN_SIGNALS = 2
|
| 20 |
|
| 21 |
|
|
|
|
| 159 |
ai_confidence += 20; signals_triggered += 1
|
| 160 |
reasons.append(f"⚠️ Gradients trop lisses (ratio={gradient_ratio:.2f} < 1.2)")
|
| 161 |
|
| 162 |
+
# S5a — Traitement IA global (Nano Banana, Gemini Edit, Remini…)
|
| 163 |
+
# > 55% zones silencieuses = bruit effacé globalement par un outil IA
|
| 164 |
+
# Nano Banana écrase le bruit uniformément donc inter_block_var reste faible
|
| 165 |
+
if silent_ratio > 0.55:
|
| 166 |
+
ai_confidence += 22; signals_triggered += 1
|
| 167 |
+
reasons.append(
|
| 168 |
+
f"⚠️ Traitement IA global — {silent_ratio*100:.0f}% zones sans bruit "
|
| 169 |
+
f"(seuil > 55%) — Nano Banana / Gemini Edit / filtre IA detecte"
|
| 170 |
+
)
|
| 171 |
+
# S5b — Composite / retouche par zone (fond remplace, objet insere)
|
| 172 |
+
elif silent_ratio > 0.20 and inter_block_var > 0.08:
|
| 173 |
ai_confidence += 30; signals_triggered += 1
|
| 174 |
reasons.append(
|
| 175 |
+
f"⚠️ Composite / retouche locale — {silent_ratio*100:.0f}% zones sans bruit, "
|
| 176 |
+
f"variance inter-blocs={inter_block_var:.3f} — masquage par zone"
|
| 177 |
)
|
| 178 |
|
| 179 |
# S6 — Skin smoothing
|
|
|
|
| 262 |
report += f" [S1] Bruit capteur corrigé : {noise_val:.3f} (seuil < {NOISE_THRESHOLD})\n"
|
| 263 |
report += f" [S2] Pic FFT : {freq_val:.0f} (seuil > {FREQ_THRESHOLD})\n"
|
| 264 |
report += f" [S3] ELA moyenne : {ela_val:.4f} (seuil < {ELA_THRESHOLD})\n"
|
| 265 |
+
report += f" [S5a] Zones sans bruit : {silent_ratio*100:.1f}% (seuil > 55% global | > 20%+blocs pour composite)\n"
|
| 266 |
+
report += f" [S5b] Variance inter-blocs : {inter_block_var:.3f} (seuil > 0.08 si 20-55% silencieux)\n"
|
| 267 |
if skin_ratio >= 0.02:
|
| 268 |
report += f" [S6] Texture peau (std) : {skin_std:.1f} (seuil < 8.0, zone={skin_ratio*100:.0f}%)\n"
|
| 269 |
else:
|
|
|
|
| 294 |
|
| 295 |
run_btn.click(process, inputs=in_img, outputs=[out_plot, out_text])
|
| 296 |
|
| 297 |
+
demo.launch(share=True, theme=gr.themes.Soft())
|