I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.

29
Doberek
Od jakiś 2 tygodni bawię się ze sztuczną inteligencją generującą obrazy z tekstu, a od tygodnia aktywnie udostępniam co lepsze wyniki.

Domyślam się, że nie jestem pierwszą osobą, która już taki tutorial wrzucała na dzidkę, ale w związku z rosnącą liczbą zapytań: co? gdzie? i jak?, doszedłem do wniosku, że jedna więcej dzida w tym temacie nie zaszkodzi a może kogoś przy okazji zmotywuje do zabawy.

Z góry ostrzegam- instrukcja jest skierowana głównie do totalnych laików w kwestiach związanych z oprogramowaniem i  sztuczną inteligencją więc proszę wszystkich #programista15k o nie mieszanie mnie z błotem na starcie  :D
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Ale zacznijmy od początku: "Co to w ogóle jest?"
Stable Diffusion jest modelem tzw. głębokiego uczenia (deep learning) tekstu-na-obraz wypuszczony przez StabilityAI w tym roku.

W wielkim skrócie: wpisujesz co chcesz zobaczyć, a zadaniem sztucznej inteligencji jest, w oparciu o wyuczony model i losowe ziarno, wygenerować coś, co ma spełnić oczekiwania użytkownika.

Oczywiście wyniki nie zawsze są idealnie więc jest to często czasochłonna zabawa oparta na metodzie prób i błędów. Ale jak już wam się poszczęści, to SI potrafi "wypluć" naprawdę poważne dzieła (przykładowo powyższy portret wygenerowałem po kilku godzinach zabawy z danymi wejściowymi i po odrzuceniu około 300 innych wyników).

Z góry jeszcze tylko chciałbym ostrzec. Autorzy projektu sugeruje korzystanie ze sprzętu posiadającego co najmniej 4 GB VRAMu na karcie graficznej, chociaż działa przy mniejszych wartościach. Ogólnie im nowsza, mocniejsza karta tym szybciej będzie generowało grafiki.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Przede wszystkim musimy przygotować nasz sprzęt do obsługi projektu. Stable diffusion jest napisany w języku programowania Python więc logicznym jest, że wpierw należy go zainstalować. Prosta sprawa- wchodzicie na stronę Pythona, pobieracie i instalujecie! Link do strony:
https://www.python.org/downloads/

Kolejnym krokiem byłoby już właściwie pobieranie samego projektu, ale by ułatwić sprawę, skorzystamy z innego oprogramowania- tj Git'a. Jest to system kontroli wersji, dzięki któremu łatwo, szybko i bezboleśnie pobierzecie repozytoria internetowe, a w przypadku jakichkolwiek zmian, równie szybko i łatwo jest zaktualizujecie zamiast od nowa pobierać całokształt.
Link do Git'a:
https://git-scm.com/downloads

Ponadto zalecam założyć konta na stronach:
https://github.com/
https://huggingface.co/
Konta są darmowe i będą wam za chwilę potrzebne.

Skoro mamy przygotowane fundamenty to możemy się zabrać za pobieranie poszczególnych składników.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Zaczynamy oczywiście od głównego interfejsu na którym będziemy pracować:
W moim przypadku korzystam ze Stable Diffusion WebUI, bo jest chyba najpopularniejszą ze wszystkich dostępnych opcji.
Tak więc wchodzimy pod poniższy link:
https://github.com/AUTOMATIC1111/stable-diffusion-webui

Powinna pojawić się wam strona jak na powyższej grafice. Klikacie w zielony przycisk z napisem "Code" i kopiujecie link https.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Następnie wybieramy gdzie chcemy zainstalować program. Prywatnie nie polecam instalować na dysku systemowym, bo szybko można go zapchać.

