Home AI BenchMeasured on real home PCs

Character LoRA for FLUX.2 klein, part 2: four more training runs, and what finally fixed the face in close-ups

Partly worked2026-10-30 · FLUX.2 klein base 4B (LoRA) · Apple M1 Max 64GB (training), Apple silicon (inference)

Three scenes, each made three ways: the base model without a LoRA, the v1.4 LoRA with only its trigger word, and v1.4 with the words "realistic photo" added
Same seed (7) and scene text in every column. Left: FLUX.2 klein base 4B with no LoRA. Middle: v1.4, trigger word only. Right: v1.4, trigger word plus "realistic photo".

This follows the first character LoRA note, where the LoRA got the face and hair right but made the body look heavy and the head large. We promised to publish the next comparison whether or not it helped. Here it is. As before: one original virtual character (an adult, 20 years old), mflux-train on a Mac with an M1 Max, one seed per test, judged by eye.

The four runs

All four used the same settings as v1 (rank 16, learning rate 1e-4, training images resized to 512 px, trigger word sakubudo). Only the dataset and the number of epochs changed, so each run is about 1,500 steps.

VersionImagesEpochsStepsTraining timeWhat changed in the data
v1.145341,5304 h 13 minMore standing, fitted full-body pictures
v1.269221,5184 h 28 minMore everyday outfits, semi-realistic style
v1.351301,5304 h 10 minRealistic photo style only, varied colourful outfits, 12 smiling pictures
v1.479201,5804 h 6 minv1.3 plus 28 pictures: 12 chest-up close-ups and 16 full-body

The training pictures were made with an image model from the character's own reference sheets; we do not publish them or the LoRA file. For v1.4, the outfit descriptions came from the English keywords of a free costume reference site, COSTUME-DB-01 by ギア (@giaaibusi). We used the words only, not the images, and we left out the lingerie, swimwear and "sexy" categories.

The row we promised

In the picture at the top, the base model (left) draws a different person for each scene, as expected without the LoRA. With v1.4 (middle and right) the same character appears in all three. Adding "realistic photo" (right) changed almost nothing with v1.4: the pictures are nearly identical to the trigger-only ones on this seed.

What changed, version by version

  • v1.3 fixed the body. With the trigger word and "realistic photo", the figure became slimmer and the legs longer, without the long proportion sentence the first note needed. The long sentence now made things worse: hair and face drifted toward a younger look.
  • v1.3 broke close-ups. Asked for a chest-up portrait, it produced a woman with long loose hair and no updo, who did not look like the character.
  • v1.4 fixed close-ups. The same portrait prompt kept the braided silver-gray updo, the amber earrings and the face, and looked more like a photograph. Full-body pictures were about the same as v1.3.
  • "Neutral" is not a smile. Pictures without an expression in the prompt looked cold. Adding smiling pictures to the data (v1.3) and an expression to the prompt fixed that.
v1.3 and v1.4 on the same seed: three full-body scenes, one close-up and two prompts with no outfit
Same seed (7). Pairs are v1.3 then v1.4. Middle row, right pair: the close-up, where the difference is largest.

What is still wrong

  • Not fully photographic. Faces are close, but some pictures still look a little like a render.
  • Default outfits are dull. With no outfit in the prompt, v1.3 leaned to a white top and denim shorts, and v1.4 to black or grey trousers (two pictures each, so this is a tendency at most). Name the outfit in the prompt.
  • Pose from an image did not work. We tried to copy a pose from a mannequin reference with FLUX.2 klein's edit mode. The pose was not transferred (a seated reference gave a standing figure). We now describe poses in words.

How much to trust this

  • One character, one dataset per version, one seed per test, judged by eye. We did not measure head-to-body ratio.
  • No speeds or memory figures here: these pictures were made on a Mac, not on the rented GPUs in our benchmark tables.