← floatbird on-device · nothing uploaded

blindspot

Drop in your face and pick a target who looks nothing like you. blindspot finds a tiny, near-invisible change to your pixels that makes a real face recognizer certain you're the target. You still see yourself, the model is now sure you're someone else. Scrub the strength slider and watch its distance to the target fall past the “same person” match line while its distance to the real you climbs away.

the photo never leaves your device: detection, alignment, recognition and the attack all run in this tab
your face · aligned
Drop a face photoor click, or use the sample face below.
Stays in your browser.
loading…
what the recognizer seesattacked
computing the attack…
the change · amplified ×12what was added
Pick a target below to run the attack.
The recognizer compares faces by embedding distance. Under the line ⇒ “same person”.
perturbation strength0% · L∞ 0.0/255
recognizer distance to target-
-
lower = more “this is them”. Match line = 0.60.
recognizer distance to the real you-
-
climbs as the attack erases your own identity.
Pick a target. All six are AI-generated faces of people who don't exist (so no real person's data is involved):

What you're looking at

Face recognition doesn't sort people into named buckets. It embeds a face into a vector of numbers and compares distances: two photos are “the same person” when their vectors land within a threshold of each other. The recognizer here is the well-known dlib / face-api ResNet embedder; its same-person line sits at a distance of 0.60.

So fooling it isn't flipping a label: it's an impersonation attack on the embedding. Starting from your aligned face, the page runs projected gradient descent: a few dozen steps that each nudge your pixels in the direction that moves your face vector toward the target's vector, while a tight bound keeps every pixel within a few values of the original. The result lands almost exactly on the target's embedding, so the recognizer reports a confident match, yet to your eye nothing changed. The third panel amplifies the change so you can see the faint pattern that does all the work.

The slider scrubs that same perturbation from 0% to full. Watch the left meter (distance to the target) dive under the 0.60 line while the right meter (distance to the real you) lifts above it: in a few hundredths of a unit of invisible noise, you stop being you and become a stranger.

Privacy

Everything, face detection, landmark alignment, the recognition model, and the gradient attack, runs in this browser tab via TensorFlow.js (the gradient attack needs a runtime that exposes gradients, which is why this page uses TensorFlow.js rather than the ONNX runtime the other on-device pages use). No photo, no embedding, no pixel is ever uploaded. Reload and it's gone.

part of floatbird · recognition, detection & landmark models from face-api.js (dlib lineage, MIT) · target faces generated with StyleGAN (no real person)