The spatial blind spot
Standard image metrics read what a picture contains. They do not read its visual vocabulary: how the ground is worked, where the weight sits, how the parts hold together. Here two measurement systems are run on the same six pictures: two subjects, each made three ways.
The question
Generated images are scored mostly by metrics built around content. They ask whether the right objects are present, whether the picture matches its caption, and whether a set of outputs looks like real photographs. Those are good questions. They leave out a whole register of what makes a picture work: whether the ground is quiet or worked, whether the forms join into one structure or scatter, which way the edges run, where the weight sits in the frame. Call that the picture's visual vocabulary.
The claim tested here is not that content metrics punish visual interest. It is that they are indifferent to it. A picture with a rich visual vocabulary can score high on CLIP, and so can a plain one. The score moves with caption fit, and with the look of the medium, while the vocabulary sits somewhere the score does not look.
| Metric | What it measures | What it cannot see |
|---|---|---|
| FID, Fréchet Inception Distance | Distance between the feature distributions of generated and real images | Anything the feature embedding discards, including arrangement. Varied texture over one repeated layout can score well. |
| KID, Kernel Inception Distance | The same comparison with an MMD estimator | As FID |
| IS, Inception Score | How confidently a classifier labels each image, and how many classes appear | Everything beyond the label |
| CLIP-based scores | How well an image matches a text caption | How the content is arranged, lit, or drawn, beyond what the caption names |
| GenEval, T2I-CompBench | Object presence, counts, attributes, and relations between named objects | How the frame as a whole is organised: ground, cohesion, edge direction, weight |
1. Two measurement systems
System 1: content (CLIP)
CLIP ViT-B/32 with the original OpenAI weights, run through open_clip. Two readings:
- CLIPScore, the standard text-to-image metric: 2.5 × max(cosine(image, caption), 0). The three pictures of each subject share one caption.
- Image similarity: the cosine between two images' CLIP embeddings. This is the kind of feature-space comparison FID and KID make across thousands of images. FID, KID and IS themselves need large sets and are not computed on six images.
CLIP's standard preprocessing resizes each image to 224 pixels on its short side and crops the centre square. On these 2:3 portrait-format images, that discards the top and bottom sixth of the frame before CLIP sees anything. That is how the metric is normally run, and it is how it was run here.
System 2: the frame (VTL kernel)
The VTL kernel, Canon 3, run from its frozen notebook with no settings changed. The pipeline:
- Convert each image to luminance and resize it to 1536 pixels on the long side.
- Take the Sobel gradient field.
- Build a mass mask from the gradient band between the 85th and 97th percentiles.
- Compute the readings on that field and mask.
No semantics are involved, and nothing is learned. Alongside the core readings it reports a field package (gradient floor, ceiling and tail gap), a structure regime, and a region-biased contrast mask that merges nearby fragments into connected regions. The readings used below:
| Reading | In plain terms |
|---|---|
| Gradient floor | How worked the ground is: the 85th-percentile edge strength. High means texture and mark everywhere. |
| rv, void ratio | Share of the frame that is quiet, with almost no edge activity |
| Tail gap | How far the strongest edges stand above the ground's own texture. Large means crisp shapes against a quiet field. |
| μ, cohesion | Whether the structure is one body or many pieces |
| Structure regime | Region (one large connected structure), texture (tens of thousands of specks), or hybrid |
| θ, orientation stability | Whether the edges run mostly one way (high) or every way (low) |
| SDI, dispersion | How far mass spreads from its own centre |
| Δx, Δy, placement | Where the centre of mass sits relative to the frame centre |
| ρr, packing | How much of its own outline the mass fills |
Kernel readings are coordinates, not grades. Higher cohesion is not better, and a centred picture is not worse. Exact definitions are at the end.
2. Three ways to make a picture
Each subject is made three ways, and the same three categories are used for both:
- Clear subject: the subject presented plainly, evenly lit, on a ground that stays out of the way.
- Composed: the same subject with the picture built around it, through light, a worked ground, and forms that carry the eye.
- In motion: the subject caught moving, with gesture or blur breaking up its outline.
3. Three butterflies
A monarch on a pink zinnia. The clear subject is a plain render. The composed version is backlit, with a quiet dark ground and two blades of grass crossing the frame on a diagonal. In motion, the wings blur mid-beat while the body and flower stay sharp.
| Reading | Clear subject | Composed | In motion | What it describes |
|---|---|---|---|---|
| System 1: content | ||||
| CLIPScore, "a monarch butterfly on a pink zinnia" | 0.812 | 0.786 | 0.809 | Caption fit; all three close |
| CLIP image similarity to Clear subject | 1 | 0.974 | 0.966 | Nearly the same picture |
| System 2: the frame | ||||
| Cohesion μ | 0.131 | 0.379 | 0.079 | Joined into one body by the grass; broken up by the blur |
| Structure regime (largest piece) | hybrid (21%) | region (45%) | hybrid (3%) | One dominant structure only when composed |
| Orientation θ | 0.027 | 0.014 | 0.009 | The plain render's edges run most consistently |
| Tail gap | 0.494 | 0.530 | 0.444 | Crispest shapes against the ground when composed |
| Gradient floor | 0.123 | 0.097 | 0.188 | Quietest ground composed; busiest in motion |
| Packing ρr | 12.9 | 14.6 | 16.2 | Mass fills more of its outline; most when the subject fills the frame |
| Dispersion SDI | 0.196 | 0.199 | 0.183 | Weight most gathered in motion |
| Placement Δx, Δy | −0.03, +0.14 | −0.07, +0.13 | −0.09, +0.08 | Weight moves left and up |
| Mean luminance | 0.51 | 0.37 | 0.37 | Darker in both the composed and the in-motion picture |
A painter would describe these three pictures in different terms: a subject set on a backdrop; layered diagonals, backlight and one connected structure; a body held still while the wings dissolve. Each of those has a number on the kernel side. On the CLIP side, all three pictures are about 97% the same, and their caption scores sit within 0.03 of each other. The plain render fits the caption a little better than the composed one, but that is a difference in caption fit, not a judgement about the picture.
4. Three drawings
One subject, a woman in a short dress, drawn three ways: standing frontally on an even ground (clear subject), turning against a heavily worked dark field (composed), and caught mid-step with looser hatching (in motion).
| Reading | Clear subject | Composed | In motion | What it describes |
|---|---|---|---|---|
| System 1: content | ||||
| CLIPScore, "a charcoal drawing of a woman" | 0.762 | 0.869 | 0.859 | How much it looks like charcoal |
| CLIP image similarity to Composed | 0.835 | 1 | 0.968 | Composed and In motion are nearly the same picture |
| System 2: the frame | ||||
| Gradient floor | 0.168 | 0.568 | 0.288 | Ground quiet, fully worked, or partly worked |
| Void ratio rv | 0.80 | 0.46 | 0.53 | Share of the frame left quiet |
| Tail gap | 0.164 | 0.471 | 0.175 | Hard edges where the dark field meets bare paper |
| Cohesion, region mask | 0.88 | 0.70 | 0.16 | One silhouette, figure fused with ground, or broken pieces |
| Orientation θ | 0.013 | 0.005 | 0.006 | The standing figure's verticals line up; hatching runs every way |
| Dispersion SDI | 0.221 | 0.241 | 0.249 | Gesture spreads the mass from its centre |
| Placement Δx | −0.006 | −0.017 | −0.001 | All three are centred |
Placement is not where these drawings differ: all three put their weight at the centre. They differ in the handling of the ground, the joining of figure to field, and the direction of the marks, and the kernel separates them on exactly those readings. Here the composed drawing has the highest CLIP score of all six pictures. Nothing suggests CLIP registered its worked ground or its frame within the frame. The caption score appears to follow the look of the medium: the clear subject, the drawing that looks least like charcoal, scores lowest.
The canonical mask reads charcoal as texture: 54,000 to 69,000 separate specks per drawing, which puts all three in the texture regime. On these images the canonical cohesion and packing values describe the hatching, not the figure. Following the notebook's own guidance, cohesion for the drawings is read from the region-biased contrast mask. Every canonical value is still listed in the full table below.
5. Same categories, two subjects
Put the two subjects side by side, category against category, and the two systems behave differently.
| Category | CLIPScore | Orientation θ | Tail gap | Cohesion μ | ||||
|---|---|---|---|---|---|---|---|---|
| Drawing | Butterfly | Drawing | Butterfly | Drawing | Butterfly | Drawing | Butterfly | |
| Clear subject | 0.762 | 0.812 | 0.0132 | 0.0273 | 0.164 | 0.494 | 0.0066 | 0.131 |
| Composed | 0.869 | 0.786 | 0.0047 | 0.0136 | 0.471 | 0.530 | 0.0022 | 0.379 |
| In motion | 0.859 | 0.809 | 0.0059 | 0.0091 | 0.175 | 0.444 | 0.0001 | 0.079 |
Bold marks the highest value in each column; italics mark the lowest cohesion. Cohesion here is from the canonical mask for both subjects, so the columns are comparable. On the drawings it is near zero throughout, because the mask is reading hatching, but the region-biased mask agrees: the drawing in motion is again the least cohesive (0.16, against 0.88 and 0.70).
- CLIP's order is not the same in the two subjects. Among the drawings the composed picture scores highest; among the butterflies it scores lowest. The clear subject goes the other way. A score that tracked visual vocabulary, whether rewarding it or punishing it, would order the categories the same way in both subjects.
- The kernel picks out the same category in both subjects. The clear subject has the most consistent edge direction, the composed picture has the crispest shapes against its ground, and the picture in motion has the most broken-up structure. The full order below the top differs between subjects; the extremes match.
That is what indifference looks like. A picture with a strong visual vocabulary can carry a high CLIP score, as the composed drawing does, or a lower one, as the composed butterfly does. Knowing the CLIP score tells you nothing about which kind of picture you are looking at.
6. The mirror
The composed butterfly, flipped left to right. Nothing else changes.
| Reading | Composed | Mirrored |
|---|---|---|
| CLIP image similarity | 0.997 | |
| CLIPScore | 0.786 | 0.773 |
| Placement Δx | −0.0742 | +0.0742 |
| Δy, rv, ρr, μ, SDI, field package | identical | |
The kernel reports the flip exactly: placement changes sign and every reading that does not depend on direction stays the same. Peripheral pull (0.276 against 0.278) and orientation (0.0136 against 0.0126) move very slightly, because the pixel boundaries of the edge band and the orientation bins are not perfectly mirror-symmetric. CLIP's embedding barely moves (0.997), and its caption score shifts by 0.013 with nothing in it to say which way the picture faces.
7. What this shows, and what it does not
- CLIP is indifferent to visual vocabulary. It neither rewards nor penalises it: visual interest is invisible to the score.
- Same content means nearly the same picture to a content metric. Every pair within a subject sits at 0.97 CLIP similarity, apart from the clear-subject drawing at 0.84 to 0.87, and a mirror image sits at 0.997.
- The differences live in readings content metrics do not have. A worked ground, figure fused with field, one connected structure, wings dissolving in motion, which side the weight sits on: each moved a kernel reading clearly, and three readings single out the same category in both subjects.
- The two systems are complements. CLIP answers whether the picture shows a monarch on a zinnia. The kernel answers how the picture is built. An evaluation that wants both needs both.
Limits. Six pictures and one run, chosen to illustrate rather than sampled, and one picture per category per subject. The matching extremes across subjects are a pattern to test on larger sets, not a finding. CLIPScore differences of about 0.01 in cosine are small, and a different CLIP model or caption could reorder them. FID, KID and IS were not computed. Kernel readings are coordinates, and their diagnostic power is in distributions: whether a model's outputs spread across these readings or cluster in one place. Separating individual pictures, as here, is the first step toward that, not a substitute for it. Nothing here is a claim about any particular generator.
The full measurements
| Reading | Drawing: clear | Drawing: composed | Drawing: motion | Butterfly: clear | Butterfly: composed | Butterfly: motion | Butterfly: mirrored |
|---|---|---|---|---|---|---|---|
| Δx | −0.0064 | −0.0167 | −0.0014 | −0.0315 | −0.0742 | −0.0850 | +0.0742 |
| Δy | +0.0105 | −0.0079 | +0.0094 | +0.1436 | +0.1328 | +0.0837 | +0.1328 |
| rv | 0.8040 | 0.4603 | 0.5340 | 0.8768 | 0.8912 | 0.8152 | 0.8912 |
| ρr | 12.048 | 12.235 | 12.349 | 12.921 | 14.619 | 16.154 | 14.619 |
| μ | 0.0066 | 0.0022 | 0.0001 | 0.1311 | 0.3792 | 0.0790 | 0.3792 |
| xp | 0.4453 | 0.4482 | 0.4531 | 0.2680 | 0.2763 | 0.2620 | 0.2782 |
| θ | 0.0132 | 0.0047 | 0.0059 | 0.0273 | 0.0136 | 0.0091 | 0.0126 |
| ds | 0.0020 | 0.0020 | 0.0020 | 0.0028 | 0.0029 | 0.0025 | 0.0029 |
| SDI | 0.2207 | 0.2407 | 0.2492 | 0.1959 | 0.1992 | 0.1830 | 0.1992 |
| Mass fraction | 0.1195 | 0.1192 | 0.1193 | 0.1192 | 0.1193 | 0.1192 | 0.1193 |
| Gradient floor (85th) | 0.1684 | 0.5682 | 0.2882 | 0.1228 | 0.0969 | 0.1877 | 0.0969 |
| Gradient ceiling (97th) | 0.3322 | 1.0392 | 0.4636 | 0.6164 | 0.6269 | 0.6314 | 0.6269 |
| Tail gap | 0.1638 | 0.4710 | 0.1754 | 0.4936 | 0.5300 | 0.4437 | 0.5300 |
| Mask components | 54,380 | 54,315 | 68,707 | 8,842 | 6,867 | 12,056 | 6,867 |
| Largest component share | 0.002 | 0.001 | 0.000 | 0.212 | 0.450 | 0.028 | 0.450 |
| Structure regime | texture | texture | texture | hybrid | region | hybrid | region |
| Region mask: μ | 0.881 | 0.703 | 0.158 | 0.704 | 0.592 | 0.753 | 0.592 |
| Region mask: SDI | 0.164 | 0.236 | 0.236 | 0.183 | 0.191 | 0.172 | 0.191 |
| Mean luminance | 0.414 | 0.426 | 0.482 | 0.510 | 0.372 | 0.372 | 0.372 |
| CLIPScore | 0.762 | 0.869 | 0.859 | 0.812 | 0.786 | 0.809 | 0.773 |
For the butterflies the two masks answer different questions. The canonical mask asks how the edge energy connects; the region mask closes small gaps and asks how the large shapes connect. In the clear-subject and in-motion butterflies, closing merges the subject into one dominant region, while the composed picture keeps the grass, the butterfly and the second flower as separate large regions. Butterfly cohesion is therefore reported from the canonical mask, since none of the butterflies is in the texture regime.
Definitions
| Reading | Definition, as computed |
|---|---|
| Mass mask | Pixels whose Sobel gradient magnitude lies between the 85th and 97th percentiles of the frame, excluding a 2-pixel border. Percentile-based, so it is invariant to global contrast. |
| Δx, Δy | Mask centroid minus frame centre, divided by width or height. Image coordinates: positive Δx is right, positive Δy is lower. |
| rv | 1 − share of pixels with gradient magnitude ≥ 0.15 (an absolute threshold). |
| ρr | 100 × mask area ÷ convex-hull area of the mask. |
| μ | pmax × (1 − H ÷ Hmax) over connected-component sizes: dominance of the largest piece, weighted by how unevenly mass is split. |
| xp | Share of total gradient magnitude in the outer 15% band of the frame. |
| θ | 1 − entropy of the magnitude-weighted gradient orientation histogram (8 bins) over the mask, ÷ log2 8. |
| ds | Mean thickness along the mask's skeleton, ÷ the shorter image side. |
| SDI | Mean distance of mask pixels from their centroid, ÷ the frame diagonal. |
| Gradient floor, ceiling, tail gap | 85th and 97th percentiles of gradient magnitude, and their difference. |
| Structure regime | Region if the largest component holds more than 25% of the mask; texture if there are more than 20,000 components and the largest holds under 1%; otherwise hybrid. |
| Region-biased mask | The canonical mask after a binary closing (disk radius 2) and removal of islands smaller than 0.05% of the frame. A contrast view; it does not replace the canonical mask. |
| CLIPScore | 2.5 × max(cos(image embedding, caption embedding), 0), CLIP ViT-B/32, OpenAI weights, standard preprocessing. |
Reproduction
Kernel: VTL Kernel Metrics, Canonical Gradient Field Extractor, Canon 3 with SDI. Device constants are
unchanged: long side 1536, gradient band 85th to 97th percentile, rv threshold 0.15, 8 orientation bins, 15%
edge band. Python 3.14.3, NumPy 2.5.4, scikit-image 0.26.0. OpenCV 5.0.0; the five images also run under
OpenCV 4.13.0 gave identical values, and a repeated run returned the same vector. CLIP: open_clip 3.3.0, PyTorch 2.14.1, ViT-B-32 / openai.
The mirrored image is the composed butterfly flipped horizontally in OpenCV.
| Image | SHA-256 of the source file |
|---|---|
| Drawing, clear subject (standing) | 65ac664a29775d9a31925951792bebcdf1458a8366a9cf3bf37a356a38bbbc72 |
| Drawing, composed (turning) | 71d4f3b97248b5b6099f2ab374a33271c6dd508bbe2ae5b8c3f57aeb1f254750 |
| Drawing, in motion | 2f951de73dac968f9a0a9bf4a34377ea6057edf2e564c699f7cd5ab8870679b4 |
| Butterfly, clear subject | 8197c4f886e767572f8277cbbca60f6767648fed8e19d284ba1019edce36de79 |
| Butterfly, composed | 7a328136ab5a368166ca32b926759ec9bd2671485ca9ded97bfc48f198238bfa |
| Butterfly, in motion | 4c2fe60f2c18ff911eae7106c9b17aa49fca531a7b03994754ce2b16cacd73f4 |