Analysis Blog

Frozen encoders throw information away.
So how does a pixel come back?

Target paper
Improved Baselines with Representation Autoencoders
Jaskirat Singh, Boyang Zheng, Zongze Wu, Richard Zhang, Eli Shechtman, Saining Xie · arXiv:2605.18324

Analysis by Youngjin Shin

An encoder like DINOv3 compresses an image into meaning and throws detail away — yet RAEv2 rebuilds pixels from that latent alone. It started with one test: feed it black-and-white stripes, and the fine ones melt off. Is the detail gone from the latent, or merely unread by the decoder? Chasing that question is what this is.

Scroll
00  —  Setup

The recipe: a latent, a decoder, a diffusion model

"Before the chase — what exactly is RAEv2's latent, and what is this 'K' everything hangs on?"

RAEv2 freezes a DINOv3-L encoder and reads out its last K transformer blocks — each LayerNorm'd, then averaged into a single 16×16×1024 latent. K is the one recipe knob that matters here: K=1 takes only the last block (the most semantic, lowest-detail features — this is the latent RAEv2 actually generates from); K=7 takes every other block from 11 to 23 (its reconstruction default); K=23 takes all of them (the most detail). Deeper blocks hold more meaning and less surface detail, so K sets how much low-level detail the latent carries — the same 16×16 grid throughout; only which layers are summed changes.

interactive · what each K sums into the latent
image
Σ+ LN
latent · K=1

Each tile is one DINO block's features (PCA-coloured), piled into a 24-block deck. Press a K — the summed blocks lift out of the deck and merge into that K's latent on the right. K=1 is the last block alone (sparse, semantic); K=23 folds in every block (rich, detailed).

On that latent, two training stages. Stage 1 trains a decoder (a ViT-XL) to reconstruct pixels from the frozen latent. Stage 2 trains a diffusion transformer (DiT) to sample new latents in the same space; the very same decoder then renders those samples into images. So the latent does double duty — it must be faithfully reconstructable (Stage 1) and cleanly generatable (Stage 2) — and the tension between those two jobs is what the rest of this analysis pulls on.

interactive · Stage 2, from noise to a latent
pure
noise
a valid latent in
the encoder's space

Stage 2 trains a diffusion model (DiT) to do exactly this — start from noise and arrive at a latent that belongs to DINO's space, which the decoder then renders into an image. (Illustrative loop.)

With the recipe in hand — start by asking what each encoder layer still remembers of the pixels.

01  —  The Paradox

There is an order to what gets discarded

"If the encoder throws information away, does it vanish all at once — or layer by layer?"

First, a simple question: how much of the pixel does each encoder layer still remember?

Take the features of a single layer and reconstruct the original pixels from them alone (closed-form ridge). If it reconstructs well, that layer still holds the detail; if it smears, the detail is already gone.

how the experiment is set up
layer probe
image
Encoderfrozen DINOv3
layer Lnfeatures
ridgelinear, closed-form
pixels

Fit a closed-form linear (ridge) map from one layer's features to pixels, then reconstruct held-out images. Sharp means that layer still holds the detail; blurry means it is no longer linearly recoverable there. The slider sweeps Ln across all 24 layers.

observation · result
original
L0 reconstruction
L0 · early (detail)L23 · last (semantic)
Each encoder layer's features → pixels, via ridge regression (held-out). Drag the slider across layers — early layers (L0~) stay sharp, holding fine appearance, deeper ones blur until L23 is just 16×16 patch outlines. Information is abstracted away gradually, with depth.
Discarding has a hierarchy. Early layers hold appearance and detail; deeper layers keep only meaning and let detail go. Information does not vanish at once — it is progressively abstracted with depth.

So the natural next question — does the decoder walk this hierarchy in reverse?

02  —  The Mirror

The decoder runs the encoder backwards

"If the encoder descends detail → meaning, does the decoder climb meaning → detail?"

Put this in the language of frequency, and the question sharpens. If the encoder is a low-pass filter that keeps dropping high frequency (detail), the decoder should be a high-pass filter that keeps synthesizing it.

how it is measured
frequency
layer feature map16×16×C
2D FFT
radial spectrum
HF ratio
CKA
Encoder layer i
×
Decoder layer j
linear CKA
similarity

