Mglista, misterna scena fantastycznego lasu z surrealistycznymi złotymi muchomorami i wysokimi lazurowymi grzybami, z dwoma filipińskimi postaciami idącymi ścieżką w szczegółowym lesie.

Zalecane podpowiedzi

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

Zalecane parametry

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)

Zalecane parametry wysokiej rozdzielczości

upscaler

Latent (nearest-exact), 4x-UltraSharp

upscale

1.25 - 1.5

steps

30

denoising strength

0.4 - 0.7

Wskazówki

Używaj 3 do 5 tokenów przed tokenem TI (np. 'portret kobiety, xlmrblng15-1300'), aby uzyskać lepsze rezultaty.

Najlepsze wyniki są z promptami liczącymi od 30 do 45 tokenów bez negatywnych promptów.

Unikaj słów wyzwalających TI, które pokrywają się ze znanymi koncepcjami SDXL (jak 'marbling'), bo powoduje to nieoczekiwane efekty.

Korzystaj z systemu wildcard Dynamic Prompts dla zróżnicowanych i kreatywnych promptów.

Trening z kohya_ss wymaga ostrożnego wyboru słowa inicjalnego; używaj 'pattern' dla najlepszego balansu, by uniknąć powtarzających się wzorów.

TI składa się z 8 wektorów dla silniejszego efektu, co jest zbyt mocne dla krótkich/prostych promptów.

Używaj samplerów jak DPM++ 2M Karras z CFG 7 i 40 krokami do generacji.

Rozdzielczości bliskie 1MP (1024x1024, 960x1344, 1344x960) dają dobrą jakość; 1344x960 dobrze skaluje się do wydruków 7"x5".

Najważniejsze informacje o wersji

To jest powtórka z użyciem aktualnego kohya_ss (v22.6.0 na moment pisania), ponieważ ustawienia z poprzedniej wersji nie dają takiego samego wyniku. Dane treningowe i notatki są dołączone dla zainteresowanych. Trenowanie odbywało się z kumulacją gradientu = 4, więc 500 kroków jest podobne do 2000 kroków bez kumulacji.

31 stycznia 2024

v2.0 nie jest lepszą wersją MarblingTIXL. Po prostu inną. v1.0 nadal działa dobrze.

Zmiany w kohya sprawiły, że sposób, w jaki stworzyłem wersję v1 tego TI, już nie działa, albo przynajmniej nie generuje niczego przydatnego.

Dzięki @raken za poinformowanie mnie o tym.

Wciąż uważam, że embeddingi SDXL mają duży potencjał, więc zrobiłem świeżą instalację kohya_ss (v22.6.0 na moment pisania) i przechodziłem przez różne parametry/ustawienia, aż znalazłem kombinację dającą bliskiego krewnego oryginalnego MarblingTIXL.

Dla zainteresowanych TI SDXL (a wiem, że jest was przynajmniej dwóch!), dołączyłem dane treningowe i plik konfiguracyjny kohya_ss JSON. Możliwe, że są też notatki, jeśli wpadnie mi coś użytecznego do głowy.

Z plusów, to TI trenowało się szybciej... z minusów, nie jest tak spójne jak starsze TI. Albo może jeszcze za mało nad nim pracowałem. Kto to wie na tym ostrzu nowości?!

Jeśli macie pytania, obserwacje, opinie lub mądrości do podzielenia się, proszę, zostawcie komentarz pod spodem. Na ten moment nie ma wielu twardych informacji o tworzeniu stylów TI... Przeczytałem/obejrzałem wiele sprzecznych opinii. Da się to zrobić, i myślę, że jest miejsce na lepsze TI niż te, które do tej pory zrobiłem.

Konkurencja dla LoRAs? Nie bardzo - LoRAs dodają coś do checkpointu, podczas gdy TI wykorzystują to, co już jest w checkpoint. Jeśli dobrze rozumiem, TI pozwalają dotrzeć do obszarów przestrzeni możliwości checkpointu, które trudno osiągnąć konsekwentnie. Więc TI i LoRAs to różne rzeczy do różnych celów... które można używać razem. Więc wszyscy są szczęśliwi :-)

