2026 – present
Explainable forgery detectors are scored for plausibility or localization overlap, never for whether the cited region drives the verdict. I test that with counterfactuals that contain no synthetic pixels: every face-swap frame has a frame-aligned authentic twin, so the authentic region spliced back in is the counterfactual.
An identity splice controls for the seam. The codebase is complete and self-tested, with control detectors of known faithfulness, Qwen2.5-VL and CNN+Grad-CAM detectors, and a pre-registered development/test split. First runs on FaceForensics++ are scheduled.
PyTorchPython
Code
2026 – present
JEPA models train a predictor to infer a hidden region's representation from context and a positional query, then discard it. I query the frozen predictor at a patch position and rank its output against every patch's true representation, which gives localization accuracy with no labels or training.
Two chance baselines, a positional-query ablation, and cross-image controls bound the result. I designed the protocol and built the codebase; the first real-weights run is complete. Undergraduates I supervise run the experiments and the web instrument as their Final Year Design Project.
PyTorchPython
Code
2023
I built a TinyBERT-based text-to-SQL system on the Spider dataset. Adding reinforcement learning from execution feedback improved logical correctness without requiring a larger model.
PyTorchPython
Code