Frequency: 2D FFT of each layer's feature map, radial-averaged into a high-frequency ratio. CKA: linear Centered Kernel Alignment between every encoder layer and every decoder layer — a mirror shows up as an anti-diagonal.

observation · frequency
Encoder = DINOv3-L, decoder = RAEv2-K1 decoder. High-frequency ratio from the 2D FFT of each layer's feature map. The encoder drops 0.60→0.16 (low-pass), the decoder rises 0.08→0.55 (high-pass). The high frequency the encoder discards is re-synthesized by the decoder — a clean mirror.

Does the same hold at the representation level? Linear CKA between encoder layers and decoder layers, drawn directly.

observation · representation (CKA)
Each decoder layer's most-similar encoder layer (white trace). Input ≈ encoder's last layer, output ≈ encoder's front — an anti-diagonal mirror. Toggle K (K = how many encoder layers are summed into the latent): as more layers enter, the trace's starting point shifts L23 → L12 → L7, upward.
The decoder is the encoder's mirror. In frequency and in representation, it climbs from meaning back toward detail. Its starting point is set by how much detail the latent already carries — K, the number of encoder layers summed into it (defined next). The more it carries, the shorter the climb.

Two things in this CKA are worth pausing on. First, the trace never reaches L0 and stays there — every K rushes up to the detail layers, then settles back to L5 just before the readout. This "return to a canonical mid-level" is a real, still-unexplained observation. Second, the mirror is a direction, not a rigid 1:1 grid: the freely-trained RAEv2 decoder organizes itself — it races through the transition and dwells at L5 — and an even layer-by-layer correspondence only appears when one forces it through distillation. The mirror is emergent in direction, imposed in its evenness.

If the mirror creates detail — what comes back, and what never does?

03  —  The Boundary

What comes back, and what never does

"Texture can be plausibly invented, but text must be exact. Can the decoder bring text back?"

Varying the range of layers summed into the latent (K), I reconstructed an image containing text — because text cannot be faked plausibly, it has to be exact. Toggle K below.

how the experiment is set up
K-sweep
image
Encoderfrozen
sum of last K layersK = 1 / 7 / 23
RAEv2 decoderpretrained
recon

The latent is the sum of the last K encoder layers (K=1: only the last; K=23: all of them). A pretrained RAEv2 decoder reconstructs from it. Toggle K to see how much of the text survives.

original
reconstruction
Reconstruction of the same text ("Soften"). K1 collapses into unreadable strokes — there is nothing in the latent to read, so hallucination cannot save it; K7 is nearly legible, K23 is almost perfect. Text information survives in the middle layers (L11~), so it returns as K grows.
Detail comes in two kinds.hallucinable (texture, fur — plausible is enough) and ② non-hallucinable (text, identity — must be exact). What separates them is not the kind of detail but whether the latent carries the information (K) — at least, that is what this one striking case shows.

But that was one image. When detail doesn't come back — is it gone from the latent, or just unread?

04  —  Gone, or Unread?

Is the detail missing — or just unread?

"The text was one image. Push high frequency in directly: does the latent lose it, or can the decoder simply not read it?"

RAEv2 makes a striking bet — rebuild full-resolution pixels from a latent that is almost pure meaning — so something has to put the detail back. To find out what, we started with the simplest high-frequency image there is: black-and-white stripes, run through encode→decode. As the stripes get finer, they dissolve. The text case (last chapter) sharpened the puzzle but left it open: when detail fails to return, is it gone from the latent, or present but unread by the decoder? To settle it we split the reconstruction into two separable quantities — energy (is there detail at this frequency at all?) and coherence γ (is it in the right place?). Blur is low energy; sharp-but-wrong is energy without coherence — a hallucination.

observation · the stripes, getting finer
Square-wave gratings of rising frequency, each run encode→decode (columns: original, VAE, K1, K7, K23). K1 loses the stripes around 8 cyc/image; K7 holds finer, K23 and the pixel VAE finer still. The cutoff differs across K on the same 16×16 grid — so it is set by the latent's content (which layers are summed), not by grid geometry.

One tempting explanation to rule out first: maybe the latent keeps meaningful high frequency (the aligned edges of real objects) and drops only random texture. If so, the loss would be about predictability, not frequency.

how it is tested · matched-spectrum scramble
natural
image
band-pass @ f
encode→decode
γ
scrambled
same |FFT|, random phaseidentical spectrum
encode→decode
γ

