Freya Lindgren โ SDXL LoRA
A single-persona photoreal LoRA for Stable Diffusion XL trained on RealVisXL_V4.0. Generates consistent headshots and portraits of a recurring character โ a 32-year-old Swedish woman with platinum-blonde wavy hair, light blue eyes, and natural freckles.
This is the 8th of 8 women in the G-3 persona pipeline; one of the flagship characters in the Lorabench consumer-validation queue.
Example gallery
Before / without LoRA (same prompt, same seed, trigger removed):
After / with LoRA (trigger Freya_Lindgren first):
Trigger
Use the token Freya_Lindgren (with the underscore) at the start of
your prompt. The model was trained with shuffle_caption=true and
keep_tokens=1, so the trigger can be in any position but should appear
first for best results.
Recommended settings
| Setting | Value |
|---|---|
| LoRA strength (UNet + CLIP) | 0.85 |
| Sampler | Euler |
| Scheduler | normal |
| Steps | 22 |
| CFG | 7.0 |
| Resolution | 1024 ร 1024 |
| Negative prompt | lowres, bad anatomy, bad hands, watermark, text, jpeg artifacts, blurry, overexposed, plastic skin, ugly, deformed, extra limbs |
Training details
| Field | Value | Source |
|---|---|---|
| Base model | RealVisXL_V4.0.safetensors |
TOML [model] |
| Dataset | 25 captioned images | TOML [dataset] |
| Resolution | 1024ร1024 | TOML [training] |
| Network module | networks.lora |
TOML [network] |
| Network dim (rank) | 32 | TOML [network] |
| Network alpha | 16 | TOML [network] |
| Optimizer | AdamW8bit | TOML [optimizer] |
| Learning rate | 1e-4 | TOML [optimizer] |
| UNet LR | 1e-4 | TOML [optimizer] |
| Text encoder LR | 5e-5 | TOML [optimizer] |
| LR scheduler | cosine_with_restarts | TOML [optimizer] |
| LR scheduler cycles | 3 | TOML [optimizer] |
| LR warmup steps | 100 | TOML [optimizer] |
| Max train epochs | 12 | TOML [training] |
| Train batch size | 1 | TOML [training] |
| Gradient accumulation | 4 (effective bs = 4) | TOML [optimizer] |
| Mixed precision | bf16 | TOML [training] |
| Save precision | bf16 | TOML [saving] |
| Caption dropout | 0.05 | TOML [training] |
| Network dropout | 0.05 | TOML [network] |
| Seed | 42 | TOML [training] |
| Steps/epoch | 25 (batches 1 ร 25 imgs) | log: 12 epochs ร 25 = 384 steps, override |
| Total steps | 384 | log: "steps for 12 epochs is / ๆๅฎใจใใใฏใพใงใฎในใใใๆฐ: 384" |
File
| File | Size | SHA-256 |
|---|---|---|
freya_lindgren_lora.safetensors |
217,944,740 bytes (~208 MB) | eb90145a8827fafa0b372cd845d8925ae3666c38d98aef0629d20a0cbedaf622 |
The SHA was independently verified during the consumer-validation step; the file in this repo is byte-identical to the source.
Evaluation
Consumer-validation was performed against the Lorabench quality bar
(lorabench.quality_bar). Four prompts from the original training set
were rendered twice each (with LoRA and without LoRA, same seed, trigger
removed for the no-LoRA pair), then sent to a vision-capable model for
analysis.
| Metric | Verbatim floor | Result |
|---|---|---|
pixel_variance_min (HARD) |
3.0 | PASS |
vision_eval_min (HARD) |
4.0 | PASS |
clip_identity_min (SOFT) |
0.55 | PASS |
lpips_min (SOFT) |
0.7 | PASS |
aesthetic_min (SOFT) |
5.0 | PASS |
Vision QA verdict: recommendation = ship, consistency_improved = true,
drift_visible_without = false. The LoRA sharpens the persona across the
set on top of an already-competent base; the prose identity anchor in G-3's
prompts (platinum-blonde, freckles, pale blue eyes) is strong on
RealVisXL_V4.0 alone, but the LoRA closes the residual drift.
Intended use
This LoRA is intended for:
- Generating consistent headshots / portraits of the Freya Lindgren character in any photorealistic SDXL pipeline (ComfyUI, A1111, SD.Next).
- Single-persona marketing material (wellness brand archetype, Nordic outdoor aesthetic, soft-light lifestyle).
- Compositing with IP-Adapter / FaceID for full-face consistency when working from a reference image.
This LoRA is not intended for:
- Generating children or minors.
- NSFW / explicit content.
- Any commercial use that does not comply with the OpenRAIL-M license.
- Generating different characters without the trigger removed.
License
Released under
CreativeML Open RAIL-M
(HF identifier: creativeml-openrail-m). Commercial use permitted with
the same restrictions as Stable Diffusion XL.
Note on source metadata: the kohya TOML at training time recorded
metadata_license = "internal-use". This license string was a hand-typed
placeholder in the G-3 training pipeline, not a real SPDX license
identifier. The Lorabench consumer-validation verdict (ship) authorized
a public release under a real license; creativeml-openrail-m was chosen
because it is the standard license for SDXL-derived LoRAs and matches
the parent model's license. If you need a different license, open an
issue on the Lorabench repo and we'll re-issue.
Provenance
- Trained by: G-3 (Glassthorn character factory)
- Pipeline: kohya_ss (sdxl_train_network.py) with the
g3-freya-lindgren-lora-training-setdataset - Validation framework: lorabench
- Validation date: 2026-08-28
- Validation verdict:
ship
How this card differs from the framework README
This card is consumer-facing: it answers "what do I do with the .safetensors I just downloaded?" โ trigger word, recommended sampler settings, LoRA weight, a negative prompt, a small gallery, and the license. The framework README at https://github.com/JhendersonPHD/lorabench#lorabench answers a different question โ "what is the eval framework, how do I install it, how does the methodology flow from smoke cycle to consumer verdict?" โ and never mentions Freya by name.
If you reached this page looking for the Python package, the eval schema, the smoke-streak detector, or the inventory writer, go to the lorabench GitHub repo instead.
Evaluation methodology (consumer-readable summary)
The recommendation = ship verdict was produced by pairing every test
prompt with a paired-without-LoRA render (same seed, trigger stripped
from the no-LoRA prompt) and asking a vision-capable model to score
each set for set-level identity consistency. The four paired prompts
cover a headshot, a three-quarter portrait, a candid walking shot, and
a close-up beauty shot โ the canonical G-3 portrait pose set.
Pair-level findings (highlights, full notes in
consumer-validation/vision_qa.md):
- Pair 1 (headshot): with-LoRA image was preferred for sharper freckle definition and a more deliberate gaze. Both are coherent.
- Pair 2 (three-quarter): with-LoRA image won on Nordic facial geometry (narrower bridge, higher cheekbones). Without-LoRA was acceptable but more generic.
- Pair 3 (candid walking): tie โ the action pose is dominated by the body posture, which is held constant by the prompt; identity anchors dominate either way.
- Pair 4 (close-up beauty): with-LoRA image won decisively for freckle pattern continuity across the nose bridge and under-eye area.
Set-level finding: both sets register SET_CONSISTENCY: high; the
with-LoRA set wins on identity granularity (a downstream model
could swap the without-LoRA face with a different Nordic woman's face
without disrupting the composition, but not the with-LoRA face). This
is exactly the LoRA-wins case described in the Lorabench decision
framework โ the LoRA sharpens persona fidelity on top of an
already-competent base.
Recipe provenance (re-create-ability)
The training TOML is checked into the source repository under
g3-freya-lindgren-lora-training-set/. Key values:
[model]
pretrained_model_name_or_path = "RealVisXL_V4.0.safetensors"
[dataset]
train_data_dir = "/data/g3-freya-lindgren-lora-training-set/img"
caption_extension = ".txt"
keep_tokens = 1
shuffle_caption = true
[network]
module = "networks.lora"
network_dim = 32
network_alpha = 16
[optimizer]
optimizer = "AdamW8bit"
learning_rate = 1.0e-4
unet_lr = 1.0e-4
text_encoder_lr = 5.0e-5
lr_scheduler = "cosine_with_restarts"
lr_scheduler_num_cycles = 3
lr_warmup_steps = 100
[training]
max_train_epochs = 12
train_batch_size = 1
gradient_accumulation_steps = 4
mixed_precision = "bf16"
caption_dropout_rate = 0.05
seed = 42
Re-running with these exact values reproduces a LoRA within ~2% of
the shipped file's loss curve. The dataset SHA is recorded in the
consumer-validation manifest.json for reproducibility.
See also
- Lorabench framework: https://github.com/JhendersonPHD/lorabench
- Consumer-validation evidence: in the
consumer-validation/directory of the v6-quality-framework project (8 paired PNG renders, manifest.json, vision QA report) - V-6 portfolio (paste-ready snippet): see
PUBLISHING.mdin the v6-quality-framework project root โ five bullet "models I trained" block with live URLs
Citation
@misc{freya-lindgren-lora,
author = {Henderson, J.},
title = {Freya Lindgren โ SDXL Character LoRA},
year = {2026},
publisher = {Hugging Face},
howpublished = {\\url{https://huggingface.co/Jhenderson112/lorabench-freya-lindgren}},
note = {Trained on RealVisXL\\_V4.0 with kohya\\_ss, validated via lorabench.}
}

