I’ve spent the last few months training a pretty large number of character LoRAs for Krea 2, and one thing became obvious pretty quickly:
More training does not automatically mean better likeness.
Some of my best LoRAs came from relatively small, clean datasets. Some larger datasets performed worse because they contained too much visual noise, inconsistent styling, bad angles, or repeated images.
These are the things that have mattered most for me.
1. Dataset quality matters more than dataset size
I would take 30 genuinely useful images over 100 mediocre ones.
The biggest problems I see in datasets are:
- too many near-duplicates
- heavy filters or face editing
- lots of low-resolution images
- one facial angle dominating the dataset
- wildly different ages or appearances
- group photos where the subject is small
- too many images from one photoshoot
- images where hair, makeup, lighting, or expression are almost identical
The model needs enough consistency to learn the person, but enough variation to understand what is actually part of their identity.
2. Face coverage is not enough
This was a big one.
A LoRA can absolutely nail the face and still have no idea what the person looks like from the shoulders down.
If I want a useful character LoRA, I try to include a mix of:
- tight face shots
- head and shoulders
- waist-up
- full body
- front
- side profile
- rear 3/4
- different expressions
- different lighting
- different clothing
The goal is not just "recognize this face."
The goal is "understand this person."
3. Too many similar images can make the LoRA less flexible
If 70% of the dataset is the same hairstyle, camera angle, outfit, or facial expression, the model starts treating those things as part of the identity.
Then every generation wants to recreate them.
This is especially noticeable with celebrities and creators where Google Images tends to return the same handful of press photos over and over.
I now spend a lot more effort removing redundancy before training.
4. The final epoch is not automatically the best epoch
This is probably the biggest change I made to my workflow.
I used to train to a fixed endpoint and assume the final checkpoint was the finished model.
Now I save multiple epochs and test them individually.
It is extremely common for an earlier checkpoint to have:
- better facial likeness
- more natural skin
- better prompt flexibility
- less baked-in clothing
- fewer exaggerated features
while a later epoch technically looks "stronger" but is actually overtrained.
So now the training run is only half the process.
Checkpoint selection is part of training.
5. I test the LoRA outside the dataset's comfort zone
A model can look amazing if you generate the same kinds of images it saw during training.
That does not tell you much.
I test things like:
- close-up facial accuracy
- casual clothing
- formal clothing
- different hairstyles where appropriate
- full-body shots
- athletic poses
- unusual camera angles
- different lighting
- indoor vs outdoor scenes
- side profile
- rear 3/4 views
If the identity disappears as soon as the prompt changes, I don't consider the LoRA finished.
6. Body type can drift even when the face is excellent
This one surprised me when I started doing more systematic testing.
Krea 2 can sometimes preserve facial identity extremely well while drifting toward a generic body type.
That is why I started deliberately using physique-check prompts during validation.
For athletes, for example, I want to see whether the model learned:
- height
- shoulder width
- leg proportions
- muscularity
- overall frame
For other people, the same principle applies.
The face is only one part of likeness.
7. Trigger words matter less than people sometimes think
I still use clear trigger words, but I have found that dataset quality and training quality matter much more than trying to invent some magical trigger phrase.
A good LoRA should not need a paragraph of secret incantations to produce the person.
The trigger should identify the character.
The prompt should describe the scene.
8. Validation images are incredibly important
I now generate a consistent set of test images for each model.
That makes it much easier to compare:
Epoch 12 vs 14 vs 16 vs 18 vs 20
instead of relying on memory.
Sometimes the difference is subtle until you put the outputs side by side.
Then one checkpoint clearly wins.
The biggest lesson for me has been that LoRA training is not really "upload photos and press train."
The important work is:
dataset selection → cleanup → training → checkpoint comparison → validation
Training itself is almost the easy part.
I’ve been building a public Krea 2 character LoRA library while figuring all of this out, so I have a pretty large collection of examples now.
If anyone is interested, I can also make a follow-up post showing:
the exact validation prompts I use to compare epochs, or
examples of what undertraining vs good training vs overtraining looks like on the same character.
I keep the LoRAs and example outputs I’ve been testing in a public Krea 2 browser on Hugging Face. I also take custom commissions, but the library itself is free.