Są techniczne artykuły o tym, czym jest TI, jak go trenować, o enkoderach tekstu itd., ale zazwyczaj tracę wątek gdzieś w połowie pierwszej strony :-(

O ile wiem, kohya_ss trenuje tylko pierwszy TE (enkoder tekstu) w SDXL. To ten z SD v1.x, który powinien działać w auto1111 SDXL generacji, ale nie działa. (Niektórzy zgłaszali, że TI SD v1.x działają w Comfy, ale doświadczenia są zmienne.) Drugi TE, z SD v2.x, chyba nie jest trenowany w kohya_ss. Albo może to duplikat TE1?

Próbowałem OneTrainer (ma opcje dla obu TE), ale nie udało mi się nic sensownego na kilku próbach, więc na razie pozostaję przy kohya_ss.

Dla odniesienia: używam RTX-3060 z 12 GB RAM na przyzwoitym PC. Aktualne uruchomienia kohya_ss właśnie mieszczą się w 12 GB (+ kolejne 6 GB podczas generowania próbek), więc to bardziej zasobochłonne niż LoRA. Myślałem, że TI będą potrzebować mniej (albo tyle samo) zasobów, więc to mnie trochę zaskoczyło. Może nie ma potrzeby optymalizacji dla TI? Jeszcze :-)

TI trenowano na:

sd_xl_base_1.0_0.9vae.safetensors

Zdjęcia pokazowe generowano używając:

crystalClearXL_ccxl.safetensors [0b76532e03]

czyli TI trenowany na zwykłej bazie powinien działać z innymi checkpointami.

Obrazy generowane są w a1111 v1.7.0, użyłem Hires.fix ale żadnych innych korektorów.

Dodatkowa galeria pokazuje obrazy par bez i z TI, aby zobaczyć wpływ na wybrane promptsy. Etykieta „xlmrblnh36-500” oznacza bez, „xlmrblng36-500” z TI. Tak to zrobiłem, by promptsy były jak najbardziej zbliżone.

Jeśli jesteście zainteresowani, zip ze danymi treningowymi zawiera wszystkie zapisane TI w odstępach 25 kroków (*4 kumulacja gradientu = 100 zwykłych kroków).

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

UWAGA: W aktualnej wersji webui automatic1111 (v1.6.0) jest problem z SDXL. Jeśli użyjecie refiner checkpoint, webui zapomina wszystkie embeddingi, aż nie załadujecie innego checkpoint i znów oryginalnego (lub nie zrestartujecie webui). Zgłosiłem to do deweloperów:

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

i zostało to potwierdzone jako błąd.

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

***PODSUMOWANIE***

Ten embedding nadaje surrealistyczny/fantastyczny wygląd inspirowany wzorami z vintage marmurkowego papieru. Efekt zmienia się od słabego do ekstremalnego zależnie od „bliskości” promptu do tego stylu.

Trening TI nie zawierał żadnych prac artystów ani tagów.

Skopiuj dane generowania z jednego z obrazów pokazowych i dostosuj według potrzeby, albo zacznij od promptu dającego dobry efekt z dowolnym seedem:

award-winning Art Nouveau xlmrblng15-1300, analogowe realistyczne zdjęcie kolorowe japońskiej syrenki siedzącej na skale pośród rozbijających się fal, bardzo szczegółowe

checkpoint: crystalClearXL_ccxl.safetensors [0b76532e03]

sampler: DPM++ 2M Karras

kroki: 40

CFG: 7

wysokość=szerokość=1024

Potem zmieniaj terminy według uznania. Staraj się mieć 3 do 5 słów przed „xlmrblng15-1300”.

Najprostsze warte próby promptsy to np.:

cybernetic nun, xlmrblng15-1300

fantasy winter landscape, xlmrblng15-1300

ale ogólnie potrzeba więcej słów, by uzyskać interesujące efekty.

Po wielu eksperymentach najlepsze rezultaty dostawałem z promptami liczącymi od 30 do 45 tokenów, bez negatywnych promptów.

W galerii poniżej znajdziecie pary obrazów przed i po zastosowaniu TI.

xlmrblnh15 = bez tego TI

xlmrblng15 = z tym TI

Jak zobaczycie, TI robi więcej niż tylko dodanie wzorów marmurkowego papieru :-)

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

***SZCZEGÓŁY I INFO O TRENINGU***

To TI (tekstowa inwersja), embedding, który modyfikuje generacje obrazów dodając wzory marmurkowego papieru lub przesuwając je w kierunku tych wzorów w zależności od promptu. Ze względu na działanie systemu SDXL, efekt przy dłuższych/skomplikowanych promptach bywa strukturalny, a nie prosty.

To następca mojego MarblingTI dla SD v1.5:

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

Z powodu zmian w SDXL miałem dużo nieudanych prób (ponad 20), ale myślę, że ten nowy TI jest bardziej przydatny niż stary, przynajmniej do surrealistycznych/ilustracyjnych rzeczy, które lubię tworzyć.

