Universal Representations for Robust AI-Generated Video Detection

Rhea Susarla1 and Maty Bohacek2

1 Fremont Union High School District    2 Stanford University

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).

Paper    Code    Models    Data

See the four streams on an example video

Key Takeaways

How can we build detectors that work on generators they haven't seen before?

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:

What is left aftersmoothing is removeddiscardedspatial frequency, low to highenergygray band: range of real footagepurple line: this frame
Low-level artifactsSpatial spectrum Remove the smooth content and look at what is left. The curve shows how much energy the frame has at each spatial frequency; gray is the range real footage occupies. A band dominated by resolution and compression is discarded.
Frame with orange patches marking those far from typical real footage
Learned representationsSpatial semantics A frozen encoder reads each patch. Orange marks patches that sit far from typical patches of real footage.
Frame with arrows following patches to their match in the next frame
Physical plausibilityMotion coherence Each arrow follows a patch to its best match in the next frame. Real motion carries neighbors along together.
Frame with blue patches marking unusual change between frames
Physical plausibilitySemantic change Blue marks patches whose features changed unusually from one frame to the next.

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.

ApproachMethodIDOOD-COOD-FMNWMintVid
Baselines (retrained)Linear probe (UFD)1.0000.8580.8190.7280.753
Full fine-tune1.0000.7320.8210.6600.624
RINE1.0000.8160.7640.6450.679
FatFormer1.0000.8200.8500.4960.555
C2P-CLIP1.0000.6390.6220.5700.532
DeMamba1.0000.8580.8020.7280.727
Human Action CLIPs1.0000.8850.8440.6420.769
Effort1.0000.8240.8680.7860.715
ForgeLens1.0000.8260.8700.7550.640
SEAM (ours)SEAM, best configuration1.0000.9230.8710.8040.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.

MethodCleanΔ CRF 23Δ 28Δ 35Δ 42Δ 47
BaselinesEffort0.868-0.175-0.214-0.215-0.230-0.250
ForgeLens0.869-0.072-0.058-0.054-0.068-0.079
SEAMSEAM (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.

Social media videos are wildly different from current deepfake detection benchmarks

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.

DatasetYearVideosIn-the-wildSocialAI-genPersonasBalancedSplits
PriorWildDeepfake2020707✓✓✓
DFDC2020128,154✓
DF4020240.1M+~~✓
GenVideo20242.3M✓~✓
Deepfake-Eval-202420242,036✓✓~
DeepSpeak202613,025~~✓
DeepSpeak-Agentic2026200~✓
MNW2026320✓~✓
OursSLOP20266,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.

Animated

AIInstagram

Hyperrealistic

AIInstagram
AIX

Security camera

AIInstagram

Screen recording

RealTikTok
RealTikTok

Talking head

RealTikTok
RealTikTok

Macro

RealInstagram

Full-form scene

RealTikTok
RealTikTok

Single object

RealInstagram
RealInstagram

Nature

RealTikTok
RealTikTok

Interview

RealTikTok
RealTikTok

News

RealTikTok
RealTikTok

Pet / animal

AIInstagram
RealTikTok

Storytelling

AIInstagram
RealInstagram

Vlog

RealInstagram
RealInstagram

Found footage / handheld

RealInstagram
RealInstagram

Advertisement

AIInstagram
AIInstagram

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.

SettingMethodAPAUROC
Trained and tested on SLOPSEAM (ours)0.9610.957
Effort0.9560.954
ForgeLens0.9290.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.

MethodTrained onAIGVDSMMintVidMNWVRT
SEAM (ours)AIGVD0.8130.5690.7790.7210.574
SM0.8940.9570.7140.8780.568
MintVid0.9040.8070.9520.8180.590
EffortAIGVD0.8680.6090.7020.7860.546
SM0.8530.9540.6420.7430.628
MintVid0.8090.7810.9480.7400.517
ForgeLensAIGVD0.8690.8510.6260.7550.550
SM0.7110.9290.6240.6490.492
MintVid0.8690.8170.7680.7030.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.

Misclassifications made by SEAM

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.

Real clip1.00
Flagged as AIInstagramtrain
Real clip1.00
Flagged as AIInstagramtest
Real clip1.00
Flagged as AIInstagramtrain
Real clip1.00
Flagged as AITikToktrain
Real clip1.00
Flagged as AIInstagramtrain
Real clip1.00
Flagged as AIInstagramtrain
Real clip1.00
Flagged as AITikToktrain
Real clip1.00
Flagged as AIInstagramtrain
AI clip0.00
Passed as realTikToktrain
AI clip0.03
Passed as realTikToktrain
AI clip0.03
Passed as realTikToktrain
AI clip0.03
Passed as realTikToktrain
AI clip0.06
Passed as realTikToktrain
AI clip0.08
Passed as realInstagramtest
AI clip0.13
Passed as realTikToktrain
AI clip0.22
Passed as realTikToktrain

SEAM errors on SLOP. Each card shows the ground-truth label, model score, platform and data split.

Explore the embedding space yourself

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


Citation coming soon.

Acknowledgments