- How-to
- Dataset creation
- Single image
- Character LoRA
How to Create a LoRA Training Dataset from One Image (Step by Step)
Turn one reference image into a 20+ image, captioned LoRA dataset: reference quality rules, a diversity grid, a curation checklist, and starting settings.
The classic LoRA workflow assumes you already own a folder of 20 to 30 varied photos of your subject. Most creators do not. They have one good illustration, one character sheet, or one portrait, and the advice to “just collect more images” is useless for an original character who exists nowhere else. This guide walks through building a complete, trainer-ready LoRA dataset from a single reference image, with the checkpoints that separate a stable identity from a dataset that drifts.
Can you train a LoRA from one image?
You can train a LoRA on one image, but you should not. A single image gives the model exactly one pose, one lighting setup, and one background to learn, so it memorizes the photo instead of the identity. The workable approach is to expand one reference into 20 or more identity-consistent variations first, then train on the expanded set. Our guide on how many images a LoRA needs covers why 15 to 30 is the target range.
Step-by-step: one image to a full dataset
- 01
Choose a strong reference image
Everything downstream inherits the quality of this file. Use a sharp image at 1024 px or larger where the whole face is visible, lit evenly, and free of heavy filters, sunglasses, or motion blur. A three-quarter angle is slightly better than a straight-on passport photo because it reveals nose and jaw depth. - 02
Lock the identity and pick a trigger word
Write a short identity spec: face shape, eye color, hair color and style, skin tone, age range, and any distinguishing marks. This becomes the constraint every variation must satisfy. Choose a rare trigger token such asohwxor an invented name so the base model has no prior association with it. Read the captioning and trigger word guide for the reasoning. - 03
Plan a diversity grid
Before generating anything, decide the 20 to 30 shots you need. Lay them out on the axes in the table below so every image adds a new combination. Planning first prevents the most common failure in generated datasets: twelve near-identical head-and-shoulders portraits. - 04
Generate identity-consistent variations
Feed the reference and the identity spec into an identity-preserving image model and request each planned variation. Keep the identity spec constant and change only the scene directives. LoRA Dataset automates this stage: it extracts the identity from your reference, then queues 20+ scene variations that alter pose, camera, lighting, and background while holding the face fixed. - 05
Caption every image with the trigger word first
One caption per image, starting with the trigger word, describing what varies: pose, wardrobe, lighting, setting, framing. Leave out permanent traits so they bind to the trigger word. Example:ohwx, a woman in a green raincoat laughing on a rainy city street, medium shot, overcast light. - 06
Curate and remove drift
Put the reference next to each generated image. Reject anything where the face, apparent age, or body proportions wander, and drop near-duplicates. A curated 20 beats an uncurated 35 every time. Our guide to identity drift lists the specific tells to check. - 07
Export in trainer-ready format
Save each image with a caption file of the same name (0001.pngplus0001.txt) in one folder. Kohya expects the folder to be named<repeats>_<trigger> <class>, for example10_ohwx woman. OneTrainer and the Civitai on-site trainer accept the same paired layout as a zip.
The diversity grid for 24 images
This grid is a practical default for a realistic or illustrated character. Adjust the split toward full-body shots if the outfit is part of the character.
| Axis | Values to cover | Images |
|---|---|---|
| Framing | Close-up, medium shot, full body | 10 / 9 / 5 |
| Camera angle | Front, 3/4 left, 3/4 right, profile, high angle, low angle | Rotate through all six |
| Lighting | Soft daylight, hard sunlight, warm indoor, cool studio, night or neon, backlit | About 4 each |
| Expression | Neutral, smile, laugh, serious, surprised | At least 3 each |
| Background | Plain studio, home interior, street, nature, workplace, abstract | No repeats |
| Wardrobe | Three or more distinct outfits | About 8 each |
What makes a good reference image
- Resolution: at least 1024 px on the short side. Upscaling a 400 px image bakes in artifacts.
- Lighting: even, diffuse light. Harsh shadows hide half the face geometry.
- Angle: front or three-quarter. Profiles hide too much for an initial identity extraction.
- Occlusion: no sunglasses, masks, hands on face, or hair covering an eye.
- Style consistency: decide whether the character is photorealistic or illustrated and keep every generated image in that style.
Consent and likeness
Curation checklist before export
- Eye color, eye spacing, and eyebrow shape match the reference in every image.
- Nose bridge and jawline read the same from front and three-quarter views.
- Apparent age is stable; watch for images that skew younger or older.
- Skin tone is consistent after accounting for lighting color.
- No two images share both the same pose and the same background.
- Every caption starts with the trigger word and mentions nothing permanent about the face.
- Total count is between 15 and 30 after deletions.
Starting training settings for a generated dataset
| Setting | Flux.1 dev | SDXL | SD1.5 |
|---|---|---|---|
| Resolution | 1024 | 1024 | 512 or 768 |
| Network rank (dim) | 16 | 32 | 32 |
| Learning rate (UNet) | 1e-4 | 1e-4 | 1e-4 |
| Repeats × epochs | 5 × 10 | 10 × 10 | 10 × 10 |
| Total steps (batch 1) | ~1,000 | ~2,000 | ~2,000 |
| Caption style | Natural language | Natural or tags | Tags |
These are starting points, not final values. Save a checkpoint every epoch and test the last four at the same seed and prompt. Pick the earliest checkpoint that nails the likeness; later ones usually trade flexibility for sharpness. For the trade-offs between base models, see Flux vs SDXL LoRA training.
Doing this in LoRA Dataset
LoRA Dataset compresses steps two through seven into one session. Upload the reference, and the app extracts a structured identity profile and assigns your trigger token. The diversity engine then generates 20+ variations that rotate through framing, angle, lighting, and background while enforcing the identity profile on every image. Each output is captioned automatically with the trigger token first, and the dataset downloads as a zip of paired image and caption files. The tool is free and runs on your own Google Gemini API key, so model usage is billed to you at Google’s rates with no markup.
Frequently asked questions
Can you train a LoRA with just one image?
Training directly on one image produces a LoRA that memorizes that photo, including its pose and background. Expand the single reference into 20 or more identity-consistent variations first, then train on the expanded set.
What resolution should the reference image be?
Use at least 1024 pixels on the short side. Flux and SDXL train natively at 1024, and upscaling a small image introduces artifacts the LoRA will learn.
How do I export a dataset for Kohya?
Place each image and a .txt caption file with the same base name in one folder named with the repeat count, trigger word, and class, for example 10_ohwx woman. Point the Kohya training image directory at the parent of that folder.
Does the generated dataset work with Civitai’s on-site trainer?
Yes. Upload a zip containing the images and their matching .txt caption files. The Civitai trainer reads paired captions and lets you set the trigger word during setup.
How long does it take to generate a 20-image dataset?
With LoRA Dataset the generation runs in a background queue and typically completes within a few minutes depending on Gemini API throughput. Curation adds another 10 to 15 minutes of review.