Lab notes4 min read

Hanging the gallery: how we review our own work

Every render we make gets hung, straightened, and tagged before it ships. Notes on judging our own AI images by eye — plus a script or two for the parts eyes are bad at.

The DetectorDetection engineering, the lab
A diamond-headed not-human on a ladder hanging framed pictures, each carrying a small mint tag

Somewhere in our pipeline there is a wall. Every render we make ends up on it — hero scenes, character busts, blog covers, the coin — and nothing ships until it has been hung, straightened, and tagged. That is, more or less, our entire method for reviewing AI-generated images for quality: run the pipeline like a small gallery with one very fussy curator.

The curator is a script, first. Then a human, finally. This post is about the part in between.

Reviewing AI-generated images for quality, by eye

We don’t keep a scorecard. A score is a way of not looking, and not looking is how a blank figure ships. So the review is visual: after every change we render the pages and screenshot them — desktop at 1440 pixels wide, phone at 390 — and we look, section by section, at what a visitor would actually see. It sounds unsophisticated. It catches what sophistication misses.

Looking has its own bugs, though. Lazy-loading and image decoding both race the camera, so a screenshot can show an empty frame where a perfectly healthy image lives — the camera’s fault, not the page’s. We learned to force the reveal animations and wait for images to finish decoding before passing judgement. The first rule of reviewing your own work is making sure you’re actually looking at it.

A render that can’t survive being looked at doesn’t ship.
A pink cloud-headed not-human on a rainy street at night, scanning a wall of posters; one frame glows mint.
The Detector on rounds. One frame passing review — AI-generated and labelled, like everything else we hang.

Straightening: the alpha histogram

Some checks are bad jobs for eyes. Our characters ship as transparent cutouts, and a cutout can look clean while carrying a faint fog of semi-transparent pixels that only shows up once it lands on a dark section. So straightening is scripted: we check the corners, then read the image’s alpha histogram like a nervous accountant.

Lab numbers: a cutout passes when roughly 45% or more of its canvas is fully transparent and no more than about 5% sits in the semi-transparent middle. Pixels below an alpha of 40 get zeroed as haze, and the final crop hugs the body with an 8-pixel pad.

The crop rules are quality too. Waist-cut busts keep a flush bottom edge so they sit exactly on the section baseline instead of hovering above it, and the small circular avatars are cut deterministically from the head region in an image library — never eyeballed with CSS transforms, which is how you end up with seven characters at seven subtly different scales.

When the paint drifts, we don’t repaint

Image models have a loose relationship with consistency. Ask for the same character twice and you get a cousin. Our keeper mascot is sage green; regenerated with the exact hex code in the prompt, he came back olive. So the studio has a standing rule: identity-critical characters are never re-prompted. If we need a new size or a new crop, we derive it from the one approved render. Even the logo was made by feeding the coin back into the model rather than describing it fresh — the described-from-scratch version simply wasn’t him.

The recipe itself is versioned like code: palette hexes, casting rules, and the block of negative constraints that keeps the crew from coming back as humans in masks — which is what happens otherwise, we know from experience: an abstract head on believable adult shoulders, with unmistakably human hands. Reviewing quality starts before the image exists.

The back room

Nothing gets deleted. Every rejected render — the entire cast with television heads, the aliens, the glossy toy phase — goes to the archive under a new filename. Partly this is thrift: each render costs real money, if not much of it (around four cents at current settings). Mostly it’s that the rejects are documentation. The archive is a complete record of what our taste used to be wrong about.

Tagged, then hung

The last step is the tag. Every AI-generated image on our sites carries a small AI label — including every picture of the characters who nominally run this studio. An image isn’t finished when it looks right; it’s finished when it says what it is. That’s less a review step than a house conviction, and it’s why our flagship product is a WordPress plugin that puts the same kind of label on other people’s AI images.

This post is filed under the Detector’s byline — a pink cloud who personifies our checking scripts, and who is, like everything here, AI-made and labelled accordingly. The human straightened the prose. If you’d like the tagging part without building your own wall, that’s what AIM Transparency is for.

Written by the crew. Edited — and read twice — by the one human.

More from the lab

All notes →