Take a natural image's detail in a frequency band, and a phase-scrambled twin with the identical magnitude spectrum — same energy at every frequency, only the phase (the structure) randomized. If meaning matters, natural should survive where scrambled dies.

observation · meaning makes no difference
Natural detail (solid) and its phase-scrambled twin (dashed, identical magnitude spectrum) reconstruct almost identically at every band — for K1 (magenta) both collapse near 8 cyc, for K23 (green) both survive. Low-level phase predictability within a band changes nothing; what survives is set by frequency. (Left — a strong probe: a high-capacity readout trained to pull out everything recoverable, an upper bound; right — the deployed decoder.)
how it is measured · energy vs coherence
decompose
reconstruction
band-pass @ f
energy Eamplitude ratio
coherence γphase corr

From the same reconstruction, two numbers per band: E (energy) = how much amplitude returns (phase-blind), γ (coherence) = how well its phase matches the truth. This splits the returned energy into the part aligned with the true phase (γ·E, faithful) and the orthogonal remainder (E·√(1−γ²)) — energy with no correct phase, which we read as hallucination. (Throughout: held-out natural images, grayscale.)

Reading E and γ on one stripe frequency. Blurry: the stripes are washed out — low energy E, and nothing whose position to even check. Sharp, wrong place: full-contrast stripes, but they sit off the original's positions (dashed lines) — high E, zero coherence γ: a hallucination. Faithful: full contrast and aligned — both high. A single 'how good is it' score can't tell the first two apart; E and γ can. (Illustration.)
observation · two pillars
Left — what the latent carries. Faithful transfer (γE) cuts near 8 cyc for K1 and the cutoff climbs with K (K7 ~24, K23/VAE flat) — all on the same grid, so the cutoff tracks which layers are summed, not geometry. Right — what the decoder adds. On full natural images K1 emits near-full energy (E ≈ 0.95, dashed) while its phase decorrelates (γ → 0.36, solid); we read that phase-incoherent energy as hallucination — plausible detail in the wrong place — consistent with why K1 renders text sharply wrong.
Two mechanisms, cleanly split. ① The latent is a low-pass — but its cutoff is set by which layers are summed (K), not by the grid; above that cutoff it drops detail regardless of meaning. ② The decoder, trained adversarially, fills the gap with full-amplitude but phase-wrong texture when handed a full natural image — it synthesizes plausible detail rather than leaving the gap blank. What looks like "lost detail" is the latent's doing; what looks like "sharp but wrong" is the decoder's.

If the gap is the latent's, reading harder shouldn't help. There are two ways to read harder without changing the latent: retrain the deployed decoder with a detail-targeted loss, or — freezing the decoder entirely — learn a per-direction amplifier on the latent (the literal "boost the high frequency" idea). Both leave the encoder frozen, so the latent codes themselves never change.

