metadata
title: Deepfake Forensics API
emoji: 🕵️
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
Deepfake Forensics API (Backend)
This is the FastAPI backend for the Deepfake Forensics Platform. It provides a high-performance REST API to process video and audio files, extracting multi-modal anomaly scores across 15 distinct forensic dimensions.
Features
- Security & Integrity: Integrates
python-magicfor true binary MIME-type validation to prevent malicious payload uploads, overriding simple file-extension spoofing. - Scene-Cut Extraction: Utilizes
PySceneDetectfor intelligent, context-aware frame extraction across the entire video duration, defeating deepfakes hidden in scene transitions. - Batched Inference & Lazy Loading: Models are lazy-loaded into VRAM upon request, and frames are processed in 32-frame batches to prevent Out-Of-Memory (OOM) crashes.
- Real-Time SSE Streaming: Yields real-time telemetry and granular module logs back to the client via Server-Sent Events.
- Optimized Face Tracking: Integrates robust OpenCV tracking (KCF/CSRT) after an initial MediaPipe detection to radically speed up face extraction.
- True SHAP Explanations: Employs
shap.KernelExplaineron the Meta-Classifier to compute mathematically rigorous feature importance. - Concurrent Processing: Utilizes
ThreadPoolExecutorto handle heavy OpenCV frame extractions and multi-model inferences in parallel. - Rate Limiting & Stability: Secured with
slowapito restrict endpoints and uses robust per-module error trapping to prevent pipeline crashes. - REST API: Fully documented interactive Swagger API accessible at
/docs. - Report Generation: Aggregates scores into comprehensive PDF forensics reports.
Advanced Mathematical Methodologies
The pipeline scripts in this backend utilize strict mathematical extraction techniques:
- rPPG Analysis (
rppg_analysis.py): Uses MediaPipe landmarks to generate precise geometric polygon masks over the left/right cheeks and forehead to extract the meanRGBvalues, bypassing background noise to isolate cardiovascular blood flow. - CFA Demosaicing (
cfa_analysis.py): Applies a custom 3x3 high-frequency diagonal residual filter matrix to isolate the microscopic Bayer interpolation grid. It then computes an 8x8 block variance map to compare facial noise vs background noise. - Corneal Specular Highlights (
corneal_analysis.py): Converts eye-cropped regions intoLABcolor space and thresholds the top 10% brightness of theL(Lightness) channel to geometrically isolate lighting reflections for left/right eye structural similarity comparison. - A/V Sync (
audio_sync.py): Translates 16kHz audio into 100Hz 13-dimensional MFCC arrays usinglibrosa, allowing the 3D-CNN SyncNet to map 0.2-second audio chunks directly to 5-frame video mouth crops.
Structure
main.py: The FastAPI application entry point.pipeline/: Contains the forensic extraction logic (audio, video, geometry, XAI, etc.).kaggle_scripts/: Python scripts designed for training models in Kaggle GPU environments (kaggle_efficientnet_training.py,kaggle_meta_training.py,kaggle_voice_training.py).weights/: Pre-trained.pthand.onnxmodel weights (EfficientNet-B4, SyncNet, Voice Liveness 2D-CNN, Meta-Classifier MLP).
Installation & Setup
System Dependencies:
- Ensure you have
ffmpeginstalled and available in your system's PATH, as it is required for video and audio processing.
- Ensure you have
Create a Virtual Environment:
python -m venv venv # On Windows: .\venv\Scripts\Activate.ps1 # On Linux/Mac: source venv/bin/activateInstall Dependencies:
pip install -r requirements.txtRun the Server:
uvicorn main:app --reload
The API will be available at http://127.0.0.1:8000.
Environment Variables
The application uses the following optional environment variables for configuration:
API_KEY: Secures the API endpoints. (Defaults to"deepforensics-dev-key"). You must pass this in thex-api-keyheader when making requests.ALLOWED_ORIGINS: A comma-separated list of origins for CORS. (Defaults to"*").
Required Model Weights
Ensure the following pre-trained weight files are placed in the weights/ directory for full functionality:
improved_finetuned_model.pthorfinetuned_model.pth: Custom EfficientNet-B4 weights. If missing, the system falls back to the standard ImageNet pre-trained timm model.ensemble_mlp.pth: Weights for the Meta-Classifier MLP.voice_spoofing.pth: Weights for the Acoustic Anti-Spoofing 2D-CNN.syncnet_v2.model: Pre-trained Wav2Lip SyncNet model (can be downloaded from the Wav2Lip official repository).
API Specifications
- Upload Limit: Maximum file size is strictly capped at 100 MB.
- Supported Formats:
mp4,avi,mov,mkv,webm,png,jpg,jpeg. - Processing Time limit: Video analyses are capped at the first 60 seconds of playback to prevent memory overflow.