- Generowanie grafik za pomocą narzędzia Flux AI jest bardzo proste i wymaga jedynie utworzenia konta na stronie aplikacji.
- Generowanie spersonalizowanych grafik, opartych na własnym modelu jest bardziej wymagającym procesem, ale po odpowiednim skonfigurowaniu daje ogromne możliwości.
- Tworzenie własnego modelu LoRA jest stosunkowo procesem prostym, jednak czasochłonnym i wymagającym pod względem sprzętowym.
Generowanie obrazów przy pomocy sztucznej inteligencji - jeszcze do niedawna mogło nam się to kojarzyć z sześcioma palcami, niską rozdzielczością i generalnie wieloma niedociągnięciami. Te czasy odchodzą już w niepamięć, rozwój generatywnej sztucznej inteligencji w ostatnich czasach nabrał niezwykłego tempa - nic dziwnego, skoro jej potencjał jest tak ogromny. Jednym z największych rewolucji (choć można tu mówić również o ewolucji) ostatnich czasów jest Flux AI. Porozmawiajmy sobie o tym, co to jest Flux AI, jak wyciągnąć z niego więcej korzystając z LoRA, jak zacząć i korzystać z Fluksa i na co warto zwrócić uwagę.
Co to jest Flux AI?
Flux AI to jeden z najnowszych modeli generowania obrazów za pomocą sztucznej inteligencji. Został on opracowany przez Black Forest Labs, firmę, której celem jest rozwój najnowocześniejszych generatywnych modeli głębokiego uczenia dla mediów. Model ten stanowi niemały przełom w tej dziedzinie, ponieważ wykorzystuje “architekturę hybrydową”, która łączy techniki dyfuzji z transformacją, wykonując skalowanie do niemal 12 milionów parametrów. Brzmi to bardzo skomplikowanie, dlatego w tym wpisie nie będziemy wchodzili głębiej w technikalia, a skupimy się na jego “fasadzie”.
Co to jest LoRA?
LoRA to anglojęzyczny skrót od “Learnable, Reversible and Adjustable operation”, co w wolnym tłumaczeniu oznacza “Możliwe do nauczenia, odwracalne i regulowane operacje”. Ale co to znaczy? Ponownie przytoczmy trochę teorii, żeby potem przejść do praktycznej strony. Są to podstawowe składniki modeli generatywnych, takich jak GAN (Generative Adversarial Networks) czy VAE (Variational Autoencoders), które stanowią fundament syntezy obrazu i innych kreatywnych zastosowań modelu. W dużym uproszczeniu stosowanie LoRA umożliwia “nakierowanie” modelu Flux na dany kierunek generatywny, dlatego dla uproszczenia będę o nich pisał “modele LoRA”. Dziś tym kierunkiem będzie wygenerowanie kilku grafik za pomocą Flux’a z moim wizerunkiem 🙂. Przejdźmy więc do dzieła!
1. Flux + LoRA - Czego potrzebuję?
W tym momencie musimy rozdzielić - czego oczekujemy? Jeśli chcemy generować dobrej jakości grafiki w jednym z 27 stylów, które na dzień dzisiejszy są dostępne na oficjalnej stronie www.flux1.ai, to potrzebujemy tak naprawdę jedynie:
- Urządzenia z dostępem do internetu
- Stworzonego konta na www.flux1.ai
- Kredytów, dostępnych do zakupienia na stronie
Jeżeli zależy nam jednak na generowaniu bardziej spersonalizowanych grafik oraz na większej kontroli w generacji, będziemy potrzebowali:
- Komputera z kartą graficzną o co najmniej 12GB VRAM-u.
- Dostępu do internetu
- Czasu i cierpliwości 🙂
Pierwszy sposób jest stosunkowo bardzo prosty, ponieważ polega tak naprawdę na zalogowaniu się na stronie, wybraniu modelu i wpisaniu pożądanego prompta. Dlatego w dzisiejszym wpisie skupimy się bardziej na tym drugim rozwiązaniu, ponieważ uważam, że prawdziwe możliwości rozpoczynają się właśnie tam.
2. Flux AI + LoRA - krok po kroku
Tak jak wspomniałem, zanim zaczniemy tworzyć nasze grafiki, musimy przejść przez kilka etapów, w których przygotujemy nasze środowisko. Zanim przejdziemy dalej, upewnij się, że Twoja karta graficzna posiada co najmniej 12GB pamięci VRAM.
1. Instalacja narzędzia “Pinokio”
- Pierwszym krokiem jest pobranie i instalacja narzędzia zwanego “Pinokio”. W tym celu wchodzimy na stronę: https://pinokio.computer/ i klikamy przycisk Download.
- Zostaniemy przekierowani do dokumentacji, gdzie klikamy przycisk Download for Windows. Jeśli korzystamy z systemu MacOS lub Linux, analogiczne linki znajdują się niżej w dokumentacji.
- Rozpocznie się pobieranie. Rozpakowujemy pobrany plik zip i odnajdujemy plik wykonawczy .exe i uruchamiamy go. Postępujemy zgodnie z instrukcjami wyświetlanymi.
- Po zainstalowaniu programu “Pinokio” i uruchomieniu, powinniśmy widzieć taki oto ekran:
Jeśli tak nie jest, należy uruchomić program i przejść do zakładki Discover.
Instalacja “Fluxgym”
- W wyszukiwarce Pinokio wpisujemy “fluxgym” i wchodzimy w wynik wyszukiwania, po czym klikamy Download.
- Możliwe, że przekieruje nas do wyników wyszukiwania w przeglądarce internetowej, wtedy po prostu wpisujemy “fluxgym” ponownie w wyszukiwarce i klikamy Download.
- Pinokio poprosi o nadanie nazwy. Proponuję zostawić taką jaka jest i kliknąć Download.
- Rozpocznie się proces pobierania. Po pobraniu pojawi się taki widok, na którym klikamy Install.
- Rozpocznie się proces instalacji, który będzie podzielony na około 7 etapów i z pewnością potrwa dłuższą chwilę. Pozostaje nam bycie cierpliwym 🙂
- Po instalacji uruchomi nam się widok startowy programu Fluxgym, który możemy na razie zamknąć.
3. Instalacja “Forge”
Analogicznie jak w przypadku instalacji Fluxgym, wpisujemy w wyszukiwarce Pinokio “Forge” i przechodzimy przez proces pobierania i instalacji w ten sam sposób.
Gdy zainstalujemy obie aplikacje, powinniśmy je mieć widoczne w panelu Home w Pinokio.
Na tym etapie możemy uruchomić aplikację Forge i zacząć generować grafiki. Jednak w dalszych etapach skupimy się na tworzeniu własnych modeli LoRA oraz na pobieraniu tych już stworzonych przez społeczność. Opowiem również o najważniejszych elementach interfejsu Forge i jak z nich korzystać, więc zdecydowanie warto czytać dalej.
4. Używanie modeli LoRA stworzonych przez społeczność
- Jednym z najbardziej rozwiniętych portali, na których możemy znaleźć setki, jeśli nie tysiące modeli, jest www.civitai.com, wchodzimy więc na portal i tworzymy konto klikając przycisk w prawym górnym rogu.
- Tworzymy konto dowolną wybraną metodą. Zostaniemy również poproszenie o akceptację warunków korzystania z portalu oraz uzupełnienie podstawowych danych profilu.
- Gdy założymy już konto, zostaniemy przekierowani na stronę główną. W lewym górnym rogu wybieramy “Models” i upewniamy się, że w prawym górnym rogu, w panelu Filters mamy wybraną opcję “LoRA”.
- Niech nie zwiedzie Cię ilość modeli ukierunkowanych na stylistykę kreskówkową czy anime. Jest ich wiele, ale są również inne, realistyczne modele. Po wejściu w wybrany model zobaczymy taki oto panel:
- Klikamy przycisk Download i czekamy na pobranie. Niektóre modele potrafią ważyć kilkanaście GB, więc warto się zaopatrzyć w czas.
Interesują nas w nim przede wszystkim:
Type - powinien to być “LORA”
Trigger words - to frazy, których wpisanie w prompcie uaktywni dany model.
Mamy już pobrany model, przejdziemy teraz przez proces tworzenia własnego modelu, po czym opiszę jak używać modeli LoRA w Forge.
5. Tworzenie własnego modelu LoRA
Ten krok jest jednym z bardziej czasochłonnych procesów, ale odpowiednio wykonany daje świetne rezultaty. Na potrzeby dzisiejszego wpisu stworzymy model mojej osoby. lecz zachęcam do robienia tego razem ze mną na swoich zdjęciach.
- Zaczynamy od zebrania co najmniej 15, najlepiej około 25 dobrej jakości zdjęć siebie. Starajmy się wybrać zdjęcia, na których jesteśmy w zróżnicowanych sytuacjach, okolicznościach z różnymi emocjami na twarzy. Tak naprawdę najważniejsza jest twarz, więc na niej się skupmy najbardziej.
- Po zgromadzeniu zdjęć uruchamiamy aplikację Fluxgym w Pinokio. W poniższych polach po kolei:
- Wpisujemy nazwę modelu LoRA, który obecnie tworzymy
- Ustalamy trigger word, czyli frazę, która wpisana w prompcie będzie aktywowała nasz model LoRA
- Wybieramy model bazowy, proponuję tutaj zostawić opcję flux-dev
- Zaznaczamy ile pamięci VRAM posiada nasza karta graficzna
- Do środkowego pola przenosimy zdjęcia wybrane dla danego modelu.
- Mamy możliwość dodania krótkich opisów do wgranych zdjęć, a nawet utworzenia automatycznych opisów za pomocą AI. Osobiście uważam, że niewiele to zmienia, ale zapraszam do poeksperymentowania.
- Po wgraniu zdjęć, wróćmy do pól z lewej strony, a mamy tutaj
- Liczba kroków, które zostaną wykonane w ramach trenowania modelu. Im więcej zdjęć wgramy, tym więcej kroków będzie podjęte.
- Przykładowe prompty, które możemy generować co określoną ilość kroków treningu, aby na bieżąco kontrolować efekt.
- Liczbę kroków, co którą powinny być generowane grafiki z promptów w polu powyżej. Tę wartość proponuję ustawić na ok 1/10 liczby kroków, aby widzieć rezultat co 10% pracy.
- Po uzupełnieniu wskazanych pól klikamy przycisk Start training w prawym górnym rogu i magia zacznie się dziać… bardzo powoli. Przy około 25 zdjęciach proces tworzenia modelu trwa około 2-3h, przy czym jeśli będziemy w międzyczasie korzystali z innych aplikacji angażujących kartę graficzną - czas ten wydłuży się. Dlatego proponuję na ten czas odejść od klawiatury i dać modelowi się trenować 🙂
6. Wgrywanie modelu do Forge
Jeśli zdecydowaliśmy się pobrać plik z modelem z internetu, powinniśmy umieścić plik .safetensors w folderze modeli LoRA, w moim przypadku jest to ścieżka: C:\pinokio\api\stable-diffusion-webui-forge.git\app\models\Lora\
W przypadku gdy sami trenowaliśmy model, będzie on automatycznie wgrany do naszego folderu, więc nic więcej nie musimy robić.
7. Generowanie grafik Flux AI + LoRA
Na tym etapie możemy uruchomić Forge i przejść do działania. Zanim jednak zaczniemy tworzenie grafik, wyjaśnijmy sobie najważniejsze elementy interfejsu. Może się nam on na pierwszy rzut oka wydawać skomplikowany, aczkolwiek taki nie jest, pomijając fakt, że części z niego nie będziemy w ogóle potrzebowali.
Interfejs zawiera bardzo dużo elementów, dlatego dziś skupimy się tylko na tych najistotniejszych, którymi będziemy operowali:
UI - w tym przypadku powinien być ustawiony na “flux”, ponieważ to na tym modelu będziemy pracowali.
Checkpoint - jest to zapis stanu trenowanego modelu w określonym czasie. Nie wchodząc zbyt głębogo w technikalia, na potrzeby tego projektu ustawmy go na flux dev
Txt2img - ta zakładka pozwala nam na generowanie obrazów na podstawie promptów tekstowych
Img2img - ta zakładka pozwala nam na generowanie obrazów na podstawie innych obrazów oraz, i to na tym się dziś skupimy bardziej, generowanie fragmentów obrazów w wyznaczonym miejscu (Inpaint)
Prompt - w tym miejscu wpisujemy pożądanego prompta, na podstawie którego chcemy stworzyć obraz.
Negative prompt - w tym polu wpisujemy elementy, których chcemy się pozbyć z generowanych grafik, np. nieostrość czy zbyt wiele palców u rąk.
Sampling steps - ilość kroków, jakie zostaną wykonane podczas generowania obrazu (zalecam ok. 20-35)
Width - Szerokość generowanej grafiki w pikselach
Height - Wysokość generowanej grafiki w pikselach
Hires. fix - Zaznaczenie tego pola spowoduje wygenerowanie grafiki o większej ilości detali. Proponuję używać tego dopiero gdy w pełni dopracujemy nasz prompt, ponieważ znacznie wydłuży to czas generowania grafiki.
Batch count - Ilość wygenerowanych grafik podczas jednego procesu
Batch size - ilość procesów generacji. Zwiększenie tego parametru wpływa na wydajość i wymaga VRAMu.
Distilled CFG Scale - Skala określająca, jak mocno wygenerowany obraz powinien trzymać się prompta. Wartość 0 da najbardziej odbiegające od prompta i kreatywne wyniki.
Seed - Jest to unikalna wartość liczbowa, stanowiąca o tym, w jaki sposób zostanie wygenerowana grafika. Domyślnie jest on randomizowany, jednak jeśli chcemy utrzymać spójność wizualną grafik, powinniśmy używać tego samego seedu.
Zakładka Lora - zakładka, na której jest galeria naszych aktualnie wgranych modeli LoRA. Kliknięcie danego modelu sprawi, że zostanie on dodany do prompta w <> i tym samym aktywowany
Zakładka Inpaint - Jest to zakładka, na której możemy wgrać dowolne zdjęcie i wskazać konkretny obszar, na którym chcemy wygenerować promptowany element.
Mask blur - Jest to wygładzenie obszaru, który zamalowaliśmy w zakładce inpaint. Większa wartość (w pikselach) pozwoli wygenerowanemu elementowi lepiej dopasować się do otoczenia.
Aby wygenerować grafikę, wystarczy wpisać prompta w odpowiednim polu (w języku angielskim), oddzielając wytyczne przecinkami. Następnie określamy wysokość i szerokość grafiki, którą chcemy stworzyć i klikamy Generate. Aby zwiększyć ilość generowanych grafik, wystarczy zwiększyć wartość Batch count. Jeżeli nie do końca jesteśmy zadowoleni z naszego wyniku, warto poeksperymentować z wartościami: Sampling steps, Distilled CFG Scale oraz oczywiście z promptem.
Z kolei aby nanieść wygenerowany fragment na grafikę, musimy przejść na zakładkę Img2img:
Tam przejść na zakładkę Inpaint i w widocznym miejscu wgrać daną grafikę, po czym zamalować pędzlem fragment, który chcemy zmienić na wygenerowany. Wprowadzamy oczywiście również prompta dot. generowanego fragmentu i również możemy eksperymentować tymi samymi wartościami, co w przypadku generowania grafik.
A oto przykłady stworzonych przeze mnie grafik, w oparciu o wcześniej wytrenowany model:
Oczywiście grafiki te nie odzwierciedlają idealnie mojej osoby i będzie to widoczne zwłaszcza dla osób, z którymi przebywam na co dzień. Jednak jeśli:
- przygotujemy odpowiednio dużo dobrej jakości zdjęć do wytrenowania naszego modelu,
- poświęcimy wystarczająco dużo czasu na dopracowanie naszego prompta i parametrów generowania,
- Zaopatrzymy się w dodatkowe modele, symulujące realne warunki oświetleniowe itp.,
będziemy mogli osiągnąć niemal idealne wyniki 🙂
A poniżej kilka przypadków wykorzystania narzędzia Inpaint, gdzie naniosłem swoją twarz do już istniejących zdjęć:
Koniecznie daj znać, co myślisz o takim narzędziu i czy chciałbyś/chciałabyś zobaczyć zaawansowany poradnik jak korzystać ze wszystkich funkcji, jakie ono oferuje!