--- 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-magic` for true binary MIME-type validation to prevent malicious payload uploads, overriding simple file-extension spoofing. - **Scene-Cut Extraction:** Utilizes `PySceneDetect` for 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.KernelExplainer` on the Meta-Classifier to compute mathematically rigorous feature importance. - **Concurrent Processing:** Utilizes `ThreadPoolExecutor` to handle heavy OpenCV frame extractions and multi-model inferences in parallel. - **Rate Limiting & Stability:** Secured with `slowapi` to 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 mean `RGB` values, 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 into `LAB` color space and thresholds the top 10% brightness of the `L` (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 using `librosa`, 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 `.pth` and `.onnx` model weights (EfficientNet-B4, SyncNet, Voice Liveness 2D-CNN, Meta-Classifier MLP). ## Installation & Setup 1. System Dependencies: - Ensure you have `ffmpeg` installed and available in your system's PATH, as it is required for video and audio processing. 2. Create a Virtual Environment: ```bash python -m venv venv # On Windows: .\venv\Scripts\Activate.ps1 # On Linux/Mac: source venv/bin/activate ``` 3. Install Dependencies: ```bash pip install -r requirements.txt ``` 4. Run the Server: ```bash 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 the `x-api-key` header 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.pth` or `finetuned_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.