anttiluode / SihtiImageModel2

A learned layout, filled in by the Sihti sieve

A small transformer draws an 8×8 colour layout for a class, one cell at a time. Everything after that is closed form: a single linear lift to Sihti's coarse state, then the patch memory fills the three finer residue bands. Both stages run live in this page.

class → layout L (8×8×3, learned) → x16 = lift(L) → + r2 + r1 + r0 (patch memory) = image (32×32×3)

Generate

Loading the model (about 4 MB)…

Mean detail is the pre-registered arm: each code returns its least-squares residue. Sampled detail adds a draw from that code's leftover spread, per colour channel, which is why it comes out as coloured grain. The gates used temperature 1.0; other temperatures are here only for looking.

Fill in a real photo from its 8×8 layout

Held-out CIFAR-10 test images the model never saw. Each one is cut down to its 8×8 layout, then filled back in three ways. The numbers are PSNR to the real image, computed here.

Pre-registered gates

Gates and thresholds were committed in PREREG.md before any of them ran.

After the main gates: sampled detail and a judge for blurry images

Pre-registered in PREREG_STOCHASTIC.md after the main run. The second judge has the same network, trained on bicubic-upsampled 8×8 layouts of the training images; it has no pass/fail.

Samples

Grid of generated images for ten classes with three methods side by side
Left to right: learned layout + Sihti memory, the same layouts upsampled by bicubic, a Gaussian layout + Sihti memory.
One sample per class built up band by band
One sample per class, built up: layout, lift, then each residue band added, with the bands shown in signed colour.
Real test images, their 8x8 layouts, and three fills
Real test images, their 8×8 layouts, then bicubic, the linear filter and the Sihti memory filling them back in.
The same learned layouts with mean detail and with sampled detail
Mean detail (left) against sampled detail (right) on the same layouts. Closer to real images by FD; visibly grain.
Generated samples beside their nearest training images
Each sample beside the training image whose layout is closest. Judge for yourself how much is recall.

Notes

The layout is close to its ceiling; the detail is not. Real test images cut to their own 8×8 layout and filled by the Sihti memory sit at FD 102 from real images. The learned layouts, through the same fill, sit at 110. Two sets of real images sit at 1. Almost all of the distance to real photos is missing detail, not a wrong layout.

Why the detail is missing. Each code in the patch memory is a least-squares map, so it returns the average residue for a window. Averaging edges keeps them; averaging texture cancels it. Even from true layouts the fills carry 11% of real images' fine-band energy.

Why G1 failed. The pre-registered judge was trained on sharp photos, and blurry images collapse onto three of its classes (bird, cat, ship). It reads only 26% of real photos filled from their own layouts. The judge for blurry images reads 61% of those, 48% of the learned layouts and 55% of the Gaussian ones. A Gaussian sample sits on its class's mean colours, which is what a classifier keys on; to the eye those samples are colour mush, and the learned ones are scenes. Classifier accuracy rewards stereotypes here, the same effect v1 saw on CIFAR.

Data. CIFAR-10 from a GitHub mirror that re-saved the images as JPEG at quality about 75, because the official site was not reachable from the build machine. JPEG removes some of exactly the finest detail this measures.