GSTF — Generator-Specific Temporal Forensics

Video deepfake research that attributes face-swap clips to specific generators, not just real vs fake.

  • Python
  • PyTorch
  • torchvision
  • OpenCV
  • YAML
  • Grad-CAM
  • scikit-learn
  • UMAP
  • Docker
  • pytest

Case study

In brief

  1. Problem

    Deepfake detection often stops at real versus fake, but investigators need to know which face-swap generator produced a clip.

  2. Approach

    Master's thesis research: train an R(2+1)D video backbone on FaceForensics++, freeze it, then learn an ArcFace metric head for sharper generator separation. A second stage studies DFDM transfer with Elastic Weight Consolidation.

  3. Outcome

    The ArcFace stage reaches 86.7% three-way generator attribution on FF++ validation in the logged baseline run, with Grad-CAM and UMAP analysis for interpretability.

Look closer

Stage

Architecture

Videos become frame datasets; training phases write checkpoints that evaluation and Grad-CAM / UMAP read back.

Architecture

Raw videos (FF++ / DFDM)
YAML configs
Preprocess frames
main.py CLI
Dataset loaders
Phase 1: backbone (R(2+1)D / CNN-LSTM)
Phase 2: ArcFace head
Phase 3: DFDM adapt (EWC)
Checkpoints + logs
Evaluate
Grad-CAM / UMAP

Proof

Video deepfake research that attributes face-swap clips to specific generators, not just real vs fake.

Proof

GSTF — Deepfake Video Attribution (Master's thesis)

held-out accuracy (FaceForensics++, ArcFace): 86.7%
backbone: R(2+1)D + ArcFace metric learning
continual learning: Elastic Weight Consolidation (EWC)

pipeline phases
  1. ingest   — short face clips, frame sampling
  2. encode   — R(2+1)D spatio-temporal features
  3. attribute— ArcFace embedding → generator class
  4. adapt    — EWC fine-tune on new generators

attribution flow (ASCII)
  video clip ──► R(2+1)D ──► ArcFace head ──► generator label
                    │              │
                    └── Grad-CAM ──┘  (spatial heatmap)

datasets: FaceForensics++, DFDM
runner: YAML-driven experiments, Dockerised training

Continue