LoRA « vctrstyle »
Apprendre une direction visuelle à un modèle, et le prouver

- gain de style, IC 95 % [+0,053 ; +0,095]
- +0,074
- la v1, mesurée : le point de départ de la v2
- +0,003
- images gardées par le contrôle qualité automatique
- 45/48
- d’entraînement, 1 500 pas sur M1 Pro
- 88 min
- Le problème
- Apprendre une direction visuelle précise à Stable Diffusion, en local, et prouver la différence au lieu de l’affirmer.
- Pour qui
- La direction VECTEUR, projet personnel : roche basaltique sombre, lumière rasante froide, palette désaturée.
- Le résultat
- Un LoRA de rang 16 entraîné en 2 h 53 sur M1 Pro, trois points d’étape exportés et un harnais de 32 images base contre LoRA.
Contexte
La direction visée : roche basaltique sombre, lumière rasante froide, palette désaturée, cadre de cinéma, déclencheur « vctrstyle ». La mesure pilote le travail : sur la v1 (31 images, 300 pas), le gain de style restait dans le bruit (+0,003) ; la v2 reprend données, entraînement et évaluation, et atteint +0,074.
Ce que j’ai construit
- Jeu de données planifié : 24 sujets × 2 compositions générés en local par Qwen-Image 2.1 via l’API ComfyUI, 8 références de style tenues à l’écart, manifeste avec hachages.
- Contrôle qualité automatique : netteté, exposition, part sombre, doublons par hachage perceptuel ; 45 images gardées, 3 rejetées avec leur raison.
- Entraînement LoRA rang 32 : min-SNR, décalage de bruit, banc de précision avant le run, garde-fou de durée, reprise exacte, export compatible ComfyUI.
- Évaluation appariée : 12 sujets dont 6 hors domaine × 2 graines × 7 variantes, gain de style et adhérence au texte avec IC 95 % par bootstrap, diversité, indice de copie.
Architecture 7 briques
- 01 · EntréePrompts VECTEUR8 plans dérivés du brief de direction visuelle
- 02 · ModèleDatasetSD 1.5 via l’API ComfyUI, 8 plans × 5 graines
- 03 · HumainCuration31 images retenues à l’œil, 9 écartées et tracées
- 04 · DonnéesCacheLatents VAE et embeddings CLIP pré-calculés
- 05 · ModèleEntraînementLoRA rang 16, fp32 sur MPS, 300 pas
- 06 · OutilÉvaluation4 prompts hors dataset × 2 graines × 4 variantes
- 07 · SortieExport kohyaPoints d’étape 75, 150 et 300, compatibles ComfyUI
Fabrication 4 étapes
- Générer48 images Qwen-Image, 8 références à part.
- FiltrerQC automatique : 45 gardées.
- Entraîner1 500 pas, 88 min, fp32 sur MPS.
- Prouver168 images, comparaisons appariées.
Décisions le choix, la raison, l’alternative écartée
- D1Entraîner en fp32 sur le GPU Apple (MPS).
L’essai en bf16 était deux fois plus lent sur cette machine (69 s par pas contre environ 30) : mesuré, puis rejeté.
ÉcartéL’autocast bf16.
- D2Rang 16, alpha 16, sur toutes les projections d’attention du UNet.
Un compromis entre taille de l’adaptateur et capacité, adapté à 31 images.
- D3Exporter au format kohya natif.
Chargé directement par le LoraLoader de ComfyUI, sans convertisseur tiers ; le chargement est testé par le harnais.
ÉcartéUn convertisseur tiers.
- D4Évaluer sur des prompts hors dataset, graines identiques, avec scores et contrôle à l’œil.
Le score CLIP seul ne départage pas les points d’étape (+0,0015 à 150 pas) : les planches tranchent à l’œil.
ÉcartéChoisir le point d’étape au seul score.
Résultats
Évaluation sur 24 paires (même sujet, même graine) — écart au modèle de base
| Variante | Gain de style [IC 95 %] | Δ adhérence au texte | Diversité |
|---|---|---|---|
| Base | 0 | 0 | 0,43 |
| Style écrit dans le prompt | +0,043 [+0,024 ; +0,063] | +0,004 | 0,37 |
| LoRA v1 (pas 150) | +0,003 [−0,010 ; +0,015] | +0,005 | 0,42 |
| LoRA v2, pas 500 | +0,040 [+0,024 ; +0,056] | +0,011 | 0,40 |
| LoRA v2, pas 1 000 | +0,062 [+0,042 ; +0,085] | +0,004 | 0,38 |
| LoRA v2, pas 1 500 | +0,074 [+0,053 ; +0,095] | +0,007 | 0,36 |
Score CLIP ViT-B/32 face aux 8 références tenues à l’écart. Le style écrit dans le prompt gagne aussi en score, mais les planches montrent qu’il perd le sujet (hibou minuscule, violoncelle abstrait) ; le LoRA garde le sujet.
Livrables 4
- Trois exports LoRA vérifiés (75, 150 et 300 pas, 128 modules chacun).
- Dataset curé : 31 images retenues et liste datée des écartées.
- Planches comparatives base contre LoRA pour 4 prompts.
- Mesures par variante : CLIP, distance au dataset, luminance, part sombre.
Environnement
Matériel et conditions de mesure
- Entraîné sur MacBook Pro M1 Pro, fp32 sur MPS : 1 500 pas en 88 min.
- Jeu de données généré en local par Qwen-Image (licence Qwen Research, non commerciale).
Reproduire commandes du README
Code privé : accès en lecture sous accord de confidentialité, ou démo en direct de 30 minutes. Demander l’accès →
PY=~/Documents/ComfyUI/.venv/bin/python
$PY train/train_lora.py --dossier donnees --out train/sortie --steps 300
$PY eval/comparer.py # via ComfyUI (serveur sur 8188)
$PY eval/metriques.py # CLIP + traits + résumé- Graine 20261018.
- Le choix final du point d’étape se fait à l’œil sur les planches.
Galerie 4
Ce que ce projet change pour vous
Le même savoir-faire, sur votre sujet.
Le style de votre marque, appris
Un LoRA entraîné sur votre direction visuelle : vos images gardent la même matière et la même lumière d’une campagne à l’autre.
La preuve avant/après
Même prompt, mêmes graines, base contre adaptateur : vous jugez la différence sur planches, pas sur une promesse.
Un entraînement local
Sur votre machine, sans API ni cloud : vos images de référence ne quittent pas vos locaux.