Generalized Design Choices for Deepfake Detectors
Organizations: Department of Computer Science and Engineering (DISI) University of Bologna, Italy · IdentifAI, Italy
Abstract
The effectiveness of deepfake detection methods often depends less on their core design and more on implementation details such as data preprocessing, augmentation strategies, and optimization techniques. These factors make it difficult to fairly compare detectors and to understand which factors truly contribute to their performance. To address this, we systematically investigate how different design choices influence the accuracy and generalization capabilities of deepfake detection models, focusing on aspects related to training, inference, and incremental updates. By isolating the impact of individual factors, we aim to establish robust, architecture-agnostic best practices for the design and development of future deepfake detection systems. Our experiments identify a set of design choices that consistently improve deepfake detection and enable state-of-the-art performance on the AI-GenBench benchmark.
Figures & tables
| Pipeline | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 | Average |
|---|---|---|---|---|---|
| Baseline | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 | 90.11 |
| Evaluation | 95.63 0.42 | 94.76 0.19 | 92.77 0.43 | 90.22 0.12 | 93.34 |
| Mild | 95.44 0.40 | 94.24 0.62 | 89.95 0.72 | 89.71 0.08 | 92.33 |
| DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 | Average | |
|---|---|---|---|---|---|
| 1 | 87.93 0.69 | 82.45 2.18 | 75.94 0.69 | 80.61 4.01 | 81.73 |
| 2 | 91.71 0.33 | 88.19 1.54 | 81.07 1.00 | 86.32 0.16 | 86.82 |
| 3 | 93.95 0.32 | 90.80 0.97 | 83.08 0.81 | 87.84 0.07 | 88.92 |
| 4 | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 | 90.11 |
| 5 | 95.33 0.39 | 92.89 0.93 | 86.49 1.25 | 89.42 0.07 | 91.03 |
| 6 | 95.72 0.42 | 93.40 0.99 | 87.56 0.42 | 89.88 0.04 | 91.64 |
| Epochs | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 | Average |
|---|---|---|---|---|---|
| 1 | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 | 90.11 |
| 2 | 96.47 0.17 | 94.18 0.68 | 89.07 0.67 | 90.50 0.12 | 92.55 |
| 3 | 96.96 0.12 | 94.32 0.74 | 90.67 0.52 | 91.30 0.09 | 93.31 |
| 4 | 97.05 0.13 | 94.19 0.76 | 91.82 0.23 | 91.81 0.08 | 93.72 |
| Training input | Evaluation input | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|---|
| Resize | Resize | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 |
| Resize | Mixed | 94.75 0.31 | 91.77 1.15 | 82.18 0.88 | 86.67 0.10 |
| Crop | Mixed | 94.73 0.31 | 88.42 0.82 | 84.56 1.59 | 86.50 0.08 |
| Fusion strategy | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 |
| Sum fusion | 92.47 0.37 | 85.65 1.38 | 81.79 1.64 | 87.78 0.10 |
| Max fusion | 91.84 0.44 | 85.35 1.33 | 81.77 1.44 | 88.54 0.11 |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 |
| Separate heads | 92.84 0.33 | 90.20 1.01 | 81.89 1.05 | 88.27 0.21 |
| Stacked heads | 91.52 0.30 | 81.47 7.02 | 78.00 1.35 | 85.96 1.10 |
| Separate heads (aux) | 94.02 0.46 | 92.53 0.56 | 82.32 1.57 | 88.67 0.10 |
| Stacked heads (aux) | 93.11 0.48 | 85.46 2.76 | 79.36 2.05 | 85.64 0.80 |
| Centroids | Fusion | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|---|
| Baseline | – | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 |
| 1 | Sum | 85.69 1.29 | 84.55 1.09 | 71.10 0.72 | 79.42 0.31 |
| 2 | Sum | 86.01 0.32 | 85.59 1.22 | 71.46 1.47 | 78.73 0.13 |
| 3 | Sum | 85.95 0.86 | 85.97 0.91 | 71.04 1.23 | 77.76 0.54 |
| 1 | Max | 83.75 0.66 | 84.20 1.20 | 75.74 3.32 | 75.95 0.21 |
| 2 | Max | 80.45 0.48 | 84.98 1.22 | 70.43 2.82 | 76.07 0.32 |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline (reference) | 94.56 0.45 | 92.05 1.16 | 85.08 0.52 | 88.76 0.06 |
| Reset weights | 91.16 0.18 | 88.63 1.69 | 80.14 1.33 | 86.95 0.13 |
| Naive | 91.68 0.27 | 89.18 0.72 | 80.28 0.14 | 87.06 0.15 |
| Replay (CB, 10k) | 92.37 0.29 | 92.00 1.17 | 81.12 1.56 | 87.18 0.19 |
| Replay (CB, 20k) | 92.82 0.43 | 92.44 1.35 | 81.31 0.81 | 87.10 0.19 |
| Replay (harmonic) | 93.37 0.49 | 92.89 0.95 | 83.36 0.67 | 87.20 0.19 |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline (reference) | 99.27 0.09 | 98.20 0.34 | 91.97 0.56 | 95.36 0.08 |
| Reset weights | 97.80 0.19 | 96.17 0.51 | 85.78 1.62 | 93.34 0.09 |
| Naive | 96.19 0.52 | 93.72 0.23 | 82.12 0.77 | 91.83 0.11 |
| Replay (CB, 10k) | 98.14 0.06 | 97.37 0.55 | 86.79 1.78 | 93.07 0.06 |
| Replay (CB, 20k) | 98.57 0.24 | 97.73 0.68 | 87.47 0.65 | 93.35 0.07 |
| Replay (harmonic) | 98.71 0.16 | 98.03 0.49 | 89.59 0.66 | 93.32 0.10 |
| Window | Baseline | Naive | CB (10k) | CB (20k) | Harmonic |
|---|---|---|---|---|---|
| 1 | 100% | 50.00% | 65.63% | 75.00% | 75.00% |
| 2 | 100% | 33.33% | 43.75% | 54.17% | 58.33% |
| 3 | 100% | 25.00% | 32.81% | 40.63% | 47.92% |
| 4 | 100% | 20.00% | 26.25% | 32.50% | 40.83% |
| 5 | 100% | 16.67% | 21.88% | 27.08% | 35.69% |
| 6 | 100% | 14.29% | 18.75% | 23.21% | 31.79% |
| Recommendation | Backbone | AUROC (pp) | Train | Infer. |
| Evaluation augmentation vs. baseline (Fig. 2 ) | All | avg. | ||
| Four epochs vs. one epoch (Fig. 4 ) | All | avg. | ||
| Mixed inference vs. resize-only (Fig. 5 ) | DINOv2 | |||
| ViT-L CLIP | ||||
| ResNet-50 CLIP | ||||
| EfficientNet-B0 |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Pipeline | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| Evaluation | 95.68 [95.53, 95.83] | 94.55 [94.37, 94.74] | 93.22 [93.03, 93.41] | 90.19 [89.96, 90.41] |
| Mild | 95.43 [95.27, 95.59] | 93.53 [93.33, 93.72] | 90.22 [90.00, 90.45] | 89.69 [89.45, 89.92] |
| DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 | |
|---|---|---|---|---|
| 1 | 87.46 [87.20, 87.73] | 79.93 [79.61, 80.26] | 75.92 [75.56, 76.29] | 75.98 [75.62, 76.33] |
| 2 | 91.73 [91.52, 91.95] | 86.44 [86.16, 86.72] | 81.77 [81.45, 82.09] | 86.51 [86.24, 86.78] |
| 3 | 93.86 [93.68, 94.04] | 89.71 [89.45, 89.96] | 82.65 [82.33, 82.96] | 87.91 [87.65, 88.17] |
| 4 | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.02] | 85.21 [84.92, 85.51] | 88.79 [88.54, 89.03] |
| 5 | 95.14 [94.99, 95.31] | 91.83 [91.60, 92.06] | 86.54 [86.26, 86.82] | 89.40 [89.16, 89.63] |
| 6 | 95.73 [95.57, 95.88] | 92.30 [92.07, 92.52] | 87.46 [87.19, 87.73] | 89.87 [89.64, 90.11] |
| Epochs | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| 1 | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| 2 | 96.38 [96.25, 96.52] | 93.41 [93.20, 93.61] | 89.20 [88.95, 89.44] | 90.39 [90.16, 90.61] |
| 3 | 96.94 [96.81, 97.07] | 93.46 [93.26, 93.67] | 90.68 [90.45, 90.91] | 91.21 [91.00, 91.43] |
| 4 | 97.09 [96.97, 97.21] | 93.31 [93.10, 93.53] | 92.04 [91.82, 92.25] | 91.73 [91.52, 91.93] |
| Train. / Eval. input | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Resize / Resize | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| Resize / Mixed | 94.63 [94.45, 94.80] | 90.65 [90.41, 90.90] | 82.81 [82.49, 83.13] | 86.79 [86.52, 87.06] |
| Crop / Mixed | 94.95 [94.78, 95.11] | 87.48 [87.21, 87.76] | 82.72 [82.41, 83.02] | 86.54 [86.27, 86.81] |
| Fusion strategy | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| Sum fusion | 92.87 [92.67, 93.07] | 84.55 [84.27, 84.82] | 82.81 [82.50, 83.12] | 87.86 [87.59, 88.11] |
| Max fusion | 92.31 [92.10, 92.52] | 84.55 [84.26, 84.83] | 82.64 [82.33, 82.95] | 88.67 [88.41, 88.91] |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| Separate heads | 93.15 [92.96, 93.35] | 89.03 [88.79, 89.27] | 82.99 [82.68, 83.30] | 88.05 [87.79, 88.30] |
| Stacked heads | 91.17 [90.95, 91.39] | 84.95 [84.69, 85.20] | 77.70 [77.40, 78.01] | 86.08 [85.81, 86.35] |
| Separate heads (aux) | 94.21 [94.03, 94.39] | 92.35 [92.14, 92.55] | 84.09 [83.79, 84.39] | 88.55 [88.30, 88.80] |
| Stacked heads (aux) | 93.66 [93.47, 93.85] | 86.74 [86.49, 87.00] | 81.65 [81.34, 81.96] | 85.65 [85.37, 85.92] |
| Centroids | Fusion | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|---|
| Baseline | – | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| 1 | Sum | 86.69 [86.41, 86.96] | 84.14 [83.81, 84.46] | 71.84 [71.44, 72.23] | 79.43 [79.09, 79.76] |
| 2 | Sum | 86.35 [86.07, 86.63] | 85.23 [84.92, 85.54] | 70.88 [70.48, 71.27] | 78.63 [78.28, 78.97] |
| 3 | Sum | 86.73 [86.45, 87.00] | 84.93 [84.62, 85.24] | 70.48 [70.08, 70.86] | 77.58 [77.23, 77.93] |
| 1 | Max | 83.15 [82.86, 83.43] | 83.98 [83.65, 84.31] | 77.71 [77.33, 78.07] | 76.10 [75.75, 76.45] |
| 2 | Max | 80.88 [80.58, 81.18] | 84.63 [84.31, 84.95] | 72.10 [71.70, 72.49] | 76.17 [75.83, 76.52] |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline (reference) | 94.22 [94.04, 94.40] | 90.79 [90.55, 91.03] | 85.21 [84.93, 85.51] | 88.79 [88.54, 89.03] |
| Reset weights | 91.01 [90.79, 91.22] | 86.69 [86.43, 86.96] | 81.08 [80.75, 81.41] | 87.09 [86.83, 87.36] |
| Naive | 91.83 [91.62, 92.03] | 88.36 [88.10, 88.62] | 80.15 [79.81, 80.48] | 87.17 [86.91, 87.43] |
| Replay (CB, 10k) | 92.14 [91.94, 92.34] | 90.66 [90.43, 90.90] | 82.19 [81.88, 82.51] | 87.31 [87.05, 87.57] |
| Replay (CB, 20k) | 93.29 [93.10, 93.48] | 90.96 [90.72, 91.19] | 81.66 [81.33, 81.99] | 87.23 [86.98, 87.49] |
| Replay (harmonic) | 93.76 [93.57, 93.94] | 91.87 [91.65, 92.09] | 84.13 [83.82, 84.43] | 87.03 [86.77, 87.30] |
| Configuration | DINOv2 | ViT-L CLIP | ResNet-50 CLIP | EfficientNet-B0 |
|---|---|---|---|---|
| Baseline (reference) | 99.24 [99.20, 99.28] | 97.81 [97.74, 97.89] | 92.41 [92.27, 92.55] | 95.42 [95.33, 95.51] |
| Reset weights | 97.98 [97.93, 98.03] | 95.79 [95.70, 95.88] | 86.65 [86.49, 86.81] | 93.41 [93.31, 93.51] |
| Naive | 96.50 [96.45, 96.56] | 93.62 [93.53, 93.72] | 82.13 [81.95, 82.30] | 91.92 [91.82, 92.03] |
| Replay (CB, 10k) | 98.20 [98.16, 98.25] | 96.74 [96.65, 96.82] | 88.03 [87.88, 88.19] | 93.12 [93.02, 93.22] |
| Replay (CB, 20k) | 98.83 [98.79, 98.86] | 96.95 [96.87, 97.03] | 87.40 [87.24, 87.56] | 93.43 [93.33, 93.53] |
| Replay (harmonic) | 98.88 [98.85, 98.92] | 97.46 [97.38, 97.54] | 90.36 [90.21, 90.51] | 93.20 [93.10, 93.31] |
| Recommendation | Backbone | AUROC (pp) [95% CI] |
| Evaluation augmentation vs. baseline | All | avg. |
| Four epochs vs. one epoch | All | avg. |
| Mixed inference vs. resize-only | DINOv2 | |
| ViT-L CLIP | ||
| ResNet-50 CLIP | ||
| EfficientNet-B0 |