What you are looking at
A flip illusion is one printable picture. Upright, it reads as subject A. After a 180-degree turn, it reads as subject B. The file you send to a printer is the prime. The two views on this page are that same sheet, before and after the turn.
The method is Diffusion Illusions (Burgert et al.). A frozen image model scores how much each view matches its prompt. Only a small network that paints the prime is trained. The large model stays frozen.
This page is the public study of that method on our worker stack. A typeset paper can follow. This site is the version you can read now.
How the optimizer is built
The optimizer has four parts. A prime network paints each printable image. Fixed arrangements turn primes into derived views. A frozen diffusion model scores those views. Only the prime network is trained.
Flip uses one prime and a 180-degree turn. Rotate and hidden types stack transparencies. This page shows flip only. Flip is the type we measured.
Gradients never flow through the UNet. The large model stays frozen. That is Score Distillation, then Dream Target.
The prime is a small network
Each prime is a Fourier Feature Network. Pixel coordinates go through a fixed random projection, then sine and cosine, then a small MLP, then sigmoid RGB.
The paper shows why this matters. Pixel optimization hides the signal in high frequencies. A printer cannot hold that noise. Network-weight optimization keeps the signal in printable structure.
Score Distillation
Phase 1 uses frozen Stable Diffusion 1.5. The step encodes each derived view to latents. It adds noise at a random timestep. The frozen UNet scores the noised latents with high classifier-free guidance.
The step applies the guided noise residual as a gradient on those latents. That gradient updates only the prime network. The paper printed pseudocode has no gradient path. The authors' code uses residual-as-gradient. Every SDS implementation uses that form.
Two phases
Phase 2 is Dream Target. It uses DreamShaper LCM. Each round asks img2img for a cleaner target. Then SSIM and MSE pull the derived views toward that target. Strength starts high and decays to a light polish.
The optimizer CLI defaults are 500 SDS steps and 8 Dream rounds. We baked the gallery with a research recipe: 5000 SDS steps and 1 Dream round.
The loop creates a fresh Adam optimizer at the phase boundary. SDS gradients are about four orders of magnitude larger than Dream Target gradients. Without the reset, phase 2 moved loss by under 2 percent per round. With the reset, it moved 44 to 60 percent. Those figures come from a short flip run. The run used 250 SDS steps and 4 Dream Target rounds of 150 steps each.
Joint Dream
Independent Dream Targets can fight over the same pixels. Joint Dream denoises both flip views together. It averages them in the upright frame. Then it steps from that consensus. The two views become two orientations of one image.
The loop averages in pixel space. The SD 1.5 VAE does not commute with a 180-degree turn in latent space. Joint Dream is an opt-in flag. It is not the product default. It can rescue a pair whose shapes can be one picture. It can also collapse a pair whose subjects cannot.
What we actually measured
A good result is a specific pair, seed, and viewing mode. It is not a recipe that works every time. We pick keepers by eye. An automatic CLIP screen was not good enough (ROC-AUC 0.706 against a 0.75 bar), so it is not used.
Prompt wording is the biggest lever. It is not predictable by argument. Frames and extra objects come from the specific phrase. They do not come from sketch versus oil as a medium. We kept oil for color and for fewer photographic frames. We did not keep oil because it won on yield.
We rejected negative prompts. Extra Dream rounds after the first made images worse. 256 px primes were enough. 512 px cost about 3.3 times as much for no visible gain.
These conclusions came after the gallery was baked. The 6 images below span both wordings and both styles. 5 of 6 used joint Dream. The giraffe and penguin pair used independent targets. Export window2-2026-08-clean.
Gallery
6 keepers from a blind review. Score 5, and no major frame defect. Flip each card. These do not promise that the same pair will work on a new seed.

Elephant and swan
Elephant

Wolf and raven
Wolf

Moose and butterfly
Moose

Giraffe and penguin
Giraffe

Stag and oak
Stag

Eagle and phoenix
Eagle
How you would print it
For flip, print the prime on paper. Turn the sheet around. Laser output is enough for a desk test. Rotate and hidden types need transparency film and a backlight. They are not on this page.
Not in the studio yet
There is no illusion job in the API. There is no designer in the app. The optimizer is a worker CLI on an unmerged branch. This page is the public study of that research.
When jobs land, they will sit behind realtime drawing sessions. Other batch work sits there too. Until then, the live product is still the canvas loop in the whitepaper.
A typeset paper can follow. This page is the public study until then.
Images generated with Stable Diffusion 1.5 and DreamShaper LCM (CreativeML Open RAIL-M).