241111 - SD 3.5, bardziej interesujący rysunek
Spis Treści #
Irrelevant.

1. Skąd pomysł #
Od ponad 500 dni próbuję generować grzyby. Każdego dnia. Czasem nie wychodzi, ale grzyb to grzyb.
Pokażę Wam teraz, jak może wygląda konstrukcja takiego grzyba (bardziej zaawansowanego niż "wpiszmy prompt, dostaniemy wynik").
2. Inspiracja #
Tym razem nie miałem pomysłu na fajnego grzyba, więc wszedłem na civitai by zobaczyć różnorodność stylów oraz konceptów. Zwróciłem uwagę na bardzo ładny rysunek zrobiony w zupełnie innym modelu (Flux):
- https://civitai.com/images/38831878
- Rysunek przedstawia szkieletową wróżkę w kosmosie
Ok. Podoba mi się jako podstawowa inspiracja. Sprawdźmy, co da się z tym zrobić w kontekście SD 3.5, nawet w tak ograniczonych mocach jak ma mój komputer.
3. Prompt podstawowy #
Nie mam zielonego pojęcia jak można wygenerować prompt, którym można zrobić taki rysunek, więc odwołuję się do chatgpt:

Mam pewien podstawowy pomysł jak to działa. Więc po pewnej modyfikacji prompta zobaczmy wynik:
Prompt:
An ethereal skeleton with glowing pink and purple energy, transparent fairy wings with blue and purple veins, floating in a dark cosmic sky. The figure has a bioluminescent glow, arms outstretched, with particles of light around it. Fantasy art, high contrast, cinematic lighting.
Varied constellations in shape of mushrooms in the sky.
Pipeline (zwykły pipeline do SD 3.5, który opisałem w poprzednim dokumencie):

Output:

Co tu widzimy:
- Styl jest mniej więcej taki, jakiego bym oczekiwał.
- Nie będzie takiego wyniku jak oryginalna inspiracja
- Inny model
- Oryginał ma 3 lory i nieznany prompt, ja mam 0 lor i prompt z ChatGPT (z modyfikacjami)
- Nie będzie takiego wyniku jak oryginalna inspiracja
- Nie ma grzybów mimo
Varied constellations in shape of mushrooms in the sky.:-(
Jest to jednak dobry punkt startowy (nie widać na tym seedzie, ale po przejściu przez kilka seedów wyniki mi się podobały)
Dwa inne przykłady na innych seedach:

Ok. Czas kombinować dalej.
(Gdzieś na tym etapie NAPRAWDĘ skakałem po dużej ilości seedów by się upewnić, że mam ogólnie to co mnie interesuje; chcę ustabilizować ten prompt zanim przejdę dalej!)
4. Tło i, no, grzyby #
Nie mogę zrobić "mushroom of the day" bez faktycznego, grzybiastego grzyba. Więc skopiujmy fragment prompta który odpowiada za styl i stwórzmy prompt generujący nam Wystarczająco Grzybokształtnego Grzyba.
Stanęło na prompcie:
Fantasy art, high contrast, cinematic lighting.
Varied intricate constellations in shape of ethereal mushrooms in the sky, glowing pink and purple energy, transparent, dreamy aurora, particles of light
Pipeline (ten sam pipeline):

Output:

Teraz, tu pojawia się ważne pytanie. Ile czasu i pracy chcę włożyć w tego grzyba. Mogę eksperymentować z tym promptem i zrobić z niego coś bardzo podobnego, eterycznego (i dostanę eterycznego grzyba i eteryczny rysunek) a mogę połączyć te dwa rysunki "tak jak są". Jako, że nie jest to szczególnie istotne, zostawiam as-is. Ale jakbym chciał NAPRAWDĘ się przyłożyć, mogę serio dużo czasu, pracy i energii w to włożyć i dostać świetny wynik. To pytanie o to, czy inwestycja jest warta tego zwrotu.
Więc zostajemy z tym co mamy.
(Tak samo tutaj NAPRAWDĘ skakałem po dużej ilości seedów by się upewnić, że mam ogólnie to co mnie interesuje; chcę ustabilizować ten prompt zanim przejdę dalej!)
5. Integracja! Niech wszystko stanie się grzybem! #
Trzeba połączyć te dwa sposoby tworzenia rysunków. Teraz - mamy kilka sposobów łączenia rysunków; albo przez łączenie szumów, przez łączenie promptów itp. Pisałem o tym w pierwszym artykule.
Zdecydowałem się użyć łączenia typu Combine, czyli łączenie szumów. Dało to najlepszy efekt zgodnie z tym, co chciałem dostać. Acz jeszcze nie to czego szukam:
Pipeline:

Output:

Ma to pewien potencjał, ale nie o to chodzi. Te rysunki po prostu nie mają NIC do siebie podobnego. Nie da się dobrze zrobić rysunku z tak odmiennych idei... co więc da się zrobić?
6. Prawidłowa integracja #
Na czym w sumie polega problem?
- Mój model SD 3.5 nie jest pełnym "large", jest kwantyzowany (czyli ma mniejszą ilość reprezentacji symboli, może się gubić; jak widać, gubi się)
- Mamy dwa różne rysunki które próbujemy połączyć i "nie ma jak"; SD nie umie zrobić z dwóch różnych szumów czegoś spójnego
Wiecie już jak działa SD i szum; pisałem o tym kiedyś. Wiecie, że najważniejsze jest zaseedowanie startowego szumu (było widać przy controlnetach, gdy kazałem mu użyć controlnetu tylko na 30% pierwszego rysunku) - potem można pozwolić SD pracować i zadziała bardzo dobrze.
I to prowadzi do ostatniego kroku - każmy wykorzystać drugi prompt jedynie w pierwszych 10% generacji rysunku. Potem niech pierwszy prompt prawidłowo zintegruje nowo powstały szum:
Pipeline:

Output:

7. Jak poprawić sześć palców? #
Jak się przypatrzycie, nasza szkieletowa wróżka ma 6 palców na prawej ręce.
Mogę to poprawić zmieniając cfg o 0.1 (np. 5.5 -> 5.6) lub dodając 1-2 iteracje (np. 30 -> 32), nie zmieniając seedu. Spójrzcie na rezultat:

Są tu subtelne różnice, ale zauważcie że jeśli nie chcecie dotykać Gimpa to jest nadal sporo co można zrobić. Może 33 iteracje? Może 0.05 cfg w jakąś stronę... to jest kolejne narzędzie do subtelnej modyfikacji sceny jeśli podoba nam się seed.
8. Wniosek #
Nawet, jeśli mam za słaby komputer na lory czy nie mamy silnych controlnetów, SD 3.5 daje ogromną różnorodność możliwości używając podstawowych conditioningów nawet przy kwantyzacji.
Miłego generowania grzybów.
9. Powiązane linki #
- What is LLM quantization?
- Świetne wyjaśnienie czym jest kwantyzacja (quantization); w kontekście LLMów, ale pies to lizał