How many images do you need to train a character LoRA?
A character LoRA needs enough images to teach identity and enough variety to stop the model memorising one photo. For Flux, SDXL, and SD1.5, 15 to 30 diverse, well-captioned images is a practical working range for a single character. Fewer can work with regularisation; more only helps when the extra images add new angles, lighting, or outfits.
Published 5 September 2026 · 4 min read
Why does variety matter more than the raw count?
A LoRA (Low-Rank Adaptation) trains a small pair of low-rank matrices that are added to the frozen weights of the base model. Because the trainable parameter count is tiny compared with the base model, a LoRA learns whatever is consistent across the dataset very quickly. If every image shares the same background, outfit, or camera angle, those become part of the "character" as far as the model is concerned.
That is why dataset size is a weak predictor of quality. Ten images that cover frontal, three-quarter, and profile views under different lighting will usually outperform forty near-identical selfies. The DreamBooth paper showed that a subject can be taught from as few as three to five images when prior-preservation regularisation is used, which sets the practical floor. The ceiling is set by how many genuinely new views you can add.
What are the working ranges by base model?
These are the ranges the LoRA Dataset team uses and that community trainers commonly recommend. They are working heuristics, not measured thresholds, and they assume one character, clean captions, and no duplicates.
| Base model | Working range for one character | Why the range sits there |
|---|---|---|
| Stable Diffusion 1.5 | 15 to 30 images at 512 px | Trained at 512x512 with a single CLIP text encoder, so variety has to come from the images rather than from long captions. |
| SDXL | 15 to 30 images at 1024 px | Trained at 1024x1024 with multi-aspect bucketing, so you can keep close-ups, half-body, and full-body framings without cropping to square. |
| FLUX.1 | 15 to 25 images around 1 megapixel | The T5 text encoder lets natural-language captions carry more of the variation, and the 12B-parameter model costs more per step, so smaller clean sets are preferred. |
What should each image add?
Before adding an image, ask what it teaches that the rest of the set does not. A useful checklist for a character dataset:
- A new camera angle: frontal, three-quarter left and right, profile, slight high and low angles.
- A new framing: close-up, head and shoulders, half-body, full-body with feet visible.
- A new lighting condition: soft daylight, golden hour, indoor tungsten, overcast, hard flash.
- A new background and outfit, so neither gets baked into the identity.
- A new expression or pose, while keeping the same face, hair colour, and body type.
What should you leave out?
- Near-duplicates from the same burst, or the same seed with tiny prompt changes.
- Images with a second person in frame, unless you crop them out.
- Heavy filters, beauty smoothing, or stylised renders when you want a photoreal character.
- Anything below the training resolution. Upscaled low-resolution images teach the upscaler artefacts, not the face.
- Images where the identity itself is inconsistent. One wrong face in fifteen is enough to cause drift.
How do repeats and epochs replace padding?
Trainers built on Kohya sd-scripts expose a repeats value, either through the folder-name convention (a folder named 10_bunn is read ten times per epoch) or through num_repeats in a TOML dataset config. Total training steps are roughly images multiplied by repeats multiplied by epochs, divided by batch size. A fifteen-image dataset with ten repeats and ten epochs sees 1,500 image presentations, which is plenty for a character LoRA.
This is the right lever when a dataset feels "too small". Duplicating files on disk does the same thing with more clutter and no benefit, and adding weak images to reach a round number actively hurts.
What are the signs of too few or too many images?
| Symptom | Likely cause | Fix |
|---|---|---|
| Every generation uses the same pose or background | Too little variety, so those elements were learned as identity | Add images that change only the pose or background |
| Face is right from the front but wrong at a three-quarter angle | No or few angled reference images | Add three-quarter and profile views |
| Trigger word is ignored or weak | Too few total steps for the dataset size | Raise repeats or epochs rather than adding filler images |
| Features look blurred or averaged | Identity is inconsistent across the set, or too many low-quality images | Remove outliers; prefer fewer, sharper, consistent images |
Frequently asked questions
- Can I train a LoRA from a single image?
- Not directly with good results. One image gives the model one angle and one lighting condition, so it overfits to that photo. The practical route is to generate 15 to 30 consistent variations from that single reference first, then train on the set. That is the workflow LoRA Dataset automates.
- Do I need regularisation or class images?
- They help when the dataset is very small or when the base model starts forgetting how to draw people in general. The DreamBooth paper introduced prior preservation for exactly this. With 15 to 30 varied images and a rare trigger word, many character LoRAs train fine without them.
- Does a bigger dataset need a higher LoRA rank?
- Not necessarily. Rank controls how much detail the adapter can store, not how many images it can learn from. Character LoRAs commonly use modest ranks. Raise rank when fine detail is missing, not because the dataset grew.
Sources
- Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021)
- Ruiz et al., "DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation" (2022)
- kohya-ss/sd-scripts training README
- Podell et al., "SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis" (2023)
- FLUX.1 [dev] model card, Black Forest Labs
- Stable Diffusion v1.5 model card