observation · nothing reads past the cutoff
With the latent frozen, neither a detail fine-tuned decoder (magenta) nor a learned PCA-gain amplifier (lime) lifts phase coherence above the deployed decoder (grey) — the three curves sit on top of each other. The deployed decoder already extracts everything these decoder and amplifier families could.
Nothing we tried reads the missing detail back. Neither a retrained decoder nor a learned amplifier recovers faithful high frequency from K1 — and those exhaust the ways to read harder without changing the latent. The evidence is consistent with the detail being gone, not merely unread (we can't strictly rule out detail encoded too nonlinearly for either method to find). So K is a dial for how much detail lives in the latent: raise it and the cutoff climbs; the decoder only ever invents what falls above. Read back onto the paper, this makes K a deliberate design choice — how much detail to bank in the latent versus leave to the decoder to imagine. (Caveat: this is about faithful detail; making the hallucination look more realistic is a separate, generative question.)

So the latent's detail is fixed by K — then why not just raise K all the way?

05  —  The Cost

Pack it all in, and generation collapses

"Reconstruction keeps improving, so why does RAEv2 use only K7? Is there a reason not to pack more?"

For reconstruction alone, bigger K is better. But this latent is also meant for generation. Place reconstruction (rFID) and generation (gFID) side by side, and they move in opposite directions.

observation · reconstruction vs generation
K23 has the best reconstruction (rFID 0.18) but the worst generation (gFID 3.02); K7 has the best generation (gFID 1.65); K1 the worst reconstruction. Raising K trades generation for reconstruction — a V-shaped frontier. — RAEv2 (arxiv 2605.18324, Table 15).

The reason lies in diffusion. Diffusion only synthesizes what is encoded in the latent. Raise K to push high-frequency detail into the latent, and diffusion must now generate that high frequency — but high frequency is near-random, with no low-dimensional structure for diffusion to model, so generation breaks down. Better to keep the latent semantic (small) and let the decoder hallucinate the detail.

Even the compromise K7 is not perfect. What does K7 miss versus K23, in frequency?

observation · the limit of K7
K7's reconstruction error (magenta) is 1.52× K23's (lime) in the high-frequency band. They nearly match at low frequency and diverge at high — what K7 misses is precisely high-frequency detail.
Detail must be solved by hallucination, not generation. Pack it into the latent and you lose generation; keep it out and the decoder must invent it. Either way — a decoder that hallucinates well sits at the center of the whole trade-off.

So who, inside the decoder, actually does this hallucinating?

06  —  The Renderer

Inside the decoder: who makes the detail?

"If detail is hallucinated, which part does it — and why does it blur?"

Split the decoder into two parts and train them separately. The head is a pure readout (an unpatchify layer); the body is the stack that climbs the hierarchy. Hand the head the real detail (the encoder's L0) and it reconstructs almost perfectly — a transparent readout. But let the body predict that detail by distillation and feed it to the head, and the result blurs.

how the experiment is set up
ceiling
image
Encoderfrozen DINOv3
L0real detail
Headreadout
sharp
composition
image
Encoderfrozen
L23semantic
Body23 blocks · MSE
L0predicted
Head
blurry

ceiling gives the head the real detail (L0) directly — it isolates how good the readout is. composition makes the body predict L0 from the semantic latent (L23) by MSE, then reads it out — it isolates how good the body's hallucination is. Same head in both.

observation · result
ceiling (head + real L0) is razor-sharp — the head is a near-perfect readout. composition (head + the body's MSE-predicted L0) blurs — even though the predicted L0 has cosine 0.95 with the real one.
The blur belongs to the body, not the head. An MSE-trained body converges to the conditional mean E[detail | meaning]; since meaning under-determines high frequency, many possible details average into mush. Two things are at work here — the semantic latent has genuinely lost some high frequency (an information ceiling), and MSE then picks the blurry mean beneath that ceiling rather than committing to one plausible detail. Sharpness cannot be bought with deeper supervision — it needs a generative loss (a GAN) that commits to one plausible detail instead of the average.

So — can a decoder be built to hallucinate on purpose? We tried.

07  —  Building It

Building a decoder that mirrors, on purpose

"If the decoder is the encoder's mirror, can we train one that way on purpose — and does it actually help?"

Everything so far was observation on a frozen, pretrained RAEv2 decoder. The natural step is to build a decoder that is explicitly the encoder's mirror: 23 transformer blocks, each block j supervised to match encoder layer L(22−j) by MSE — layer-paired distillation — with a transparent unpatch head and a pixel L1 + LPIPS + GAN loss.

our decoder
forward
L23+ noise
23 mirror blocksblock j ↔ enc L(22−j)
unpatch headreadout
pixels
losses
layer-paired MSEfeature distillation
L1 + LPIPS + GANpixel space

The body is forced into the encoder's mirror by distillation; the head is a pure readout, so the pixel GAN flows through it straight into the body's hallucination.

Two questions, two clean ablations (held-out, small scale). Does distillation help? and does the mirror order matter?

small-scale ablationdistillheadrFID↓
plain (no distill)CNN144.6
distilledfullCNN47.9
shuffled pairingfullCNN51.0

Distillation slashes rFID 3× (144.6 → 47.9). But with a CNN head, shuffling the layer-pairing barely moves the number (47.9 vs 51.0) — the head absorbs the detail, so the body's mirror order stays invisible. Force a pure-readout (unpatch) head, and the order suddenly decides everything:

mirror ordercorrectshuffledgap
CNN head47.951.03.1
unpatch head60.390.229.9
The mirror's order is a real mechanism. Once the head is an honest readout and the body has to carry the detail itself, aligning it to the encoder in the right order beats a shuffled one by a wide margin — a gap of 29.9. Let a CNN head absorb the detail instead, and that order all but vanishes (gap 3.1). So the layer-paired mirror is not decoration: it shows up in the pixels exactly when the body is the one forced to hallucinate. Whether forcing that order is a good idea is a separate question — and the next test answers it.

So we ran the same isolation at full scale — the identical 23×1024 decoder, distillation on versus off, 40k steps on full ImageNet, everything else held fixed — to see whether the small-scale gain survives. It doesn't. It reverses.

full scale  (40k, held-out 5000)distillrFID↓LPIPS↓PSNR↑
mirror  (layer-paired)full18.320.16416.96
plain  (no distill)15.990.16016.80
We expected the mirror to help. At scale, it doesn't. The small-scale 3× gain was low-data regularization, not a real lever — given enough data the plain decoder converges past the mirror (rFID 15.99 vs 18.32, and better LPIPS). Pinning every block to an encoder layer costs the decoder the freedom to synthesize realistic texture; it buys back only a sliver of pixel accuracy (PSNR/SSIM). The mirror is a faithful description of how a freely-trained decoder works — but imposed as a training constraint, it hurts. We thought there was an effect to harvest; we built it, and found there wasn't.

One last place to look — where does the other latent live?

08  —  The Other Latent

Where the VAE latent lives

"Diffusion usually runs on a VAE's latent, not DINO's. Where does that latent sit on this same map?"

To pin down where low-level detail lives, it helps to bring in the latent that is built to keep it. Latent-diffusion models almost never generate from DINO — they generate from a VAE: a coder–decoder pair (here SD-VAE) made for generation, whose 32×32×4 latent is the standard carrier of low-level, pixel-near detail. So we examined it as a reference point — the explicit representative of "surface detail" — and asked where it falls on DINO's depth axis. RAE's latent sits at the semantic, low-detail end; the VAE's is the opposite philosophy, all surface. Rivals, or two ends of one axis? We measured three things — representational similarity (CKA) between SD-VAE's latent and every DINOv3 layer, linear decodability (can a single linear map turn one into the other?), and — most precisely — canonical correlation: how many of the VAE's dimensions have a linear twin inside DINO.

how the experiment is set up
two latents, one axis
VAE latent32×32×4 · low-level
DINO L0–L1shallow
· depth ·
DINO L23deep
=
RAE K1 latentsemantic

If the two latents are two ends of DINO's depth axis, the VAE should look like DINO's shallowest layers and nothing like its deepest. CKA tests the resemblance; the linear probe tests whether one can actually be rebuilt from the other.

observation · which DINO layer is the VAE?
Left: the VAE latent is most similar to DINO's shallowest layers (L0 ≈ 0.76) and least similar to L23 (0.19) — which is exactly RAE's K=1 latent. Right: RAE's K-sum drifts back toward the VAE as it folds in shallower layers, but tops out near 0.4 — it never arrives. The three actual RAE generation configs (K1, K7, K23) all sit on the curve; what moves them is how shallow the sum reaches, not how many layers it holds.
observation · can a linear map reconstruct it? (both directions)
Magenta, DINO Lk → VAE: a single linear map from L0 reconstructs 87% of the VAE latent — above even the linear pixel ceiling (71%); deeper layers do less. Lime, the reverse VAE → DINO Lk: stuck near 4% everywhere — but that is expected, since rebuilding 1024 numbers from 4 is underdetermined. The reverse is dimension-limited, not clean evidence; the forward direction is the real test.

Linear ridge probe, held-out, train/test split by image. Matched 16×16 resolution; absolute R² is capped by the VAE's four channels, so read the gaps, not the heights. The pixel-patch ceiling is the same probe from raw pixels — it says how much a linear map can do at all.

observation · how many dimensions are shared?
Canonical correlation — the held-out alignment between each of the VAE's four dimensions and a matched linear direction in DINO. At L0 all four align (ρ = 0.99 / 0.95 / 0.86 / 0.78), and held-out ≈ train, so this is real shared structure, not overfitting despite 1024 input dimensions. The alignment fades with depth, but even L23 keeps its leading dimension (ρ₁ = 0.92).
observation · what does that shared subspace look like?
Project held-out tokens onto the canonical axes CCA found. Each panel is one shared direction: DINO L0's projection (x) against the VAE's (y). Component 1 (ρ = 0.99) is a razor-thin diagonal — the two latents move as one along this axis; the alignment loosens only as ρ drops.

The same four canonical directions as 16×16 spatial maps. Pick a held-out image — top row is the VAE's, bottom is DINO L0's. They carry the same structure (sharpest for components 1–2, ρ ≥ 0.95): read through the rotation CCA found, DINO's shallowest layer is the VAE latent.

VAE-canonical (top) vs DINO L0-canonical (bottom), four shared directions — same content, up to the rotation CCA recovered.
The VAE latent is a 4-dimensional shadow of DINO's first layers. Canonical correlation puts a number on it: all four of the VAE's dimensions are linearly shared with DINO L0 (ρ up to 0.99, held-out), so the VAE latent is essentially a rotated 4-D subspace living near the surface of DINO. The two are not the same space — DINO L0 has 1024 dimensions to the VAE's four — but the low-level information a VAE keeps is already there, in linear form, in DINO's shallowest layer. The classic low-level latent sits at the shallow end of the very depth axis whose deep end RAE generates from: semantic (RAE) and low-level (VAE) as two readouts of one backbone.

Now step back — the pieces line up.

 Findings

What the experiments showed

Detail is hallucinated, not generated.

Pack detail into the latent (raise K) and generation collapses — high frequency is near-random, with no low-dimensional structure for diffusion to model, so it falls to the decoder to invent. This is the V-shaped reconstruction–generation frontier.

The decoder mirrors the encoder.

In frequency (low-pass ↔ high-pass) and in representation (the CKA anti-diagonal), the decoder climbs from meaning back toward detail. How far it has to climb is set by K.

What returns depends on the latent, not the detail.

Text dies at K=1 and returns by K=23. Whether a detail is "hallucinable" is a property of whether the latent carries it — not of the detail itself.

The detail loss is the latent's, not the decoder's.

Phase-scrambling shows what survives a band is set by spatial frequency, not low-level predictability. Each K is a low-pass with its own cutoff (≈8 cyc at K=1, climbing with K on the same grid — so content, not geometry, sets it); the decoder then fills the gap on natural images with full-energy but phase-wrong texture (coherence γ → 0.36) — hallucination. Neither a detail-retrained decoder nor a learned amplifier lifts coherence past the cutoff, so the faithful high frequency is consistent with being gone from the latent — and K is the dial for how much is kept.

The mirror is a mechanism, not decoration.

When the head is an honest readout and the body must carry the detail, the layer-paired order is decisive — a shuffle costs ~30 rFID. Let a CNN head absorb the detail instead, and that order all but vanishes.

We built the mirror on purpose — and it didn't help.

Layer-paired distillation lifts reconstruction 3× at small scale (144.6 → 47.9), so we forced it at full scale. The result reversed: the plain decoder reached rFID 15.99 against the mirror's 18.32 (and better LPIPS). The small-scale gain was low-data regularization. The mirror is a faithful explanation of how a free decoder organizes itself — not a performance lever. Pinned as a constraint, it costs realism. A clean negative result.

The VAE latent is a 4-D linear shadow of DINO's shallow layers.

All four of the SD-VAE latent's dimensions are linearly shared with DINO L0 (canonical correlations 0.99 / 0.95 / 0.86 / 0.78, held-out), and a single linear map rebuilds 87% of it — above the linear pixel ceiling. Not the same space (4 dims vs 1024), but the low-level information a VAE keeps already lives, linearly, near the surface of DINO — the shallow end of the same axis whose deep end RAE generates from.

 Epilogue

The inverse is not a function

Beneath all of it sits one fact about inverses. The encoder is many-to-one: many images collapse onto the same meaning, their detail discarded. So its true inverse is one-to-many — a single latent ought to fan out into many plausible details, not one. A deterministic decoder can only pick a single point of that fan, which is exactly why the MSE mean blurs (it averages the fan) and why a generative loss is needed (it commits to one sample of it).

"Reconstruction," then, was never really an inverse function. It is a renderer that hallucinates a world consistent with the meaning it was handed. Generation is perception run backwards — and the backward run must invent what the forward run threw away.

Analysis by Youngjin Shin · 2026 · target paper RAEv2 · DINOv3-L (timm vit_large_patch16_dinov3, 256px) · all figures held-out · every experiment here probes reconstruction; generation (gFID) is cited from the paper.