Character Concept · Flat · Casual · AI Lab
Porcelain Empress — Character Concept
Stack
- Role
- Concept direction, generation, selection & cleanup
- Base model
- Anima
- Tools
- ComfyUI, custom LoRA pipeline (Anima base)
- Year
- 2026
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.
Caption design got the same treatment as the data — engineered, tested and validated; the specifics stay in-house as part of the recipe.
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 avg. 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.