Une scène forestière fantastique brumeuse et complexe avec des coulemelles dorées surréalistes et des champignons azur imposants, avec deux personnages philippins marchant le long d’un sentier dans un bois détaillé.

Prompts recommandés

award-winning Art Nouveau xlmrblng15-1300, analog realistic colour photo of a Japanese mermaid sitting on a rock in the midst of crashing waves, very detailed

cybernetic nun, xlmrblng15-1300

fantasy winter landscape, xlmrblng15-1300

(__Art_Movements__:0.5) xlmrblng15-1300, mature __Nationalities__ (__Character_MF__) riding a __BW_Animals__ in a white-tinted __Landscapes__, __Metal_Color__ filigree inlay

very detailed, intricate

Paramètres recommandés

samplers

DPM++ 2M Karras

steps

40 - 50

cfg

7

resolution

1024x1024, 960x1344, 1344x960, 1024x1024, 640x960, 960x1344

vae

sdxl_vae - 1.0, sdxl_vae.safetensors (235745af8d)

other models

crystalClearXL_ccxl (0b76532e03)

Paramètres haute résolution recommandés

upscaler

Latent (nearest-exact), 4x-UltraSharp

upscale

1.25 - 1.5

steps

30

denoising strength

0.4 - 0.7

Conseils

Utilisez 3 à 5 tokens avant le token TI (par exemple, 'portrait of a woman, xlmrblng15-1300') pour de meilleurs résultats.

Les meilleurs résultats viennent des prompts entre 30 et 45 tokens sans prompts négatifs.

Évitez d’utiliser des mots déclencheurs TI qui chevauchent des concepts connus de SDXL (comme 'marbling'), car cela provoque des résultats inattendus.

Utilisez le système de jokers de Dynamic Prompts pour des prompts variés et créatifs.

L’entraînement avec kohya_ss nécessite une sélection soigneuse du mot init ; utilisez 'pattern' pour un bon équilibre afin d’éviter les motifs répétitifs.

Le TI est composé de 8 vecteurs pour un effet plus important, ce qui est trop puissant pour les prompts courts/simples.

Utilisez des échantillonneurs comme DPM++ 2M Karras avec un CFG de 7 et 40 étapes pour la génération.

Des résolutions proches de 1MP (1024x1024, 960x1344, 1344x960) donnent une bonne qualité ; 1344x960 s’adapte bien aux impressions 7"x5".

Points forts de la version

Ceci est une refonte avec le kohya_ss actuel (v22.6.0 au moment de l’écriture) car les réglages utilisés avec l’ancienne version ne produisent pas le même résultat. Les données d’entraînement et les notes sont incluses pour les intéressés. L’entraînement utilisait une accumulation de gradient = 4, donc 500 étapes correspondent à environ 2000 étapes sans accumulation.

31 Jan 2024

La v2.0 n’est pas une meilleure version de MarblingTIXL. Juste différente. La v1.0 fonctionne toujours bien.

Avec les changements dans kohya, il s’avère que la manière dont j’ai réalisé la v1 de ce TI ne fonctionne plus, ou du moins ne produit rien de très utile.

Merci à @raken de m’avoir prévenu à ce sujet.

Je pense toujours que les embeddings SDXL ont un grand potentiel, alors j’ai fait une nouvelle installation de kohya_ss (v22.6.0 au moment de l’écriture) et j’ai testé plusieurs paramètres/réglages jusqu’à trouver une combinaison qui réalise un proche parent de l’original MarblingTIXL.

Si quelqu’un s’intéresse aux TI SDXL (et je sais qu’il y en a au moins 2 !), j’ai inclus mes données d’entraînement et le fichier de config JSON de kohya_ss. Possiblement quelques notes également si je trouve quelque chose d’utile.

Le point positif, c’est que ce TI s’est entraîné plus rapidement... en contrepartie, il est moins cohérent que l'ancien TI. Ou peut-être que je ne l’ai pas assez exploré. Qui peut savoir à la pointe comme ça ?!

