czyli co za dużo to nie zdrowo,

czyli nie za dokładnie, nie za ogólnie

W tym arcie postaram się po krótce wyjaśnić jak budować promty do Stable Diffusion Network czy innych sieci generujących grafiki przy pomocy opisu tekstowego.

Na wstępie, o Stable Diffusion Network (SDN)

Stable Diffusion Network (SDN) to jedna z nowych typów sztucznych sieci neuronowych wytrenowanych do generowania realistycznej grafiki na podstawie tekstu. Ponieważ sieć została wytrenowana na milionach par obrazów i opisów tekstowych znalezionych w Internecie, to rozumie jaki opis tekstowy kojarzy się z jakim obrazami.

Stable Diffusion Network uczy się generować obrazy, odtwarzając proces dyfuzji, który na bieżąco usuwa szum z obrazów. Na chłopski rozum po prostu do obrazka dodajemy szum, a sieć uczymy jak usuwać ten szum. Dzięki tej metodzie, SDN jest w stanie tworzyć realistyczne i wysokiej jakości grafiki, więcej o SDN: https://en.wikipedia.org/wiki/Stable_Diffusion

Magia prompta

Kluczem do osiągnięcia wysokiej jakości generowanych obrazów jest precyzyjne sformułowanie prompta, czyli instrukcji dla modelu generującej obraz. Poniżej przedstawię jak dokładność prompta wpływa na generowanie grafiki przy pomocy SDN, a także podpowiem, jak optymalizować prompty, aby uzyskać najlepsze rezultaty.

Przykłady będą generowane na takich samych parametrach, będą się różniły tylko promtem, czyli:
– model Stabble Difusion v2.1
– seed: 99999
– rozdzielczość: 768x640px
– steps: 100
– guidance scale: 7.5

Prompt to tekstowy opis, która przekazuje modelowi informacje na temat obrazu w jaki sposób ma zostać wygenerowany. To, jak precyzyjnie prompt zostanie sformułowany, ma bezpośredni wpływ na jakość generowanego obrazu.

Kwestie związane z dokładnością promptów:

  • Zbyt ogólny prompt: Jeśli prompt jest zbyt ogólnikowy, model może mieć trudności z wygenerowaniem obrazu, który spełnia oczekiwania użytkownika. Na przykład, prompt “dog“, może skutkować generowaniem różnych typów psów. Jednocześnie jednak może wygenerować psa który nam nie pasuje
  • Zbyt szczegółowy prompt: Z drugiej strony, jeżeli damy zbyt szczegółowy promt to model będzie miał problem z odtworzeniem wszystkich wymienionych cech obrazu. Może prowadzić do niezadowolenia użytkownika, ponieważ wygenerowany obraz będzie błędny. Niektóre modele mają również ograniczenie do ilości przetwarzanych tokenów tekstowych, czyli wywalają się jeżeli podamy za długi tekst. „a border collie dog | a real dog | red sun in the background | sky in the storm | look at the camera | full body shot | dog in the center | a closeup photorealistic photograph of a dog on the beach at sunset | 4k hd | image is trending on artstation | featured on behance | features intricate detail and the style photorelity | golden hour | strong blur background | full color

    Jak widać mamy psa obciętego psa, który nie jest wycentrowany, kłócą się słowa “full body shot” i “a closeup photorealistic”, itd

Jak budować promta:

  • Używaj konkretnych, ale nie zbyt szczegółowych opisów, utrzymuj równowagę pomiędzy ogólnikowością a szczegółowością. Opisz obraz, którego oczekujesz, używając wystarczająco jasnych wskazówek, ale unikaj przesadnego opisywania każdego szczegółu.
  • Używaj jasnych, prostych i zrozumiałych słów, który jest zrozumiały dla modelu. Unikaj używania trudnych, specjalistycznych słów, które mogą być źle zinterpretowane. Po prostu mogły się nie znaleźć w danych treningowych.
  • Eksperymentuj z różnymi wersjami prompta, modelami, parametrami. W przypadku niezadowalających wyników, spróbuj przekształcić swój prompt, dodając lub usuwając szczegóły. Często niewielka zmiana w promptach może prowadzić do znaczącej poprawy jakości generowanych obrazów.
  • Ogranicz długość prompta: Zbyt długie prompty mogą wprowadzać model w błąd lub zmusić go do skupienia się na mniej istotnych szczegółach.

Dlatego obudziła się we mnie polska cebula i odpaliłem swoje narzędzie, wersja pre pre pre alfa, czasami działająca, a czasami i nie jest pod adresem: https://artimid.com/

Przykład, wygenerowane grafiki z różną szczegółowością prompta:

  • Landscape – za ogólny, to może być wszystko
  • Mountains – już lepiej, określa coś bardziej szczegółowego, ale sieć może wygenerować dziwne obrazki
  • Mountain landscape with trees and lake – już lepiej
  • The setting sun over a mountainous landscape with a lake surrounded by pine trees – dobry prompr

    A mountainous landscape with a lake surrounded by pine trees, where five ducks, three seagulls and a dolphin swim, with a background of orange and purple hues, and three peaks of 2350, 2430 and 2560 meters are visible on the horizon – trochę za szczegółowo