Spaces:
Building
title: KAMY Vision AI
emoji: 🛡️
colorFrom: purple
colorTo: blue
sdk: docker
app_port: 8000
pinned: false
AuthenticVision: Détection Deepfake & IA Générative
Outil complet de détection de contenus synthétiques (images, vidéos, audio) générés par IA. Disponible en API REST, CLI et interface web.
Architecture v3.0
AuthenticVision
├── api.py — API FastAPI (images + vidéos + audio)
├── video_analyzer.py — Module d'analyse vidéo multi-couches
├── cli.py — Interface ligne de commande
├── verify_robustness.py — Script de benchmark avec métriques
└── frontend/ — Interface web HTML/CSS/JS
Modèles utilisés
Images (ensemble de 3 modèles ViT fusionnés) :
| Modèle | Rôle | Poids |
|---|---|---|
prithivMLmods/Deep-Fake-Detector-Model |
Deepfake faces | 35% |
prithivMLmods/AI-vs-Deepfake-vs-Real |
3 classes : AI / Deepfake / Real | 40% |
Ateeqq/ai-vs-human-image-detector |
AI vs Humain (120k images) | 25% |
Audio : MelodyMachine/Deepfake-audio-detection-V2
Optionnel : openai/clip-vit-base-patch32 (analyse sémantique, activable via ?use_clip=true)
Couches forensiques: Images
- Ensemble 3 modèles ViT (score fusionné pondéré)
- Analyse EXIF étendue (19 sources IA détectées : Gemini, DALL-E, Firefly, Flux, SynthID...)
- Spectre FFT (détection sur-lissage et pics GAN)
- Texture & Bruit (uniformité anormale)
- Palette chromatique (entropie couleur artificielle)
- Détection filtre social (Snapchat/Instagram) avec seuils adaptatifs
Couches forensiques: Vidéo
- Ensemble modèles sur frames extraites (crop visage prioritaire)
- Cohérence temporelle inter-frames (variation anormalement faible = deepfake)
- Cohérence de teinte de peau entre visages (incohérence = manipulation)
Installation
# Dépendances de base
pip install fastapi uvicorn torch transformers pillow piexif librosa python-multipart
# Support vidéo (requis pour analyser des vidéos)
pip install opencv-python-headless
# Support HEIC (photos iPhone)
pip install pillow-heif
Lancer l'API
python api.py
# API disponible sur http://localhost:8000
Lancer l'interface web
Ouvrir frontend/index.html dans un navigateur (l'API doit être lancée).
API: Endpoints
POST /predict: Analyse complète
Supporte : images (JPEG, PNG, WebP, HEIC), vidéos (MP4, MOV, AVI, WebM), audio (WAV, MP3, M4A)
# Image
curl -X POST http://localhost:8000/predict \
-F "file=@photo.jpg" \
-F "sensitivity=50" \
-F "robust_mode=false"
# Vidéo
curl -X POST http://localhost:8000/predict \
-F "file=@video.mp4" \
-F "sensitivity=50"
# Avec CLIP (GPU recommandé)
curl -X POST "http://localhost:8000/predict?use_clip=true" \
-F "file=@photo.jpg"
POST /predict/fast: Mode rapide
Modèle principal seul, sans couches forensiques complètes (~5-15s CPU).
curl -X POST http://localhost:8000/predict/fast \
-F "file=@photo.jpg" \
-F "sensitivity=50"
GET /health: Statut de l'API
curl http://localhost:8000/health
Exemple de réponse (image) :
{
"status": "success",
"verdict": "DEEPFAKE",
"fake_prob": 0.8731,
"real_prob": 0.1269,
"media_type": "IMAGE",
"ai_source": "Google Gemini",
"forensic_details": {
"fusion_profile": "EXIF_IA_DETECTE",
"layer_scores": {
"ensemble": 0.82,
"exif": 0.97,
"fft": 0.61,
"texture": 0.55,
"color": 0.70
}
}
}
CLI
# Installation globale
pip install authenticvision-cli
# Analyse d'une image
deepfake photo.jpg
# Avec options
deepfake photo.jpg --sensitivity 70 --robust --audit
# Sortie JSON (pour scripts/pipelines)
deepfake photo.jpg --json
# Mode rapide (ViT seul)
deepfake photo.jpg --fast
# Audio
deepfake voix.mp3 --sensitivity 60
Exemple de sortie : ```
RÉSULTAT DE L'ANALYSE - AuthenticVision v2.0
Fichier : photo.jpg Type : IMAGE Sensibilité: 50% | Robustesse: OFF
VERDICT : AUTHENTIQUE Confiance : 96.0% réel
---
## Benchmark
Le script `verify_robustness.py` évalue les performances sur un dataset local.
```bash
# Benchmark complet avec rapport
python verify_robustness.py \
--real_dir datasets/real \
--fake_dir datasets/fake \
--output rapport.json
# Mode rapide
python verify_robustness.py \
--real_dir datasets/real \
--fake_dir datasets/fake \
--mode fast
# Test unitaire sur une image
python verify_robustness.py --image photo.jpg
Métriques calculées : Accuracy, Precision, Recall, F1, AUC-ROC, TP/TN/FP/FN
Datasets de test recommandés
Images
| Dataset | Contenu | Accès | Lien |
|---|---|---|---|
| Deepfake-Eval-2024 | 759 réelles + 1191 fakes "in-the-wild" (réseaux sociaux 2024) | Direct HuggingFace | lien |
| CIFAKE | 60k réelles vs générées (Stable Diffusion) | Kaggle | lien |
| DeepfakeJudge | Benchmark VLM avec labels réel/fake + reasoning | HuggingFace | lien |
# Télécharger CIFAKE via Kaggle CLI
pip install kaggle
kaggle datasets download -d birdy654/cifake-real-and-ai-generated-synthetic-images
unzip cifake-real-and-ai-generated-synthetic-images.zip -d datasets/cifake
# Lancer le benchmark
python verify_robustness.py \
--real_dir datasets/cifake/test/REAL \
--fake_dir datasets/cifake/test/FAKE \
--output rapport_cifake.json
Vidéos
| Dataset | Contenu | Accès | Lien |
|---|---|---|---|
| DFDC (Facebook) | 128k clips 10s, acteurs consentants, très diversifié | Kaggle (gratuit) | lien |
| FaceForensics++ | 1000 vidéos originales + 4 méthodes de manipulation (Deepfakes, Face2Face, FaceSwap, NeuralTextures) | Formulaire Google (gratuit) | lien |
| Celeb-DF v2 | 5639 deepfakes haute qualité de célébrités | Formulaire (gratuit) | lien |
| Deepfake-Eval-2024 | 45h de vidéos "in-the-wild" 2024 | HuggingFace | lien |
| UniDataPro deepfake-videos | 10k+ fichiers, 7k+ personnes | HuggingFace | lien |
Vidéos de test rapides (sans inscription) :
Pour tester immédiatement sans télécharger un dataset complet, tu peux utiliser ces sources :
Vidéos réelles: télécharge quelques clips depuis Pexels (licence gratuite, visages réels)
Vidéos deepfake: le repo deepfakes-in-the-wild contient des liens vers des exemples publics
Générer tes propres tests avec Deep-Live-Cam (open source) sur une vidéo Pexels
# Tester une vidéo directement via l'API
curl -X POST http://localhost:8000/predict \
-F "file=@ma_video.mp4" \
-F "sensitivity=50" | python -m json.tool
Paramètres
| Paramètre | Valeurs | Description |
|---|---|---|
sensitivity |
1-99 (défaut: 50) | Rigueur de détection. 80+ = strict, 20- = indulgent |
robust_mode |
true/false | Compense les filtres Snap/Insta, réduit les faux positifs |
use_clip |
true/false | Active l'analyse sémantique CLIP (GPU recommandé) |
Profils de fusion
L'API adapte automatiquement les poids selon le contexte détecté :
| Profil | Déclencheur | Comportement |
|---|---|---|
EXIF_IA_DETECTE |
Source IA trouvée dans les métadonnées | EXIF = 60% du score |
FILTRE_SOCIAL |
Filtre Snap/Insta détecté | EXIF ignoré, ensemble ViT prioritaire |
EXIF_FIABLE |
Appareil photo identifié dans EXIF | EXIF = 32% du score |
EXIF_ABSENT |
Pas de métadonnées (strip réseau social) | FFT + texture renforcés |
STANDARD |
Cas général | Pondération équilibrée |
Structure du projet
deepfake_detection/
├── api.py — API FastAPI v3.0 (image + vidéo + audio)
├── video_analyzer.py — Analyse vidéo multi-couches
├── cli.py — CLI (commande globale `deepfake`)
├── verify_robustness.py — Benchmark avec métriques complètes
├── setup.py — Configuration PyPI
├── frontend/
│ ├── index.html — Interface web (tabs Image / Audio / Vidéo / Texte)
│ ├── script.js — Logique frontend
│ └── style.css — Styles
└── README.md
Corrections & Améliorations récentes
v2.1: Garde-fous filtre social (correctif faux positifs)
Problème identifié : avec --sensitivity 85, le shift de +0.18 était appliqué avant les garde-fous, ce qui pouvait faire passer une photo filtrée (Snapchat/Instagram) en DEEPFAKE.
Corrections apportées dans cli.py et api.py :
- Les garde-fous sont maintenant appliqués sur le score brut (avant le shift sensitivity)
- Seuil filtre social élargi :
vit_fake < 0.70(au lieu de< 0.55) pour couvrir la zone grise - Seuil de déclenchement filtre abaissé :
fc > 0.45(au lieu de> 0.60)
Comportement attendu après correction :
- Photo réelle avec filtre Snap + sensitivity=85 → AUTHENTIQUE (score brut plafonné à 0.46, final ≤ 0.64)
- Image Gemini/DALL-E + sensitivity=85 → DEEPFAKE maintenu (vit_fake > 0.70, garde-fou inactif)
Vidéos de test recommandées
Sans inscription (accès immédiat)
| Source | Type | Lien |
|---|---|---|
| Pexels | Vidéos réelles (visages, portraits), licence gratuite | pexels.com/videos |
| Pixabay | Vidéos réelles libres de droits | pixabay.com/videos |
| FaceForensics++ samples | Exemples deepfake publics (GitHub) | github.com/ondyari/FaceForensics |
| Deepfakes-in-the-wild | Liens vers deepfakes publics collectés | github.com/jmpu/webconf21-deepfakes-in-the-wild |
Datasets complets (formulaire ou Kaggle)
| Dataset | Contenu | Accès | Lien |
|---|---|---|---|
| DFDC (Facebook) | 128k clips 10s, très diversifié | Kaggle (gratuit) | lien |
| FaceForensics++ | 1000 vidéos + 4 méthodes (Deepfakes, Face2Face, FaceSwap, NeuralTextures) | Formulaire Google | lien |
| Celeb-DF v2 | 5639 deepfakes haute qualité de célébrités | Formulaire gratuit | lien |
| UniDataPro deepfake-videos | 10k+ fichiers, 7k+ personnes | HuggingFace | lien |
Tester rapidement une vidéo
# Via l'API
curl -X POST http://localhost:8000/predict \
-F "file=@ma_video.mp4" \
-F "sensitivity=50" | python -m json.tool
# Mode rapide (moins de modèles, plus rapide)
curl -X POST http://localhost:8000/predict/fast \
-F "file=@ma_video.mp4" \
-F "sensitivity=50"
Vidéos de test suggérées (Pexels, téléchargement direct) :
- Portrait femme en intérieur : pexels.com/video/3209828 (réelle)
- Portrait homme en extérieur : pexels.com/video/3195394 (réelle)
- Pour les deepfakes : utilise les samples du repo FaceForensics++ (lien ci-dessus)
Roadmap
- Détection image multi-couches (ViT + EXIF + FFT + Texture + Palette)
- Ensemble 3 modèles ViT
- Détection sources IA génératives (Gemini, DALL-E, Flux, Firefly...)
- Analyse vidéo (cohérence temporelle + ensemble frames)
- Détection audio (voix clonée)
- Interface web avec tab Vidéo
- Script de benchmark (Accuracy / F1 / AUC-ROC)
- Correctif garde-fous filtre social (v2.1)
- Détection texte LLM (DeepSeek, ChatGPT, Claude): en cours
- Support streaming vidéo temps réel
- Fine-tuning sur Deepfake-Eval-2024