Methods for detecting AI-generated video fall into three long-standing categories: low-level analysis of generation artifacts, high-level tests of physical plausibility, and learned classifiers over deep embeddings. Detectors in each category generalize poorly beyond their training distribution, and, we argue, published comparisons between them are confounded by backbone size discrepancies. We present, to our knowledge, the first architecture that explicitly unifies all three categories of cues—density-based anomaly scores over frozen encoder features, fused with spectral and motion-coherence streams—and name it SEAM. Trained on a single generator from AIGVDBench, SEAM reaches 0.92 AUC on 19 unseen open-source generators, beating the state-of-the-art (SOTA) performance, and matching SOTA performance (0.87 AUC) on 11 unseen commercial generators, including Sora, Kling, and Pika. We further introduce SLOP, a dataset of 6,000 real and AI-generated videos from Instagram, TikTok, and X, and a taxonomy of such content. SEAM achieves the best in-domain performance on SLOP (0.96 AUC), and a SEAM trained on SLOP transfers to unseen commercial generators better than any baseline trained on the same data (0.89 AUC).
SEAM fits a Gaussian density to features of real footage (only), and scores a clip by how far it is from that density. A video from a generator the model has never seen is detected for deviating from reality, essentially when it does not resemble anything it had been trained on.
The score combines four streams; here's what they look like on an example clip:







