SIFTA deepfake detector: X-CLIP-B/16
Detects face-manipulated video (face swap / reenactment) from face crops. Part of SIFTA (FYP). Research use only.
- Backbone:
microsoft/xclip-base-patch16(clip-level), fine-tuned on FaceForensics++ c23 only (official split; 5 methods) - Selected by rule
generalisation_devamong XceptionNet, ViT-B/16 and X-CLIP-B/16 (seecomparison.csv,selection.json) - Output: calibrated P(fake) (temperature 1.152); decision threshold 0.728; risk tiers LOW < 0.3 <= MEDIUM < 0.7 <= HIGH
Results (video level, largest face; threshold frozen from FF++ validation)
| Set | Videos | Face found | ROC-AUC (95% CI) | Accuracy | Macro-F1 | EER |
|---|---|---|---|---|---|---|
| FF++ val | 840 | 100.0% | 0.9893 (0.983–0.994) | 0.9476 | 0.9147 | 0.0407 |
| FF++ test | 840 | 100.0% | 0.9868 (0.979–0.993) | 0.9381 | 0.9015 | 0.0486 |
| Celeb-DF v2 | 518 | 100.0% | 0.9117 (0.886–0.936) | 0.8031 | 0.7967 | 0.1609 |
| DFDC | 2,000 | 100.0% | 0.8442 (0.827–0.859) | 0.7395 | 0.7266 | 0.2400 |
Celeb-DF, DFDC and Deepfake-Eval-2024 were never used for training, early stopping, threshold or calibration.
Preprocessing (must match at inference)
{ "face_detector": "OpenCV YuNet face_detection_yunet_2023mar.onnx (sha256 8f2383e4...)", "clip_len": 8, "clip_stride": 2, "clips_per_video": 4, "crop": "square, 1.3x margin, 256 px, JPEG q92", "video_score": "mean calibrated P(fake) over the largest face's frames/clips" }
Limitations
- Sees faces only: fully generated scenes, non-face edits and voice-only fakes are out of scope (SIFTA routes them to the AI-video and voice detectors).
- Accuracy at the fixed threshold drops on new domains even when AUC holds; use the calibrated score and risk tiers.
- Training data: FF++ (YouTube news-style, c23). Deepfake-Eval-2024 subjects are mostly English-speaking, light-skinned, Western.
- Dataset terms: FF++ (research, terms of use), DFDC (non-commercial), Deepfake-Eval-2024 (evaluation only). Not for commercial use.