Przejście z automatic1111 na kohya_ss do treningu nie było łatwe. O tym więcej poniżej.

TI ma 8 wektorów (czyli bierze 8 tokenów z promptu). Jest zbyt mocny dla krótkich/prostych promptów. Tak było zamierzone – zrobiłem kilka subtelniejszych wersji, ale nie przydały się do dłuższych/skomplikowanych promptów z SDXL. Z tego co wiem o Stable Diffusion, 4 wektory powinny wystarczyć, ale nie uzyskiwałem spójnych efektów z 4 wektorami.

Materiał wyjściowy to skany/zdjęcia vintage marmurkowego papieru, które posłużyły do stworzenia kilku wstępnych TI, następnie użytych do stworzenia hybrydowych obrazów, które stały się danymi treningowymi dla tego TI.

Do promptowania trzeba mieć 3 do 5 tokenów na początku promptu.

czyli

portret kobiety, xlmrblng15-1300

a nie

xlmrblng15-1300, portret kobiety

Krótki/prosty prompt da zazwyczaj wzór marmurkowego papieru. Fajny, ale nudny. Ponadto dla krótszych promptów TI może dodawać lekki zielonkawy odcień na obrazach. Nie wiem dlaczego; obrazy treningowe nie mają takiego filtru.

Waga/nacisk: od 0.81 do 1.33 zależnie od promptu. Wolę przesuwać token TI w prompt niż używać wagi.

Wszystkie obrazy generowane dla tego TI były robione w automatic1111 webui v1.6.0. Jedyną instalowaną przez mnie rozszerzoną funkcją jest Dynamic Prompts (z zakładki Extensions). Nie używałem Hires.fix, inpainting/otoczenia, innych TI, LoRAs itp., tak aby można było ocenić TI ze zdjęć pokazowych.

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

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

Zwykle używam modelu CrystalClearXL:

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

albo SDXL FaeTastic

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

checkpointy do generacji SDXL, ale TI działa z każdym wypróbowanym checkpointem SDXL.

Z powodu działania promptów, jeśli chcesz zobaczyć efekty z tym TI i bez, zmień tylko jedną literę.

np.

Z: cybernetic nun, xlmrblng15-1300

BEZ: cybernetic nun, xlmrblnh15-1300

Możesz zmienić wyzwalacz, zmieniając nazwę pliku safetensors, który pobrałeś. PROBLEM: Jeśli wyzwalacz będzie słowem znanym SDXL, jak 'marbling', dostaniesz nieoczekiwane efekty. Nawet łączenie słów, np. newmarbling, spowoduje, że SDXL rozpozna 'new' i 'marbling' i użyje ich zamiast TI.

Nazwa, której używam, mówi mi, że to TI SDXL, to marmurkowanie (mrblng), i jest to 1300 krok iteracji wersji 15.

Często zaczynam prompt od nurtu artystycznego, np. Art Nouveau, albo wprost, albo z wagą od 0.3 do 0.5. Lista ruchów artystycznych:

https://en.wikipedia.org/wiki/List_of_art_movements

https://en.wikipedia.org/wiki/Periods_in_Western_art_history

Jeśli nie podoba się purystom promptów, spróbuj 'award-winning illustrative'. Dla mnie dodanie ulubionego ruchu artystycznego ułatwia ustawianie reszty promptu, by uzyskać podobny efekt. Lista moich ulubionych ruchów jest w pliku txt i wrzucona do folderu wildcards Dynamic Prompts, więc używam po prostu __Art_Movements__ w promptach.

Generalnie nie używam nazw artystów, chyba że czasem pośmiertnych, by uzyskać konkretne efekty, np. René Lalique

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

Zacząłem używać kohya_ss (v21.8.9) do treningu TI, ponieważ wygląda na to, że automatic1111 nie doda wsparcia SDXL treningu do webui.

https://github.com/bmaltais/kohya_ss

