Skip to content

v1.2.71 - Consistent characters, without training a LoRA(Flux only)

Latest

Choose a tag to compare

@imprsnst imprsnst released this 15 Aug 11:06

Getting the same person across shots used to mean training a LoRA for them, or
re-wiring the same reference images into every node by hand. Neither survived
moving to a new project.

character_showcase

Build a character once instead, and pick it from a dropdown.

  • Drop in a photo or two. The Characters panel is in the left rail beside
    Assets and Models. Drag an image onto it, or turn a take you already generated
    into a character.

  • It compiles a .char. One portable file holding your original references, a
    short locked description, the reference set resized for the model, and an identity
    fingerprint. Copy it between projects or send it to someone else, and it works.

  • Pick it on a FLUX.2 node. A Character dropdown in the node's settings. No
    wiring images, no re-attaching references, no describing their face in the prompt.
    You write the scene, the references carry the likeness.

  • Every take is scored. A continuity score out of 100 against the character,
    so drift is a number you can see rather than something you notice three shots
    later.

Nothing is trained and no adapter is installed. The references ride in FLUX.2's
own multi-reference channel, joining the token sequence the denoiser already
attends to.

How the score works

Face similarity is matched against the closest reference, never their average.
This was measured rather than assumed: averaging embeddings across views of one
person produces a centroid that matches none of them, and scoring an identical
image fell from 100 to 63 as references were added. Against the closest reference
it holds at 99 or better, with an impostor still at 8.
character_pipeline

The number is 0.8 * face + 0.2 * subject, and falls back to the subject score
alone on a shot with no visible face.

Three small encoders do the work, all permissively licensed and none
non-commercial: YuNet (MIT, ~230KB) detects, SFace (Apache-2.0, ~37MB) embeds
faces, and DINOv2-base (Apache-2.0, ~330MB) embeds the subject. They download
without a Hugging Face token and land in models/annotators/. Scoring always runs
on the CPU, so building a character can run while a render is in flight.

Two things worth knowing before you hit them

Scenes with several people are not solved. Put a character in a crowd and
their face tends to spread onto the other people in frame, and the score will not
warn you: it finds one matching face and reports a good number. Use characters for
shots built around one person for now.

References cost render time. Each one rides along at every denoising step.
Five at 1024px roughly sextuple the tokens per step, so add them for coverage you
actually need rather than by reflex. A frontal, a three-quarter and a profile beat
five near-identical frontals, and a reference that is not clearly the same face is
flagged when the character is built rather than silently averaged in.

There is no strength dial, because FLUX.2 has no img2img path at all. If a
character overpowers a scene, your levers are reference count and prompt.

A full guide, with the pipeline and the comparison against PuLID, FaceID and
img2img, is at
inlinestudio.art/characters.

Also in this release

  • MiniMax H3 step progress. The per-step progress hook now unwraps a previous
    one instead of stacking on it, so a second run reports progress correctly.

Upgrading

From the repo (the usual way):

cd Inline-Studio
git pull
cd core
./webui.sh --install --extra all
./webui.sh

The three scoring encoders are fetched on first use, so there is nothing to
download ahead of time.

What's Changed

Full Changelog: v1.2.70...v1.2.71