Spaces:
Sleeping
Sleeping
| # Deepfake Hunter - Examples | |
| This directory contains example files for testing and demonstration purposes. | |
| ## Files | |
| ### analysis_report.json | |
| Example JSON report from video analysis showing: | |
| - Overall deepfake detection result | |
| - Frame-by-frame scores | |
| - Temporal consistency analysis | |
| - Physiological signal detection | |
| - Detailed breakdown of all detection methods | |
| ### Sample Videos (Not Included) | |
| For testing, you can use these publicly available datasets: | |
| #### Real Videos | |
| - Download from: [YouTube-8M](https://research.google.com/youtube8m/) | |
| - Or use your own webcam recordings | |
| #### Deepfake Videos | |
| - **FaceForensics++**: https://github.com/ondyari/FaceForensics | |
| - Download sample videos for testing | |
| - Includes various manipulation methods (Deepfakes, Face2Face, FaceSwap, NeuralTextures) | |
| - **Celeb-DF**: https://github.com/yuezunli/celeb-deepfakeforensics | |
| - High-quality celebrity deepfakes | |
| - More challenging test cases | |
| - **DFDC Preview**: https://ai.facebook.com/datasets/dfdc/ | |
| - Facebook Deepfake Detection Challenge dataset | |
| - Diverse range of manipulation techniques | |
| ## Usage Examples | |
| ### 1. Analyze Sample Image | |
| ```python | |
| from deepfake_detector import DeepfakeDetector | |
| import cv2 | |
| # Initialize detector | |
| detector = DeepfakeDetector(use_gpu=True) | |
| # Analyze image | |
| image = cv2.imread('path/to/image.jpg') | |
| image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) | |
| result = detector.detect_image(image) | |
| print(f"Is deepfake: {result.is_deepfake}") | |
| print(f"Confidence: {result.confidence:.2%}") | |
| print(f"Explanation: {result.explanation}") | |
| ``` | |
| ### 2. Analyze Sample Video | |
| ```python | |
| from deepfake_detector import DeepfakeDetector | |
| from video_analyzer import VideoAnalyzer | |
| # Initialize | |
| detector = DeepfakeDetector(use_gpu=True) | |
| analyzer = VideoAnalyzer(detector, sample_rate=2) | |
| # Analyze video | |
| result = analyzer.analyze_video( | |
| 'path/to/video.mp4', | |
| export_timeline=True, | |
| export_report=True, | |
| output_dir='./results' | |
| ) | |
| print(f"Video is deepfake: {result.is_deepfake}") | |
| print(f"Confidence: {result.confidence:.2%}") | |
| print(f"Suspect frames: {len(result.suspect_frames)}") | |
| ``` | |
| ### 3. Using the API | |
| ```bash | |
| # Start the API server | |
| python api_server.py | |
| # Analyze image via API | |
| curl -X POST "http://localhost:8001/analyze/image" \ | |
| -H "X-API-Key: your-secret-key" \ | |
| -F "file=@path/to/image.jpg" \ | |
| -F "context=general" | |
| # Analyze video via API | |
| curl -X POST "http://localhost:8001/analyze/video" \ | |
| -H "X-API-Key: your-secret-key" \ | |
| -F "file=@path/to/video.mp4" \ | |
| -F "context=general" \ | |
| -F "sample_rate=2" | |
| ``` | |
| ### 4. Using the Web Interface | |
| ```bash | |
| # Start Gradio app | |
| python app.py | |
| # Open browser to http://localhost:7860 | |
| # Upload images/videos via the web interface | |
| ``` | |
| ## Creating Your Own Test Cases | |
| ### Record Authentic Video | |
| ```bash | |
| # Using webcam (Linux) | |
| ffmpeg -f v4l2 -i /dev/video0 -t 10 real_video.mp4 | |
| # Using webcam (macOS) | |
| ffmpeg -f avfoundation -i "0" -t 10 real_video.mp4 | |
| # Using webcam (Windows) | |
| ffmpeg -f dshow -i video="Your Webcam Name" -t 10 real_video.mp4 | |
| ``` | |
| ### Test Different Scenarios | |
| 1. **Good Lighting**: Well-lit face, clear features | |
| 2. **Poor Lighting**: Test robustness to lighting conditions | |
| 3. **Multiple Faces**: Test multi-face detection | |
| 4. **Profile View**: Test with non-frontal faces | |
| 5. **Occlusions**: Test with glasses, masks, etc. | |
| 6. **Video Quality**: Test with different resolutions and compression levels | |
| ## Expected Results | |
| ### Real Videos | |
| - Confidence: 0.0 - 0.3 (low score = likely real) | |
| - Physiological signals detected (if sufficient frames) | |
| - Natural temporal consistency | |
| - Low artifact scores | |
| ### Deepfake Videos | |
| - Confidence: 0.7 - 1.0 (high score = likely fake) | |
| - No physiological signals or irregular patterns | |
| - Temporal inconsistencies | |
| - High artifact scores (blending, GAN fingerprints) | |
| ## Benchmarking | |
| To benchmark the detector on standard datasets: | |
| ```bash | |
| # Download FaceForensics++ test set | |
| # Then run benchmark | |
| python benchmark.py \ | |
| --dataset faceforensics \ | |
| --data-dir /path/to/faceforensics \ | |
| --output results/benchmark.json | |
| ``` | |
| ## Troubleshooting | |
| ### Low Accuracy | |
| - Check GPU is being used: `detector.device` should be "cuda" | |
| - Ensure sufficient video length (>5 seconds for physiological signals) | |
| - Try adjusting sensitivity: `detector.sensitivity = "high"` | |
| ### Slow Processing | |
| - Reduce video sample rate: `analyzer.sample_rate = 4` | |
| - Use GPU acceleration | |
| - Process at lower resolution | |
| - Limit max frames: `max_frames=300` | |
| ### False Positives | |
| - Lower sensitivity: `detector.sensitivity = "low"` | |
| - Increase thresholds: `detector.set_thresholds({'ensemble': 0.8})` | |
| - Check for compression artifacts in original video | |
| ## Contributing Examples | |
| Have interesting test cases? Contribute them! | |
| 1. Create anonymized examples | |
| 2. Document expected results | |
| 3. Submit PR with examples and documentation | |
| ## License | |
| Example files are provided under CC0 (public domain) where possible. | |
| Some referenced datasets have their own licenses - check before use. | |