The problem
Furniture and lighting brands shoot every product in a studio, then shoot it again for every colourway, season and campaign. General-purpose image models know what a chair is, but they do not know this chair — its proportions, the upholstery, the exact oak tone — and prompt engineering alone never gets closer than “roughly right”.
We wanted a repeatable way to teach a diffusion model a specific product line from a few hundred photos, and to make training something a content team can run and judge without reading a loss curve.
What we built
Adapter Studio wraps a Low-Rank Adaptation (LoRA) fine-tuning pipeline for SDXL in a workbench that treats every training run as a first-class object: configuration, metrics, previews and the exported adapter live together.
- A dataset stage with automatic captioning and aspect-ratio bucketing, so 300 mixed-format product shots become a clean 1024-pixel training set without manual cropping.
- Rank-16 LoRA adapters on the attention projections only, trained in bf16 with an 8-bit AdamW optimiser and a cosine schedule. The base model stays frozen, and each adapter is a 50 MB file rather than a 6 GB checkpoint.
- Prior-preservation regularisation with generated class images, so the model learns “this chair” without forgetting “chairs”.
- Checkpoint previews every 400 steps, rendered from fixed prompts and seeds and scored with CLIP similarity against held-out product photos, so the best checkpoint is picked by a number rather than a hunch.
Results
On a 312-image furniture set the fidelity score rose from 0.61 for the base model to 0.88 at the best checkpoint, and the full run finishes in under two hours on a single GPU. Adapters are swapped at inference time, so one base model serves every product line, and the content team produces on-brand campaign imagery from a text prompt while the studio stays reserved for the hero shots.
The same workbench has since been used for a lighting collection and a textile range; the pipeline is model-agnostic, and the next base model is a configuration change.