MarblingTIXL - v2.0
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
steps
cfg
resolution
vae
other models
Zalecane parametry wysokiej rozdzielczości
upscaler
upscale
steps
denoising strength
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 :-)
Szczegóły modelu
Typ modelu
Model bazowy
Wersja modelu
Hash modelu
Wytrenowane słowa
Twórca
Dyskusja
Proszę się log in, aby dodać komentarz.