Si vous avez des questions, observations, opinions ou savoir à partager, merci de laisser un commentaire ci-dessous. Il n’y a pas beaucoup d’infos précises à propos de la création de styles TI actuellement... J’ai lu/vu plein de points de vue contradictoires. C’est faisable cependant, et je pense qu’il y a un espace pour de meilleurs TI que ce que j’ai réussi jusque-là.

Une concurrence avec les LoRAs ? Non, pas vraiment - Les LoRAs ajoutent quelque chose à un checkpoint alors que les TI exploitent ce qui est déjà dans le checkpoint. Si j’ai bien compris, les TI permettent d’atteindre des zones dans l’espace des possibilités d’un checkpoint difficiles à atteindre de façon constante. Donc TI et LoRA sont des choses différentes pour des usages différents... que vous pouvez utiliser ensemble. Donc tout le monde est content :-)

Il existe des articles techniques (expliquant ce qu’est un TI, comment en entraîner un, des informations sur les encodeurs de texte, etc.), mais généralement je suis dépassé dès la première page :-(

Autant que je sache, kohya_ss entraîne seulement le premier TE (encodeur de texte) dans SDXL. C’est celui de SD v1.x qui devrait fonctionner dans auto1111 SDXL generation mais qui ne le fait pas. (Certaines personnes ont rapporté que les TI SD v1.x fonctionnent dans Comfy, mais l’expérience semble variable.) Autant que je sache, le second TE n’est pas entraîné dans kohya_ss (c’est celui de SD v2.x). Ou peut-être est-ce un duplicata du TE1 ?

J’ai essayé avec OneTrainer (qui a des options pour les deux TE) sans succès sur mes quelques essais, donc je reste avec kohya_ss pour l’instant.

Pour référence, j’utilise une RTX-3060 avec 12GB sur un PC correct. Les sessions kohya_ss actuelles dépassent juste les 12GB (+ 6GB supplémentaires si je génère des échantillons) donc c’est plus lourd en ressources que pour un LoRA. Je pensais que les TI nécessiteraient moins (ou autant) de ressources, donc je suis un peu surpris. Peut-être qu’il n’y a pas de besoin perçu d’optimiser pour les TI ? Pas encore :-)

Ce TI ici a été entraîné sur :

sd_xl_base_1.0_0.9vae.safetensors

Les images de démonstration ont été générées avec :

crystalClearXL_ccxl.safetensors [0b76532e03]

c’est-à-dire qu’un TI entraîné sur la base vanilla devrait fonctionner avec d’autres checkpoints.

Les images sont générées dans a1111 v1.7.0 et j'ai utilisé Hires.fix mais aucun autre ajusteur.

La galerie supplémentaire ci-dessous montre des paires sans/avec pour que vous puissiez voir comment le TI affecte certains prompts sélectionnés. L’étiquette "xlmrblnh36-500" signifie sans, l’étiquette "xlmrblng36-500" signifie avec. J’ai fait comme ça pour garder les deux prompts aussi similaires que possible.

Si cela vous intéresse, le zip des données d’entraînement contient tous les TI sauvegardés à des intervalles de 25 étapes (*4 accumulation de gradient = 100 étapes normales).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

REMARQUE : Il y a un problème avec SDXL dans la version actuelle de l’interface web automatic1111 (v1.6.0). Si vous utilisez un checkpoint refineur, l’interface oublie tous vos embeddings jusqu’à ce que vous chargiez un autre checkpoint puis rechargiez votre checkpoint d’origine (ou redémarriez l’interface). J’ai signalé ce problème aux développeurs :

https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/13117

et cela a été confirmé comme un bug.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

***RÉSUMÉ***

Ce embedding applique une esthétique surréaliste/fantastique inspirée par des motifs de papier marbré vintage. L’effet varie de faible à extrême selon la proximité de votre prompt avec cette esthétique.

L’entraînement de ce TI n’a pas inclus d’œuvres d’artistes ni de tags.

Copiez les données de génération d’une des images de la vitrine et ajustez selon votre goût, ou commencez avec un prompt comme celui-ci qui devrait donner un résultat convenable avec n’importe quelle graine :

award-winning Art Nouveau xlmrblng15-1300, photo couleur analogique réaliste d’une sirène japonaise assise sur un rocher au milieu des vagues déferlantes, très détaillé

