4 tables

4.6 The Likeness QA Protocol: Measure Instead of Guess

Every operator judges a face by looking at it. The problem is what happens over weeks: the judgment drifts along with the face, until "that looks like her" means something different in month six than it did in month one.

Measurement fixes that. This chapter is a battery of generations, a scoring rubric, and an acceptance threshold: small enough to run in an hour, specific enough that two runs six months apart are comparable.

Why a battery and not a sample

One generation tells you nothing about identity. Identity is a property of distribution: does the face hold across the angles, lights, and expressions your content calendar will actually demand?

So the test is structured, not random. You generate the same set of frames every time, score them against the same rubric, and compare numbers rather than impressions.

The core battery

Nine frames, three lighting conditions. Twenty-seven generations, about an hour including scoring.

# Frame Why it is in the battery
1 Frontal, neutral The reference condition — closest to the plate
2 Three-quarter left Where drift appears first (4.4)
3 Three-quarter right The other side; asymmetric failures hide here
4 Profile left Structural likeness, jaw and nose profile
5 Profile right
6 Low angle, looking up Distorts proportions; common in the feed
7 High angle, looking down Selfie angle; the most common frame in real content
8 Close-up Skin and eye detail; where over-processing shows
9 Full body Body proportions from the dataset's full-body frame

Lighting conditions, applied across the set:

  1. Window daylight — soft, directional, the baseline
  2. Ring or on-camera flash — flat, frontal, unforgiving of skin texture
  3. Outdoor shade — cool, low contrast, where color drift shows up

Two optional conditions, worth running once per identity rather than every quarter: a softbox studio setup, and a hard direct flash. Between them they cover the extremes.

The expression and pose sweep

Identity can hold in a static frame and collapse in motion: an expression changes cheek and eye geometry, and a pose changes how the jaw reads.

Five expressions, three poses, one frame each:

Expressions: neutral, smile, laughing, talking (mouth open), serious.

Poses: arms crossed, hands near face (no occlusion — hands below the jawline), mid-turn away.

Sixteen more generations, and they are the ones that expose a that has memorized a single expression from its dataset, the from 4.3, in its trained form.

The practical minimum, if an hour is not available: frames 1, 2, 3, 8, 9 under window light, plus neutral, smile, and laughing. Eight generations, fifteen minutes. Run the full battery whenever you publish a new identity or retrain.

The rubric

Score each frame 1 to 5 on four dimensions. Keep the dimensions separate; combining them early hides the diagnosis.

Score Facial structure Skin and texture Body proportions Is this the same person?
5 Indistinguishable from the plate Natural texture, pores, no plastic sheen Correct head-to-body ratio Yes, unmistakably
4 Minor variation in one feature Slightly smooth or slightly coarse Close, within tolerance Yes
3 A sibling; one feature is wrong Visibly processed in one region Off by a noticeable margin A follower would question it
2 Same demographic, different person Artifacts, waxy or noisy Wrong body type Probably not her
1 Unrelated Failed render Wrong entirely No

Then the acceptance rules. These are the ones people skip, and they are why averages mislead:

Rule 1 — the mean must clear the floor. Average ≥ 4.0 on facial structure and ≥ 4.0 on "same person." Below that, do not publish the identity; go back to 4.4 or 4.5.

Rule 2 — no single frame scores 2 or below. This rule matters more than the mean. Averages hide the one bad angle, and the one bad angle is exactly the frame that will end up in a post, get screenshotted, and generate the comment thread. Identity is judged by your worst frame, not your average one.

Rule 3 — the skin and texture dimension is a ceiling test. A score above 4 here is not a goal; a 5 with visible pore structure is right, and a 5 with a poreless finish is a 3 wearing a 5's clothes. Over-detailing is the failure mode from 3.2.

Rule 4 — body proportions are scored only on full-body frames. Scoring them elsewhere is guesswork.

Recording the scores per frame, not only as an aggregate, is what makes the register useful in month six.

Scoring honestly

Four habits that make the numbers mean something:

Score blind when comparing versions. Rename the files, shuffle them, and score without knowing which produced which. You will otherwise pick the one you spent longer on.

Score against the reference plate, side by side. Not from memory. Memory of a face is reconstructive, and it will adjust to whatever you are looking at.

Use a second rater when you can. Someone who has seen the persona's posts but not the training process. Their scores are noisier and they catch the failures you have stopped seeing.

Never score on training images. The held-out set from 4.4, or fresh generations. A LoRA scored on its own dataset measures memorization, which is precisely the thing that makes a rigid persona.

The iteration register

One row per identity version. This is the artifact that turns QA into institutional memory.

Field Example
Identity version aria-v3
Base model + hash recorded file and checksum
Dataset version which images, which selection pass
Key parameters rank, learning rate, steps
Chosen checkpoint step not "the last one"
Date
Structure mean
Same-person mean
Worst single frame which frame, what score
Verdict published / retrained / rejected
Published assets using it from the provenance manifest (11.5)

Two things this register does beyond QA. When a follower-level problem appears — a of comments about the face, a drop in engagement on portrait posts — you can check whether the current identity version correlates with it. And when you retire an identity version, you have a record of what was published under it, which is what the disclosure record in 11.3 needs.

One more use for the battery

The battery is not only a gate before publishing. It is also a diagnostic you run after a change, on purpose, to find out what the change did.

Three examples worth scheduling. When you update a driver or a framework, run the core battery and compare to the previous run: an environment regression shows up as a texture or color shift before it shows up in anything you would notice by eye. When you add a new prompt template to your library, run the frames that template will be used for. And when you change your post-processing chain — the upscaler, the detailer, the grade from 5.5 — run the close-up and the profile frames, because that is where processing damage appears first.

Each of those is fifteen minutes and replaces an argument about whether something looks worse with a number that says whether it does.

When to run the battery

Trigger Battery
New trained identity Full
New base model or adapter version Core
Quarterly maintenance Core
Any published frame that "looked off" The matching frames
Before a campaign with heavy face visibility Core, plus the campaign's angles

The quarterly run is the one that catches per-quarter drift from 4.1 — the migration that is invisible in any single generation and obvious across a year.

Where this goes wrong

Scoring one image. You have measured a sample, not an identity.

Averaging away a bad angle. Rule 2 exists because the mean is a liar.

Rewarding a poreless close-up. That is the synthetic look that costs you on the platform realism tiers from 11.2.

Scoring against memory. You will score against the last image you looked at instead.

Not keeping the per-frame scores. The aggregate cannot tell you which angle to fix.

Running it once. The comparison is the value; a single run is a snapshot.

Testing on training images. Memorization reads as excellence.

The gate

  1. Have you run the core battery, in all three lighting conditions?
  2. What is your structure mean and your same-person mean?
  3. What is your worst individual frame, and what score did it get?
  4. Is the expression and pose sweep clean, or does one expression collapse the identity?
  5. Is the iteration register populated, with the base hash and the chosen ?
  6. When is the next scheduled run?

What you leave with

A 27-generation core battery with three lighting conditions and a 16-generation expression and pose sweep, a practical eight-frame minimum, a four-dimension rubric, four acceptance rules with the worst-frame rule carrying the weight, four habits that make scoring honest, and an iteration register that turns each identity version into a comparable record.