Origins — three architectures and a homography
Covers v1 through v1.2 (spring 2026), curated from my original research notebooks.
I did not start with a detector. I started with classical computational photography: SIFT keypoints, FLANN matching, RANSAC homographies — the same toolchain used in production camera pipelines — and pointed it at a new question: given a base image and a set of candidate crops or derivatives, can projective geometry tell me which regions share an origin?
The v1 homography notebook localizing test regions against a base image via SIFT + FLANN inlier counts. I was using the homography as a localization tool here. The realization that reframed the whole project: the homography itself — not the matching — is the discriminative operator. Warp an image region and warp it back, and what survives tells you how it was formed.
Three architectures in parallel
In v1 I explored three detector architectures simultaneously, all trained on locally synthesized data (real = camera photos; generated = FLUX.1-schnell outputs):
- SAST — a Seam-Aware Spectral Transformer. Motivated by DiT/MMDiT-era generators: attention-based denoising operates on latent patch tokens, and the seams between independently-attended tokens must reconcile locally what was computed globally. The transformer modeled whether neighboring tiles "speak the same spectral dialect" across their shared boundary. The framing — solve the architecturally hard case (DiT, flow matching) first, and UNet falls out as the constrained special case — survived into the patent notes even though the architecture itself didn't ship.
- A pix2pix GAN producing a dense artifact heatmap per image.
- XGBoost on a handful of analytic probe metrics per tile — warp residual, spectral periodicity, gradient circular variance, and companions.
The v1 GAN-adjacent detector's per-image heatmaps. It worked on the test set — but as a learned dense model it was solving a harder problem than the data could support.
The trees won, and the reason mattered more than the result: the signal lives in the distribution of per-tile physical scalars, not in their spatial arrangement. I was asking a transformer to learn positional context from ~70 images; I was asking XGBoost to learn that generated tiles occupy a different region of a low-dimensional probe space where the classes are genuinely separated. The simpler problem has the more direct solution.
SHAP decomposition of the v1 probe model: the cross-region residual correlation already dominates — the cross-region physics signal, two versions before the hypothesis formalized why.
The tile grid
The other v1 decision that stuck was the two-level tiling: outer patches for aggregation, inner tiles for measurement, run over the full image grid.
The result that revealed what the probe measures
My most important v1 result wasn't real-vs-AI at all. When I ran the probe on CGI renders, the scores sat between the two classes:
Real photo → low band physical sensor: PRNU, shot noise, incoherent gradients
CGI render → middle band mathematical render: no sensor, but no attention coherence either
AI generated → high band learned denoising: an unnaturally organized gradient fieldA path-traced render has no sensor — no PRNU, no shot noise — but its Monte Carlo sampling noise is spatially incoherent, per-pixel independent, structurally closer to sensor noise than to diffusion artifacts. The probe wasn't detecting "fake." It was measuring consistency with the camera formation model — placing images on a physical-plausibility spectrum by source: photographed, rendered, or denoised into existence. Three sources, three rights frameworks — the provenance framing that would eventually define the product.
v1.1–v1.2: the crop problem
In v1.1 I added SIFT geometric-consistency features so small crops would retain a fingerprint; in v1.2 I reset to the probe-only control to measure honestly. My crop-bypass experiments exposed a bug of mine that became a philosophy: the cross-region extraction hard-coded a minimum distance between tile pairs, so on small crops no valid pairs formed and the feature silently returned a neutral value. Fixing it proved the discriminative signal was the relationship between distant regions — and pointed directly at the hypothesis.