Reelune

Keeping an AI Character's Face Consistent — Three Methods, Measured

20 images × 3 conditions: why identity drifts, and what actually fixes it

  • AI character consistency
  • same AI character
  • consistent face AI generation
  • IP-Adapter consistency
Free forever
No signup
No real people
Updated daily

Ask an image model for the same character twice and you get two different people. On Reelune the same character appears across many videos, so this was not cosmetic — it was fatal. We measured three approaches under identical conditions and published what actually held up, including the settings that made things worse.

The three methods side by side

ConsistencyCostBest for
Tags onlyLow (different people)NoneOne-off images
Tags, heavily pinnedLow (better, not enough)NoneOne-off images
Reference image (IP-Adapter)HighLowRecurring characters
Fine-tuning (LoRA)HighestHighWhen a reference is not enough

Why consistency is hard

An image model builds a picture from scratch every time, satisfying whatever the prompt asks for. Ask for "silver hair, hime cut, grey eyes" and you get that. But an unlimited number of faces satisfy those words.

Everything you did not specify is decided by the seed:

  • Face shape
  • How the eyes are drawn
  • Lip weight
  • Apparent age

For a one-off illustration that does not matter. For a service where the same character returns in video after video, it is fatal.

Viewers come back looking for the girl they saw last week. A different face is a different person, and the character stops existing.

How we measured

We changed exactly one variable and generated 20 images per condition.

SettingValue
ModelSDXL-family illustration model
Resolution832 × 1216
SamplerEuler / normal
CFG4.5
Steps30
Variableseed only (20 values)

Outfit, pose, framing and location were all pinned. Adding variables would make it impossible to tell whether drift came from the seed or from the settings.

Judging was by eye. Whether something reads as the same character is a perception, not a specification, so a similarity score would not have answered the question.

Method 1: More tags — did not work

First we described the character in tags: silver hair hime cut blunt bangs grey eyes slender expressionless.

The result was twenty different people sharing a haircut.

Outcome
HeldHair colour, length, fringe, skin tone, outfit, expression
DriftedFace shape, eye rendering, lips, apparent age, side locks, shading style

Eyes and lips drifted most. Seed variance flows into whatever you left unspecified, which means the more tags you write, the more concentrated the drift becomes in what remains.

Pinning the drift did not help either

So we named the drifting attributes explicitly: eye shape, brows, lip colour, face shape, framing.

  • Framing held
  • The face still drifted

It also backfired. Adding sharp narrow eyes and thin eyebrows pushed the model toward hollow, unsettling faces — worse looking than before we added the tags.

The lesson: tag prompting can narrow the spread, but it cannot pin identity.

A failure worth publishing: we blacked out the frame

While iterating we also tried to pin the lighting, stacking four tags at once: dim indoor lighting soft shadows low key lighting night.

The output was almost entirely black — faces sunk into a blue-cast frame, and the comparison stopped being possible at all.

Lighting tags multiply. Four words that each mean darker do not darken independently; they compound. One was enough.

The original problem was the face, not the lighting. Touching things outside the actual problem creates new ones.

Method 2: Reference image — this worked

Next we transferred appearance from a reference image (IP-Adapter). We picked one image from the first batch and pinned it as the reference.

We tested three strengths, 8 images each.

StrengthFace matchSide effect
0.5SomewhatNoticeable drift remains
`0.7`HoldsUsable
0.9StrongestFlattens the art and pins composition too, killing variety

0.7 was the sweet spot.

But holding up in the same scene and outfit proves nothing. What a service actually needs is the same character across changing scenes and clothes. So we kept the reference fixed and varied outfit and location across 8 settings:

  • Office (suit)
  • Living room (blouse)
  • Summer festival (kimono)
  • Mansion (evening dress)
  • Bedroom (hoodie)
  • Poolside (swimwear)
  • Lingerie
  • Oversized sweater

All 8 read as the same person.

Two residual issues: hair occasionally shifts toward blonde, and body proportions vary slightly by scene. Both were acceptable.

Method 3: Fine-tuning (LoRA) — not needed here

The most reliable way to pin a character is to train on images of them (LoRA).

That requires two things:

  1. Assembling a consistent training set
  2. Standing up a training environment

Method 2 gave us enough consistency, so we skipped the investment.

If a reference image is sufficient, try that first. Jumping straight to training gets the order backwards.

Face-detection methods do not always apply

For photoreal work, injecting facial embeddings via face detection is powerful. It does not work on illustration. The underlying detector only finds photographic faces; on anime art it finds nothing.

MethodPhotorealIllustration
Face-detection basedStrongDoes not run
Image-embedding based (IP-Adapter)WorksWorks

When choosing a consistency method, check that it runs on your art style first.

What it actually costs in time

The comparison above only asked whether faces held. In production, speed matters too.

The first image is slow because it includes loading a 6.7GB checkpoint from disk onto the GPU. As long as you keep generating with the same model, you pay that once.

Which means: generating one image at a time while switching models pays 90 seconds every time. Twenty images requested separately take 30 minutes; batched, two and a half.

Adding the reference image barely changed per-image time. The extra computation is one image embedding, negligible against sampling itself. Consistency costs essentially nothing.

If you are building this — the order to try things

For a service where one character recurs, this order gets you there fastest.

  1. Generate a few dozen with tags alone and see the drift yourself. Skip this and you will pay for training without knowing whether you needed it.
  2. Identify what drifts, then try a reference image. Change one thing at a time. We touched lighting at the same time and blacked out the frame; that destroys your ability to attribute cause.
  3. Always test multiple strengths. 0.5 and 0.9 are different products. Defaults tend to land on either no effect or too much.
  4. Re-measure with varied outfits and locations. Holding in one fixed scene proves nothing.
  5. Only then consider training. Characters without a distinctive feature (common hair colour, average build) are meaningfully harder.

FAQ

Where does the reference image come from?

Generate a few dozen with tags alone, then pick the one that reads as the character. A human has to choose that first image.

Isn't a higher strength always better?

No. At 0.9 faces match best, but the art flattens and composition gets pinned too, so scenes lose variety. 0.7 was the practical trade-off.

Does it really hold when clothes and location change?

We tested 8 scenes twice each and all read as the same person. Hair occasionally drifted toward blonde.

Can you get consistency without LoRA?

For this character, yes. Characters without a distinctive feature (common hair colour, average build) are harder, so training may still be required.

Does the same approach work for photoreal?

Yes, though face-detection methods are more accurate there. Those same methods do not run on illustration, so pick by art style.