checkpoint : crystalClearXL_ccxl.safetensors [0b76532e03]

sampler : DPM++ 2M Karras

étapes : 40

CFG : 7

hauteur=largeur=1024

puis variez les termes comme vous voulez. Essayez de garder entre 3 et 5 mots avant "xlmrblng15-1300".

Les prompts les plus simples à tester sont de ce genre :

cybernetic nun, xlmrblng15-1300

fantasy winter landscape, xlmrblng15-1300

mais généralement, il faudra plus de mots pour obtenir des résultats intéressants.

Après beaucoup d’expérimentation, j’ai constaté que j’obtenais mes meilleurs résultats avec des prompts entre 30 et 45 tokens, sans prompts négatifs.

J’ai fourni quelques paires d’images avant/après dans les galeries supplémentaires ci-dessous.

xlmrblnh15 = sans ce TI

xlmrblng15 = avec ce TI

Comme vous le verrez, ce TI fait plus que simplement ajouter des motifs de papier marbré :-)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

***PLUS DE DÉTAILS & INFOS SUR L’ENTRAÎNEMENT***

Il s’agit d’un embedding TI (inversion textuelle) qui ajuste vos générations d'images en ajoutant des motifs de papier marbré, ou en orientant vers ces motifs selon vos prompts. À cause du fonctionnement du système SDXL, l’effet avec des prompts longs/complexes sera souvent structurel plutôt que simpliste.

C’est le successeur SDXL de mon MarblingTI pour SD v1.5 :

https://civitai.com/models/69768/marblingti

Avec tous les changements dans SDXL, j’ai eu pas mal de faux départs (plus de 20), mais je pense que ce nouveau TI est plus utile que l’ancien... du moins pour le style surréaliste/illustratif que j’aime créer.

Passer d’automatic1111 à kohya_ss pour l’entraînement n’a pas été simple. Plus d’infos ci-dessous.

Le TI est constitué de 8 vecteurs (c’est-à-dire 8 tokens de votre prompt). Il est surpuissant pour les prompts courts/simples. C’est voulu - j’ai fait quelques versions subtiles mais inutiles pour les prompts longs/complexes que j’utilise avec SDXL. D’après ce que je comprends de Stable Diffusion, 4 vecteurs auraient suffi mais je n’ai pas réussi à avoir des résultats cohérents avec 4 vecteurs.

Le matériel source consiste en scans/photos de papier marbré vintage transformés en plusieurs TI précurseurs, utilisés ensuite pour créer des images hybrides qui sont devenues les entrées pour ce TI.

Pour formuler vos prompts, vous devez mettre 3 à 5 tokens devant.

c’est-à-dire :

portrait of a woman, xlmrblng15-1300

plutôt que

xlmrblng15-1300, portrait of a woman

Si vous utilisez un prompt court/simple, vous obtiendrez probablement juste un motif de papier marbré vintage. Correct mais ennuyeux. En outre, pour les prompts plus courts, le TI peut ajouter une légère teinte verte aux images. Je ne sais pas pourquoi ; les images d’entraînement n’ont aucune teinte globale.

Poids/importance : de 0,81 à 1,33 selon le prompt. Je trouve plus cohérent de déplacer le token TI que d’utiliser la pondération.

Toute la génération d’images pour ce TI a été faite dans l’interface web automatic1111 v1.6.0. La seule extension non intégrée utilisée est Dynamic Prompts (installée via l’onglet Extensions). Je n’ai pas utilisé Hires.fix, in/outpainting, detailers, autres TI ou LoRAs, etc., afin que vous puissiez juger d’après la vitrine/galerie si cela vaut la peine d’essayer ce TI.

https://github.com/AUTOMATIC1111/stable-diffusion-webui

https://github.com/adieyal/sd-dynamic-prompts

J’utilise habituellement CrystalClearXL :

https://civitai.com/models/122822?modelVersionId=133832

ou SDXL FaeTastic

https://civitai.com/models/129681?modelVersionId=157988

comme checkpoints pour la génération d’images SDXL, mais ce TI fonctionne avec tous les checkpoints SDXL que j’ai essayés.