kohya_ss ma bardzo dużo ustawień i nadal nie wiem, co połowa z nich robi :-( Jednak podzielę się info, które może pomóc trenować SDXL TI style z kohya_ss. Nie próbowałem trenować obiektu TI SDXL, i nie potrafię uruchomić trenowania LoRA w kohya_ss (albo nie startuje, albo pada w trakcie).

Opiszę ustawienia, które zadziałały na moim PC, mam nadzieję, że będą przydatne dla podobnych.

Mój PC to:

Nvidia 3060/12GB (nie Ti), MSI X570 mb, Ryzen 7-2700 (8c/16t), 64GB RAM, wiele SSD, Win10pro.

Utworzyłem strukturę folderów:

XLmrblng15

\--img

\--\--50_XLmrblng15 style

\--log

\--model

Zdjęcia treningowe:

Utworzyłem 45 obrazów 1024x1024 i umieściłem w folderze “50_XLmrblng15 style”. Potem do każdego obrazu stworzyłem plik .caption. Przykład:

cliff with waterfall.png

cliff with waterfall.caption

Pliki caption to zwykłe pliki tekstowe, więc użyłem prostego edytora tekstu. Zawartość każdej caption ma schemat:

xlmrblng15, cliff with waterfall

To nazwa tworzony TI, przecinek, spacja, opis nazwy pliku.

Nie używam narzędzi do automatycznego opisania.

Jeśli jakiś parametr nie jest wymieniony, oznacza to, że zostawiłem go domyślnie.

W zakładce głównej "Textual Inversion" w kohya_ss:

Zakładka Source model

Model Quick Pick = custom

Save trained model as = safetensors

Pretrained model name or path = G:/stable-diffusion-webui-master/webui/models/Stable-diffusion/SDXL/sd_xl_base_1.0_0.9vae.safetensors

SDXL model = zaznaczone

Zakładka Folders

Image folder = G:/KOHYA/TRAIN/XLmrblng15/img

Output folder = G:/KOHYA/TRAIN/XLmrblng15/model

Logging folder = G:/KOHYA/TRAIN/XLmrblng15/log

Model output name = xlmrblng15

Zakładka Parameters (basic)

Token string = xlmrblng

Init word = pattern

Vectors = 8

Template = caption

Mixed precision = bf16

Save precision = bf16

Number of CPU threads per core = 1

Cache latents = zaznaczone

Cache latents to disk = zaznaczone

LR Scheduler = constant

Optimizer = AdamW8bit

Learning rate = 0.001

Max resolution = 1024,1024

No half VAE = zaznaczone

Zakładka Parameters (advanced)

VAE = G:/KOHYA/sdxl_vae.safetensors

Save every N steps = 100

Gradient checkpointing = zaznaczone

Memory efficient attention = zaznaczone

Max num workers for DataLoader = 4

Zakładka Parameters (samples)

Sample every n steps = 100

Sample prompts =

analogowe realistyczne zdjęcie pięknego dzbanka na stole z szklankami, bardzo szczegółowe, skomplikowane, xlmrblng15 --w 1024 --h 1024

xlmrblng15, analogowe realistyczne zdjęcie wiktoriańskiej angielskiej damy w kostiumie kąpielowym, bardzo szczegółowe, skomplikowane, --w 1024 --h 1024

Z powyższymi ustawieniami, czas treningu wynosił około 6 sekund na iterację. Zmienny, bo używam PC do innych (prostszych) rzeczy podczas treningu. Model xlmrblng15-1300 powstał około 2 godziny 10 minut od startu.

Podczas większości treningu zużycie RAM GPU było ledwo w 12GB mojej 3060. Jednak przy generowaniu próbek i zapisywaniu TI co 100 kroków zużywało to dodatkowe 7GB (w sumie 19GB). Te 7GB pochodziło z "Shared GPU memory", czyli RAM systemu. Po generacji próbek zużycie spadało do 12 GB GPU RAM.

Spowolnienie przy użyciu "Shared GPU Memory" było około 10-krotne. Cholera :-(

Próbki generowane przez kohya są słabe w porównaniu do bazowego modelu SDXL w automatic1111 webui. Zostawiłem je jednak, by móc ocenić, czy trening idzie jako tako.

Oczywiście kluczowe jest dobre dane treningowe. Próbowałem wielu różnych kombinacji generowanych i prawdziwych obrazów, aż znalazłem zestaw dający TI z tej strony.

Dla 45 obrazów, przy wielkości batcha 1 (domyślna), specjalna nazwa folderu “50_XLmrblng15 style” nakazuje kohya przetworzyć obrazy 45 razy. 45 * 50 = 2250 kroków łącznie. Testując TI zapisane przy 100, 200, 300 krokach i tak dalej, uznałem, że najlepszy jest ten z 1300 krokiem.

W zakładce Parameters-Basic jest pole "Init word". Okazało się, że trening jest bardzo wrażliwy na wybór tego słowa. W tym przypadku użyłem „pattern”, które jest 1-tokenowym słowem dla SDXL. Teoretycznie powinienem użyć 8-tokenowej frazy (kohya daje ostrzeżenie, jeśli ilość wektorów różni się od ilości tokenów). Dla niektórych prób używałem dłuższych fraz i powstały ciekawe TI, ale nie to, czego szukałem.

Użycie „pattern” ma wadę: w zależności od promptu możliwe są powtarzające się wzory - jak tapeta czy papier do pakowania prezentów.

Użycie „marblng” lub „paper marbling” nie działało: w porównaniu do SDv1.x, SDXL "zna" dużo więcej na temat marmurkowania. Spróbuj w promptach! Poproś o marmurac/marmurkowanie/wzory marmurkowe, a SDXL radzi sobie o wiele lepiej niż SDv1.x. Za każdym razem, gdy init word było marbling lub pokrewne, otrzymywałem TI wykorzystujące wbudowane marmurkowanie SDXL zamiast trening mojego zestawu. :-(

Sprawdziłem historię marmurkowego papieru i próbowałem terminów jak "ebru" - turecka wersja marmurkowego papieru. Też kiepsko. Na końcu bardzo szeroki termin „pattern” dał mi najwięcej, czego chciałem.

Kohya_ss ma opcję szablonu „style” na zakładce Parameters-Basic. Uzyskałem kilka niezłych wyników używając „style” dla nieopublikowanych TI SDXL, ale dla tego marmurkowego papieru wyniki nie były dobre.

Tekstowa inwersja a LoRA

Skupiam się na TI, bo (a) nie mogę doprowadzić do końca treningu LoRA, oraz (b) chcę wykorzystać zawartość w SDXL, zamiast nakładać na nią więcej danych. Nie jestem przeciwny LoRAs - wręcz przeciwnie! Bawię się świetnie z LoRA od konyconi i innych. Wyniki są super :-)

Ale teraz mam większe upodobanie do TI. Myślę o TI jako sposobie na dopasowanie promptu do obszarów SDXL, których zwykłe słowa nie osiągną, a LoRAs dodają coś nowego do SDXL, co łączysz z zawartością SDXL przez prompt.

To bardzo uproszczone, ale nie chcę wdawać się w dyskusję o pełnej przestrzeni próbek SDXL kontra przestrzeni prawdopodobieństwa i superzbiorze. To moje hobby, nie praca :-)

Na koniec wspomnę, że intensywnie korzystam z systemu wildcards Dynamic Prompts. Typowe promptsy z tym xlmrblng15-1300 TI wyglądają tak:

(__Art_Movements__:0.5) xlmrblng15-1300, dojrzały __Nationalities__ (__Character_MF__) jadący na __BW_Animals__ w białawo zabarwionym __Landscapes__, filigranowa intarsja __Metal_Color__

Instancje promptów (czyli, po przetworzeniu przez Dynamic Prompts) mają zwykle 30–45 tokenów.

Kiedy przeciągam wygenerowany obraz do zakładki "PNG Info" w automatic1111 webui, efekt dynamicznego promptu ma typowo 34 tokeny:

(Surrealism:0.5) xlmrblng15-1300, dojrzały szwedzki (męski wampir) jadący na dalmatyńczyku na białawych błotnistych płaszczyznach z szkarłatnymi żurawiami, czarna intarsja filigranowa

Dlaczego wstawiać narodowości, kiedy SDXL zwraca na to mało uwagi w dłuższych promptach? Bo SDXL ma uprzedzenia i dodaje drobne szczegóły związane z narodowościami. Mogą to być rude włosy przy wzmiance o Szkotach, piramidy przy Egipcjanach czy Mt Fuji przy Japończykach. Podobnie z innymi rzeczami; łączenie kontekstowe jest wyraźniejsze w SDXL niż SDv1.x. Trudno to kontrolować :-(

Rozdzielczości, których używam dla SDXL, to zwykle 1024x1024, 960x1344 i 1344x960. Sugerowane rozdzielczości często opierają się o bazę 1MP (megapiksel) 1024x1024 lub inne bliskie 1MP. Jeśli chcę szerokość 1344, powinienem użyć wysokości 768. Próbowałem tego i jakość 1344x768 była dużo gorsza niż 1024x1024 i 1344x960. Dodatkowo 1344x960 dokładnie odpowiada mojemu papierowi fotograficznemu 7" na 5". Więc jest to plus :-)

Poprzedni
Tylko czarny. SDXL - v1.0
Następny
BaZaaR - v0.20_UD

Szczegóły modelu

Typ modelu

TextualInversion

Model bazowy

SDXL 1.0

Wersja modelu

v2.0

Hash modelu

25613074d7

Wytrenowane słowa

xlmrblng36-500

Twórca

Dyskusja

Proszę się log in, aby dodać komentarz.

Obrazy autorstwa MarblingTIXL - v2.0

Obrazy z fantasy

Obrazy z styl

Obrazy z surrealistyczny