Every method here is trained on a single generator (Open-Sora, 2,000 clips per class) and then tested on 19 unseen open-source and 11 unseen commercial generators. Published comparisons often put a small detector next to a much larger one, which makes it hard to tell a better method from a bigger backbone. So we retrained all nine baselines ourselves, on the same data, splits and frame extraction, with size-matched encoders of about 22M parameters.
SEAM leads on close-OOD and holds its own on far-OOD. Its close-OOD AUC is 0.923, against 0.885 for the next-best method. On commercial generators the methods are much closer, and differences of about 0.015 AUC are within the seed-to-seed noise we measured, so we read that column as a tie.
| Approach | Method | ID | OOD-C | OOD-F | MNW | MintVid |
|---|---|---|---|---|---|---|
| Baselines (retrained) | Linear probe (UFD) | 1.000 | 0.858 | 0.819 | 0.728 | 0.753 |
| Full fine-tune | 1.000 | 0.732 | 0.821 | 0.660 | 0.624 | |
| RINE | 1.000 | 0.816 | 0.764 | 0.645 | 0.679 | |
| FatFormer | 1.000 | 0.820 | 0.850 | 0.496 | 0.555 | |
| C2P-CLIP | 1.000 | 0.639 | 0.622 | 0.570 | 0.532 | |
| DeMamba | 1.000 | 0.858 | 0.802 | 0.728 | 0.727 | |
| Human Action CLIPs | 1.000 | 0.885 | 0.844 | 0.642 | 0.769 | |
| Effort | 1.000 | 0.824 | 0.868 | 0.786 | 0.715 | |
| ForgeLens | 1.000 | 0.826 | 0.870 | 0.755 | 0.640 | |
| SEAM (ours) | SEAM, best configuration | 1.000 | 0.923 | 0.871 | 0.804 | 0.776 |
AUC against state-of-the-art detectors. Held-out Open-Sora (ID), 19 unseen open-source generators (OOD-C), 11 unseen commercial generators (OOD-F), in-the-wild clips from 2025-era commercial generators (MNW) and talking-head generation (MintVid). The SEAM row takes its better configuration per column.
Compression is SEAM's weakness. After H.264 re-encoding, SEAM's far-OOD AUC drops from -0.120 at CRF 23 to -0.271 at CRF 47. It holds up better than Effort at light compression but falls behind it from CRF 35, and ForgeLens degrades less throughout. The frame-to-frame changes that its temporal streams read are what compression corrupts.
| Method | Clean | Δ CRF 23 | Δ 28 | Δ 35 | Δ 42 | Δ 47 | |
|---|---|---|---|---|---|---|---|
| Baselines | Effort | 0.868 | -0.175 | -0.214 | -0.215 | -0.230 | -0.250 |
| ForgeLens | 0.869 | -0.072 | -0.058 | -0.054 | -0.068 | -0.079 | |
| SEAM | SEAM (ours) | 0.871 | -0.120 | -0.200 | -0.244 | -0.264 | -0.271 |
Compression resilience. Change in OOD-F AUC after H.264 re-encoding at increasing CRF; closer to zero is better. The two strongest far-OOD baselines are shown.
Generally, dataset benchmarks for deepfake detection are too clean to represent content often found on social media. Social media videos tend to be cropped, captioned, filtered, recompressed, etc. SLOP collects AI-generated and real videos from Instagram, TikTok and X so we can test on that kind of footage.
SLOP has 6,000 posts in a 50:50 split of real and AI-generated content, balanced across Instagram, TikTok and X. Splits are account-disjoint (70% train, 10% validation, 20% test), so no creator contributes to more than one split and a detector cannot exploit creator-specific cues. It mixes platform-representative random panels, dedicated AI-persona and AI-influencer accounts, and matched human creator accounts for the real class.
No existing dataset combines in-the-wild collection, platform-native processing, full-frame AI generation and AI-persona accounts with a balanced, split-ready release.
| Dataset | Year | Videos | In-the-wild | Social | AI-gen | Personas | Balanced | Splits | |
|---|---|---|---|---|---|---|---|---|---|
| Prior | WildDeepfake | 2020 | 707 | ✓ | ✓ | ✓ | |||
| DFDC | 2020 | 128,154 | ✓ | ||||||
| DF40 | 2024 | 0.1M+ | ~ | ~ | ✓ | ||||
| GenVideo | 2024 | 2.3M | ✓ | ~ | ✓ | ||||
| Deepfake-Eval-2024 | 2024 | 2,036 | ✓ | ✓ | ~ | ||||
| DeepSpeak | 2026 | 13,025 | ~ | ~ | ✓ | ||||
| DeepSpeak-Agentic | 2026 | 200 | ~ | ✓ | |||||
| MNW | 2026 | 320 | ✓ | ~ | ✓ | ||||
| Ours | SLOP | 2026 | 6,000 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Dataset comparison. In-the-wild: collected from circulating posts. Social: platform-native processing. AI-gen: full-frame generation, as opposed to face manipulation. Personas: dedicated AI-persona accounts. A tilde means partially. Sizes are video counts.
To better understand our dataset as well as social media content in general, we created a taxonomy that sorts clips along three axes: style, format, and content. See examples of this below.
Trained on the SLOP train split and tested on its creator-disjoint test split, SEAM reaches 0.961 AP and 0.957 AUROC, ahead of Effort and ForgeLens.
| Setting | Method | AP | AUROC |
|---|---|---|---|
| Trained and tested on SLOP | SEAM (ours) | 0.961 | 0.957 |
| Effort | 0.956 | 0.954 | |
| ForgeLens | 0.929 | 0.929 |
In-domain performance on SLOP. Trained on the train split, evaluated on the creator-disjoint test split. AP: average precision. The two strongest far-OOD baselines are shown.
Re-fitting the densities and the small head recovers SLOP. SEAM trained on AIGVDBench scores only 0.569 on SLOP, and re-fitting the densities and head on SLOP's train split lifts that to 0.957 without touching the encoder. Across all five test sets SEAM has the best grid mean (0.769, against 0.742 for Effort and 0.717 for ForgeLens), and the best single transfer cell is 0.904, a MintVid-trained model evaluated on AIGVDBench. All three methods score low on VRT (0.49 to 0.63), whose real class is ASMR only.
| Method | Trained on | AIGVD | SM | MintVid | MNW | VRT |
|---|---|---|---|---|---|---|
| SEAM (ours) | AIGVD | 0.813 | 0.569 | 0.779 | 0.721 | 0.574 |
| SM | 0.894 | 0.957 | 0.714 | 0.878 | 0.568 | |
| MintVid | 0.904 | 0.807 | 0.952 | 0.818 | 0.590 | |
| Effort | AIGVD | 0.868 | 0.609 | 0.702 | 0.786 | 0.546 |
| SM | 0.853 | 0.954 | 0.642 | 0.743 | 0.628 | |
| MintVid | 0.809 | 0.781 | 0.948 | 0.740 | 0.517 | |
| ForgeLens | AIGVD | 0.869 | 0.851 | 0.626 | 0.755 | 0.550 |
| SM | 0.711 | 0.929 | 0.624 | 0.649 | 0.492 | |
| MintVid | 0.869 | 0.817 | 0.768 | 0.703 | 0.543 | |
Cross-training generalization. Each method is trained on one dataset (rows) and evaluated on five test sets. MNW and VRT are evaluation-only. SM is SLOP. The two strongest far-OOD baselines are shown.
SEAM tends to miss more AI-generated content than infer real content to be AI. On SLOP, 72% of the errors are AI clips predicted as real, and the errors are spread roughly evenly across platforms (39% X, 30% Instagram, 31% TikTok). On AIGVDBench the errors concentrate in the unseen-generator conditions, with LTX and EasyAnimate the largest sources of missed fakes.
We then went through the SLOP clips that a SEAM trained on SLOP gets wrong, using the operating threshold selected for that model. Below are the errors whose videos we reviewed: 13 of 29 real clips flagged as AI and 20 of 73 AI clips passed as real, ordered from most to least confident. Each card shows the score and the split recorded for the clip.
Real flagged as AI. These include many clips from a single polished pet-influencer account, plus heavily edited footage: glitch and particle effects, template overlays.
AI passed as real. Many are photoreal vertical talking-head or street-interview clips, several featuring the same recurring AI persona. The gallery shows at most three clips per account; that persona account alone makes up 28 of the 73 misses.
These errors may be caused by the model keying on how polished a video looks rather than on whether a camera captured it.











































































SEAM errors on SLOP. Each card shows the ground-truth label, model score, platform and data split.
Each point is one clip, embedded by the frozen OpenVision ViT-S/16 encoder and projected to two dimensions with PCA. Hover a point for details, click a legend entry to hide a group, and switch the coloring above each plot.
Unseen generators hide among real clips. Press play on the AIGVDBench plot. The training generator sits far from real footage, but once unseen generators arrive they land on top of it: in this view, none of the training generator's clips fall inside the cloud of real footage, against most of the unseen generators'. On SLOP, AI and real clips overlap heavily, so no single linear direction separates them.
Embedding space. 100 clips per group, except 40 for HunyuanVideo and AccVideo and 80 for each commercial generator (Sora, Gen2, Pika).
Citation coming soon.