À cause du fonctionnement des prompts, si vous voulez voir les effets avec/sans ce TI, changez une seule lettre seulement.

exemple :

AVEC : cybernetic nun, xlmrblng15-1300

SANS : cybernetic nun, xlmrblnh15-1300

Vous pouvez changer le mot déclencheur en renommant le fichier safetensors que vous avez téléchargé. PROBLÈME : si vous changez le déclencheur par un mot que SDXL "connaît" comme marbling, vous obtiendrez des résultats inattendus. Même en collant des mots comme newmarbling, SDXL va extraire "new" et "marbling" et, euh, faire des trucs avec plutôt qu’avec le TI.

Le nom que j’ai utilisé indique que c’est un TI SDXL, que c’est du marbling (mrblng), et que c’est l’itération 1300 de la version 15.

Je commence souvent mes prompts par un mouvement artistique, par exemple Art Nouveau, soit tel quel, soit pondéré entre 0,3 et 0,5. Pages de référence pour les mouvements artistiques :

https://fr.wikipedia.org/wiki/Liste_des_mouvements_artistiques

https://fr.wikipedia.org/wiki/P%C3%A9riodes_de_l%27histoire_de_l%27art_occidental

Si cela ne convient pas aux puristes des prompts, essayez "illustratif primé" à la place. Pour moi, ajouter un mouvement artistique que j’aime me permet de moins bidouiller le reste du prompt pour obtenir un effet similaire. La liste courte de mouvements artistiques que j’aime est listée dans un fichier txt placé dans le dossier wildcards de Dynamic Prompts, pour pouvoir utiliser __Art_Movements__ dans mes prompts.

En règle générale, je n’utilise pas de noms d’artistes sauf, parfois, posthumes pour obtenir un effet particulier. Par exemple René Lalique

https://fr.wikipedia.org/wiki/Ren%C3%A9_Lalique

J’ai commencé à utiliser kohya_ss (v21.8.9) pour l’entraînement TI car il semble qu’automatic1111 n’ajoutera pas d’entraînement SDXL à l’interface web.

https://github.com/bmaltais/kohya_ss

