--- 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 ```bash # 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 ```bash 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) ```bash # 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). ```bash curl -X POST http://localhost:8000/predict/fast \ -F "file=@photo.jpg" \ -F "sensitivity=50" ``` ### `GET /health`: Statut de l'API ```bash curl http://localhost:8000/health ``` **Exemple de réponse (image) :** ```json { "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 ```bash # 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](https://huggingface.co/datasets/nuriachandra/Deepfake-Eval-2024) | | **CIFAKE** | 60k réelles vs générées (Stable Diffusion) | Kaggle | [lien](https://www.kaggle.com/datasets/birdy654/cifake-real-and-ai-generated-synthetic-images) | | **DeepfakeJudge** | Benchmark VLM avec labels réel/fake + reasoning | HuggingFace | [lien](https://huggingface.co/datasets/MBZUAI/DeepfakeJudge-Dataset) | ```bash # 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](https://www.kaggle.com/competitions/deepfake-detection-challenge/data) | | **FaceForensics++** | 1000 vidéos originales + 4 méthodes de manipulation (Deepfakes, Face2Face, FaceSwap, NeuralTextures) | Formulaire Google (gratuit) | [lien](https://github.com/ondyari/FaceForensics) | | **Celeb-DF v2** | 5639 deepfakes haute qualité de célébrités | Formulaire (gratuit) | [lien](https://github.com/yuezunli/celeb-deepfakeforensics) | | **Deepfake-Eval-2024** | 45h de vidéos "in-the-wild" 2024 | HuggingFace | [lien](https://huggingface.co/datasets/nuriachandra/Deepfake-Eval-2024) | | **UniDataPro deepfake-videos** | 10k+ fichiers, 7k+ personnes | HuggingFace | [lien](https://huggingface.co/datasets/UniDataPro/deepfake-videos-dataset) | **Vidéos de test rapides (sans inscription) :** Pour tester immédiatement sans télécharger un dataset complet, tu peux utiliser ces sources : 1. **Vidéos réelles**: télécharge quelques clips depuis [Pexels](https://www.pexels.com/videos/) (licence gratuite, visages réels) 2. **Vidéos deepfake**: le repo [deepfakes-in-the-wild](https://github.com/jmpu/webconf21-deepfakes-in-the-wild) contient des liens vers des exemples publics 3. **Générer tes propres tests** avec [Deep-Live-Cam](https://github.com/hacksider/Deep-Live-Cam) (open source) sur une vidéo Pexels ```bash # 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` : 1. Les garde-fous sont maintenant appliqués sur le **score brut** (avant le shift sensitivity) 2. Seuil filtre social élargi : `vit_fake < 0.70` (au lieu de `< 0.55`) pour couvrir la zone grise 3. 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](https://www.pexels.com/videos/) | | **Pixabay** | Vidéos réelles libres de droits | [pixabay.com/videos](https://pixabay.com/videos/) | | **FaceForensics++ samples** | Exemples deepfake publics (GitHub) | [github.com/ondyari/FaceForensics](https://github.com/ondyari/FaceForensics) | | **Deepfakes-in-the-wild** | Liens vers deepfakes publics collectés | [github.com/jmpu/webconf21-deepfakes-in-the-wild](https://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](https://www.kaggle.com/competitions/deepfake-detection-challenge/data) | | **FaceForensics++** | 1000 vidéos + 4 méthodes (Deepfakes, Face2Face, FaceSwap, NeuralTextures) | Formulaire Google | [lien](https://github.com/ondyari/FaceForensics) | | **Celeb-DF v2** | 5639 deepfakes haute qualité de célébrités | Formulaire gratuit | [lien](https://github.com/yuezunli/celeb-deepfakeforensics) | | **UniDataPro deepfake-videos** | 10k+ fichiers, 7k+ personnes | HuggingFace | [lien](https://huggingface.co/datasets/UniDataPro/deepfake-videos-dataset) | ### Tester rapidement une vidéo ```bash # 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](https://www.pexels.com/video/3209828/) (réelle) - Portrait homme en extérieur : [pexels.com/video/3195394](https://www.pexels.com/video/3195394/) (réelle) - Pour les deepfakes : utilise les samples du repo FaceForensics++ (lien ci-dessus) --- ## Roadmap - [x] Détection image multi-couches (ViT + EXIF + FFT + Texture + Palette) - [x] Ensemble 3 modèles ViT - [x] Détection sources IA génératives (Gemini, DALL-E, Flux, Firefly...) - [x] Analyse vidéo (cohérence temporelle + ensemble frames) - [x] Détection audio (voix clonée) - [x] Interface web avec tab Vidéo - [x] Script de benchmark (Accuracy / F1 / AUC-ROC) - [x] 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