Avatar Set · Flat · AI Lab
Hanpunk Duo — Avatar Set
Stack
- Role
- Set art direction, paired generation in one pipeline run, consistency QA & retouch
- Base model
- Krea 2 (open-weights)
- Tools
- ComfyUI, self-trained style LoRA + Krea 2, directed generation
- Year
- 2026
Process
Generated as one set
Both characters come from a single pipeline run — one style LoRA, one prompt skeleton, shared palette and design language — so they read as a matched pair out of the box. Selection from a seed batch, then consistency QA and light retouch.
From the AI Lab
Model Card Flat Casual Game Style — LoRA Style LoRA trained end-to-end: 1,167 images reviewed → 58 curated → epoch-swept, production-validated. ▾
Overview
A style LoRA reproducing a flat casual game-art look, trained and operated end-to-end: dataset curation, caption engineering, training, epoch-sweep validation, and pipeline integration. This card documents the full process — the same recipe drives every style model on this site.
Why a LoRA, briefly
A base diffusion model knows a thousand styles vaguely and none of them precisely. A LoRA (Low-Rank Adaptation) freezes the base model entirely and trains only small low-rank matrices injected alongside its attention weights — here rank 32, a few tens of megabytes against a multi-gigabyte base. Because the base stays frozen, the model keeps its anatomy, composition and prompt understanding; the LoRA only has room to learn what the dataset consistently shows that the base doesn’t already know. Curate the dataset so the only consistent signal is the style, and that is what it learns.
Dataset — the funnel
Built with my own dataset tool (see the Datacurator card): 1,167 candidate images reviewed → 521 kept after ML-assisted selection and manual review → 58 finally curated for training. The last cut is the strictest: near-duplicates, off-style outliers, multi-panel sheets and screenshots all get dropped, because with a small dataset every bad image is 2% of the signal.
Captions are plain-prose content descriptions with no trigger word. The reasoning: everything the caption explains (subject, pose, palette) the model attributes to the text; whatever the captions consistently don’t explain — the rendering style itself — is the residual the LoRA absorbs. No trigger word means the style is simply always on, which is what you want from a dedicated style model.
Training
| Base model | Krea 2 (open-weights, turbo) |
| Trainer | musubi-tuner (open-source, CLI) on a single RTX 4090 |
| Network | LoRA dim 32 / alpha 32 |
| Schedule | 1,508 steps · 26 epochs · ~2 h |
| Result | final avr_loss 0.0497 · checkpoint saved every 2 epochs |
The actual loss curve from the run log — the flat-with-noise shape after the early drop is expected for style training on a small dataset; the signal you watch is that it stays flat instead of collapsing (memorization) or climbing (divergence):

Validation — the part most people skip
Loss numbers don’t tell you which checkpoint to ship. Every checkpoint is swept with an out-of-distribution probe: a fixed seed and a fixed prompt for a subject that is not in the training data. In-distribution probes flatter the model — memorization looks like quality. An OOD subject shows what you actually bought: whether the style generalizes, and at which epoch style adoption starts costing anatomy or costume logic.

Fixed seed, no-LoRA baseline through epoch 26. Style locks in around epoch 10 without breaking structure — later epochs push the graphic look harder but start bending anatomy, so epoch 10 ships as the standard operating point and later checkpoints are kept as deliberate stronger dials.
In production
Used in the Aristocrat Knight splash pipeline and the flat-track concept posts. Operating notes discovered in validation: the style expects clear silhouettes and reads best with restrained prompts — over-describing the render fights the LoRA instead of helping it.