Il y a beaucoup de réglages dans kohya_ss et je ne comprends toujours pas la moitié :-( Cependant, je donne ici des infos qui pourraient aider des personnes voulant entraîner des styles TI SDXL avec kohya_ss. Je n’ai pas essayé d’objet TI SDXL, et je n’arrive pas à faire fonctionner l’entraînement LoRA dans kohya_ss (soit ça ne démarre pas, soit ça plante à mi-chemin).

Je ne peux décrire que les réglages qui ont fonctionné sur mon PC, mais j’espère que c’est pertinent pour des PC similaires. Donc...

Le PC que j’utilise est :

Nvidia 3060/12GB (pas la version Ti), MSI X570 carte mère, Ryzen 7-2700 (8c/16t), 64GB RAM système, plusieurs SSD, Win10pro.

Création d’une structure de dossiers :

XLmrblng15

\--img

\--\--50_XLmrblng15 style

\--log

\--model

Images d’entraînement :

J’ai créé 45 images 1024x1024 et je les ai mises dans le dossier “50_XLmrblng15 style”. Puis j’ai créé un fichier .caption pour chaque image. Exemple :

cliff with waterfall.png

cliff with waterfall.caption

Les fichiers caption sont de simples fichiers texte, donc j’ai utilisé un éditeur simple. Le contenu de chaque fichier .caption suit ce modèle :

xlmrblng15, cliff with waterfall

C’est le nom du TI que je crée, une virgule, un espace, et le nom descriptif du fichier.

Je n’utilise pas d’utilitaires de captioning.

Pour ce qui suit, si un paramètre n’est pas mentionné, c’est qu’il est resté par défaut.

Dans l’onglet principal "Textual Inversion" dans kohya_ss :

Onglet modéle source

Sélection rapide de modèle = custom

Enregistrer modèle entraîné en = safetensors

Nom ou chemin du modèle pré-entrainé = G:/stable-diffusion-webui-master/webui/models/Stable-diffusion/SDXL/sd_xl_base_1.0_0.9vae.safetensors

Modèle SDXL = coché

Onglet dossiers

Dossier images = G:/KOHYA/TRAIN/XLmrblng15/img

Dossier sortie = G:/KOHYA/TRAIN/XLmrblng15/model

Dossier journal = G:/KOHYA/TRAIN/XLmrblng15/log

Nom de sortie modèle = xlmrblng15

Onglet paramètres (de base)

Chaîne token = xlmrblng

Mot init = pattern

Vecteurs = 8

Template = caption

Precision mixte = bf16

Precision d’enregistrement = bf16

Nombre de threads CPU par cœur = 1

Cache latents = coché

Cache latents sur disque = coché

LR Scheduler = constant

Optimiseur = AdamW8bit

Taux d’apprentissage = 0,001

Résolution maxi = 1024,1024

Pas de half VAE = coché

Onglet paramètres (avancés)

VAE = G:/KOHYA/sdxl_vae.safetensors

Sauvegarder chaque N étapes = 100

Point de contrôle de gradient = coché

Mémoire d’attention efficace = coché

Nombre max de workers pour DataLoader = 4

Onglet paramètres (échantillons)

Échantillon tous les n pas = 100

Prompts échantillons =

an analog realistic photograph of a magnificent jug on a table with glass tumblers, very detailed, intricate, xlmrblng15 --w 1024 --h 1024

xlmrblng15, an analog realistic photograph of a magnificent English lady wearing a Victorian bathing dress, very detailed, intricate, --w 1024 --h 1024

Avec tous ces réglages, le temps d’entraînement s’est stabilisé à environ 6s/it. Variable car je continue à utiliser le PC pour d’autres tâches simples pendant que kohya fait son travail. Le xlmrblng15-1300 a été produit environ 2h10 dans l’exécution.

Pour la majeure partie de l’entraînement, l’utilisation RAM GPU était juste sous les 12GB de ma 3060. Cependant, lors de la génération des échantillons et de la sauvegarde du TI tous les 100 pas, 7GB supplémentaires étaient utilisés (soit 19GB au total). Ces 7GB viennent de la "mémoire GPU partagée", c’est-à-dire la RAM système principale. Après la génération des échantillons, l’utilisation mémoire revenait à seulement les 12GB GPU.

Le ralentissement lors de l’utilisation de la "mémoire GPU partagée" était d’environ 10x. Zut zut :-(

Les images d’échantillons produites par kohya sont très mauvaises comparées à l’utilisation du modèle SDXL de base dans l’interface automatic1111. Mais je les ai gardées car au moins je pouvais voir si l’entraînement allait à peu près dans la bonne direction.

Évidemment, votre jeu de données d’entraînement est très important. J’ai essayé beaucoup de combinaisons différentes d’images générées et réelles jusqu’à obtenir un ensemble qui produisait le TI montré sur cette page.

Pour 45 images, avec une taille de lot de 1 (par défaut), le nom spécial de dossier “50_XLmrblng15 style” indique à kohya de traiter les images 45 fois. 45 * 50 = 2250 pas au total. Après avoir testé les TI sauvegardés à 100, 200, 300 pas etc., j’ai décidé que celui à 1300 pas était le meilleur.

Dans l’onglet Paramètres-Basiques il y a un champ “Mot init”. Je me suis rendu compte que l’entraînement était très très sensible à ce que j’y mettais. Dans ce cas précis, j’ai utilisé “pattern” qui est un mot 1-token d’après SDXL. Théoriquement, j’aurais dû utiliser une phrase de 8 tokens (kohya donne un avertissement console si vecteurs != init tokens). Pour certains essais, j’ai utilisé plus de tokens et obtenu des TI très intéressants, mais pas ce que je cherchais.

Utiliser “pattern” a un inconvénient : selon votre prompt à SDXL, vous pouvez avoir beaucoup de répétitions - comme un motif répétitif sur du papier peint ou du papier cadeau.

Utiliser “marblng” ou “paper marbling” n’a pas marché : comparé à SDv1.x, SDXL "connaît" beaucoup plus le marbling. Essayez dans vos prompts ! Demandez marble/marbling/marbled et SDXL fait beaucoup mieux que SDv1.x. Chaque fois que je faisais un TI avec "marbling" ou un terme proche comme mot init, j’obtenais un TI qui utilisait le marbling intégré de SDXL plutôt que l’entraînement de mon jeu de données. :-(

J’ai étudié l’histoire du papier marbré et essayé des termes comme “ebru”, la version turque du papier marbré. Ça n’a pas très bien marché non plus. En fin de compte, le terme très large “pattern” m’a donné la plupart de ce que je voulais.

Kohya_ss propose une option “style” dans l’onglet Paramètres-Basique. J’ai eu quelques résultats corrects en utilisant “style” pour certains de mes TI SDXL non publiés, mais pour ce papier marbré, les résultats n’étaient pas bons.

Inversion textuelle vs LoRA

Je me concentre sur les TI parce que (a) je n’arrive pas à faire un LoRA jusqu’au bout, et (b) je veux exploiter le contenu dans SDXL plutôt que d’empiler plus de données dessus. Je ne suis pas contre les LoRA - loin de là ! Je m’amuse beaucoup avec les LoRA de konyconi et d’autres. Ils donnent des résultats impressionnants :-)

Mais je me sens plus proche des TI pour le moment. Je pense que les TI permettent d’ajuster les prompts vers des zones de SDXL que des mots simples ne peuvent atteindre, alors que les LoRA ajoutent du contenu sur SDXL que vous “mergez” avec celui de SDXL par les prompts.

C’est très simplifié mais je ne veux pas rentrer dans une discussion sur l’espace complet des échantillons SDXL vs son espace de probabilités, et ce qui se passe dans un surensemble. Pour moi c’est un hobby, pas un travail :-)

Dernier point, j’utilise beaucoup le système de jokers de Dynamic Prompts. Mes prompts typiques avec ce TI xlmrblng15-1300 ressemblent à ça :

(__Art_Movements__:0.5) xlmrblng15-1300, mature __Nationalities__ (__Character_MF__) riding a __BW_Animals__ in a white-tinted __Landscapes__, __Metal_Color__ filigree inlay

Les prompts instanciés (c’est-à-dire après que Dynamic Prompts ait fait son travail) comptent généralement entre 30 et 45 tokens.

Quand je glisse une image générée dans l’onglet “PNG Info” d’automatic1111, un prompt typique de ce type a 34 tokens :

(Surrealism:0.5) xlmrblng15-1300, mature Swedish (male vampire) riding a dalmation in a white-tinted mudflats with scarlet cranes, black filigree inlay

Pourquoi mettre des nationalités alors que SDXL y prête peu attention dans les prompts longs ? Parce que SDXL est biaisé et ajoute des petits détails liés aux nationalités. Ça peut être des cheveux roux si écossais est mentionné, des pyramides si égyptien est mentionné, ou le Mt Fuji si japonais est mentionné. Ça fonctionne pour d’autres choses aussi ; le lien/contextualisation est plus fort dans SDXL que dans SDv1.x. Les contrôler est pénible :-(

Les résolutions que j’utilise pour SDXL sont souvent 1024x1024, 960x1344 et 1344x960. Les résolutions suggérées que j’ai vues sur le net conseillent d’utiliser la base 1mp (mégapixel) 1024x1024 bien sûr, et des résolutions proches de 1mp. Donc si je veux 1344 largeur, je devrais utiliser 768 hauteur. J’ai essayé et la qualité perçue pour l’image 1344x768 était bien moindre que pour 1024x1024 et 1344x960. De plus, 1344x960 correspond exactement à mes papiers photo 7" par 5". Voilà :-)

Précédent
Uniquement noir. SDXL - v1.0
Suivant
BaZaaR - v0.20_UD

Détails du modèle

Type de modèle

TextualInversion

Modèle de base

SDXL 1.0

Version du modèle

v2.0

Hash du modèle

25613074d7

Mots entraînés

xlmrblng36-500

Créateur

Discussion

Veuillez vous log in pour laisser un commentaire.

Images par MarblingTIXL - v2.0

Images avec fantaisie

Images avec style

Images avec surréaliste