Jak już znajdziemy sobie dogodny folder, klikamy w nim prawym przyciskiem myszy i wybieramy "Git GUI here". Powinno wtedy wyskoczyć okienko jak te po lewej stronie i na nim klikamy na "Clone Existing Repository".
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Po kliknięciu na przycisk, powinno pojawić się wam powyższe okienko.
W "Source Location" wklejacie wcześcniej skopiowany link https z GitHub'a, a w Target Directory wpisujecie jak ma nazywać się nowo utworzony folder (nie musicie podawać pełnej ścieżki do wybranego miejsca). Następnie klikacie "Clone". Jeśli wyskoczy wam prośba o autoryzację czy logowanie- podajecie login do wcześniej założonego GitHub'a. Po tym jak program przemieli i pobierze projekt powinno wyskoczyć wam podobne okienko jak na poniższej grafice. Oznacza to, że projekt został już pobrany na wasz komputer. Okno możecie spokojnie zamknąć.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Po pobraniu otwórzcie folder projektu i wejdźcie w ścieżkę: "models\Stable-diffusion" w tym miejscu będziecie wrzucać tzw. modele. Osobiście pracowałem na dwóch: stockowym "stable-diffusion" oraz "waifu-diffusion". Różnica między nimi jest taka, że ten drugi jest wyuczony na bazie artów z pewnej strony z "anime dziewczynkami" i jest oparty na innym sposobie opisywania.

Dobra ale o tym potem. Linki do obu modeli:
- Stable-Diffusion: https://huggingface.co/CompVis/stable-diffusion-v1-3 (musicie założyć konto i zalogować się by otrzymać dostęp);
- Waifu-Diffusion: https://huggingface.co/hakurei/waifu-diffusion-v1-3/blob/main/wd-v1-3-full.ckpt

Jeśli będziecie mieli kilka opcji do wyboru, polecam wybrać wersję ważącą około 7GB. Te wersje poza samym działaniem pozwalają również na trenowanie modelu, jeśli będziecie chcieli kiedyś z tym się pobawić.
Prywatnie polecam wrzucać pojedynczy model do folderu, bo nie wiem jak u innych, ale u mnie spadała jakość obrazków, tak jakby program nie wiedział do końca z którego modelu ma korzystać.

Na samym dole macie link http- skopiujcie go i odpalcie w przeglądarce (nie wyłączajcie konsoli!!).
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Waszym oczom powinien ukazać się powyższy interfejs.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Teraz jeszcze szybko co gdzie i jak. Jako, że dopiero zaczynacie to nie będę was zanudzał jak to wszystko działa i co dany cosiek robi i po krótce opiszę najważniejsze (imo) punkty:
-"Prompt" to pole tekstowe gdzie wpisujecie co chcecie by SI wam narysowało. Im więcej szczegółów tym lepiej.
-"Negative Prompt" to pole tekstowe gdzie wpisujecie co NIE chcecie by SI wam narysowało. Np. określonego koloru oczu.
- "Sampling step" oznacza ile razy wasz obraz będzie próbkowany. Bawienie się tą zmienną to praktycznie metoda prób i błędów, ale im więcej razy program będzie próbkował pojedynczy obraz tym adekwatnie więcej czasu będzie potrzebował do zwrócenia obrazu.
- "Batch Count" to po prostu ile takich grafik ma wam jednorazowo wygenerować zbiór promptów o określonych parametrach.

Dobra, skoro już opisałem jak działa interfejs, no to poświęcę jeszcze chwilę na krótki opis różnic między modelem stable-diffusion a waifu-diffusion
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Powyższy obraz został wygenerowany z pomocą modelu stable-diffusion. Zapis Promptów w tym przypadku jest względnie uproszczony- dosłownie piszecie co chcecie by zostało wygenerowane. Przykładowo:
"Portrait of female knight with long hair, in armor, without helmet, oil painting"
I'm Something of a Artist Myself, czyli Stable-Diffusion dla opornych.
Ten obraz natomiast został wygenerowany z pomocą modelu waifu-diffusion. Tak jak wcześniej wspomniałem, ten model jest oparty o system tagowania znany z takich stron jak Danbooru, Gelbooru... czy Rule34. Przykładowo:
"1 girl, solo,simple background, looking at the viewer, full view
green hair,brown hair, long hair, ornament, bangs, crossed bangs, purple eyes, single earring...", i tak dalej.
Dobra mam nadzieję, że nie zanudziłem. Zapraszam do oglądania codziennie nowych zbiorów, które wrzucam na dzidkę i jeśli będziecie mieli jakiekolwiek problemy czy pytania- walcie śmiało. Postaram się w miarę moich możliwości na nie odpowiedzieć.

A teraz tradycyjnie wypierdalam ;P
0.09414005279541