Sztuczna Inteligencja

Jak samodzielnie wykonać animację AI na własnym komputerze? Podpowiadamy!

Błażej Wojciechowski
Jak samodzielnie wykonać animację AI na własnym komputerze? Podpowiadamy!
1

Sztuczna inteligencja to narzędzie, dzięki któremu można tworzyć spektakularne grafiki czy animacje przy pomocy komend zwanych promptami. Co ciekawe, da się to zrobić również na komputerze domowym. Jak? Wystarczy mocna karta graficzna i nasz poradnik.

Materiały tworzone przez sztuczną inteligencję dosłownie zalewają internet. Obecnie coraz częściej możemy zobaczyć czy to grafiki, czy niezwykle efektowne animacje. Sztuczna inteligencja potrafi również zmodyfikować głos czy skomponować utwór muzyczny. Skupmy się jednak na animacjach, ponieważ to one często prezentują się po prostu spektakularnie. Czy wiecie, że można je przygotowywać w domowym zaciszu, przy pomocy komputera, który na codzień służy nam do pracy czy zabawy?

Żeby samemu przekonać się o tym, jak przebiega proces tworzenia animacji z wykorzystaniem AI, przygotowaliśmy poniższy poradnik. Jeśli kiedykolwiek chcieliście spróbować swoich sił w obsłudze sztucznej inteligencji, możecie zacząć właśnie od tego miejsca. To bardzo prawdopodobne, że mocno się w to wciągniecie i postawicie kolejne kroki ku temu, by władać mocą sztucznej inteligencji jeszcze sprawniej.

Nie przedłużając – zaczynajmy!

Samodzielne tworzenie animacji z wykorzystaniem sztucznej inteligencji

Tworzenie animacji to czasochłonny proces, który wymaga zdolności manualnych lub technicznych. Od niedawna takie zadanie możemy zlecić także sztucznej inteligencji. Pierwszym krokiem powinno być zatem wybranie odpowiednich narzędzi. Zdecydować możemy się na rozwiązania chmurowe, które są płatne lub zainstalować sieć neuronową na własnym PC, co jest bezpłatne. W tym poradniku skupimy się na drugim wariancie.

Wymagania sprzętowe

W przypadku tego poradnika wszystkie procesy były wykonywane na karcie graficznej Gainward GeForce RTX 4070 Ti Phantom GS, która sprawdziła się do tego celu doskonale. Podstawowym warunkiem jest jednak, aby karta miała co najmniej 8GB pamięci VRAM. To zapewni nam praktycznie każda jednostka z ostatnich dwóch generacji. Sprawdzi się nawet 2070 Super, chociaż czasy eksportu (generowania klatek) w wyższych rozdzielczościach będą długie ze względu na starsze rdzenie Tensor.

Przygotowania

Animacja to nic innego jak sekwencja obrazów, czyli klatek. Model sieci neuronowej generuje każdą klatkę osobno w oparciu o nasze komendy i poprzednią klatkę. O jakość i spójność dbają specjalne algorytmy, które możemy ustawiać zgodnie z potrzebami. Na końcu klatki są automatycznie łączone w wideo. Warto pamiętać o tym, że każdy wynik będzie unikatowy.

Model generatywnej sieci neuronowej do tworzenia animacji nazywa się Rev Animated. Natomiast do komunikacji z siecią niezbędny jest jeszcze interfejs, który pozwoli na ustawienie i wydawanie poleceń sieci. W tym przypadku skorzystamy z  A1111 Webui Launcher. Na tej stronie można pobrać można instalator. Wystarczy nam tylko plik .exe.

  • Wybieramy ścieżkę instalacji interfejsu A1111 Webui Launcher. Najlepiej, aby był to osobny dysk lub partycja. W tym miejscu będą również zbierane wszystkie nasze wyniki.

  • Po zainstalowaniu interfejs jest gotowy do włączenia. W trakcie pierwszego uruchomienia pojawi się okno dialogowe, które zapyta czy zainstalować także podstawowy model sieci neuronowej. Jeżeli chcemy zyskać podstawową funkcję generowania obrazów to wybieramy TAK, a sieć pobierze i zainstaluje się automatycznie.

  • Sieć możemy także pobrać wcześniej samodzielnie tutaj i umieścić ją w folderze z zainstalowanym interfejsem.
  • Po zakończonej operacji otworzy nam się launcher. Jeżeli w trakcie instalacji napotkacie problemy w wielu przypadkach wystarczy ponowne uruchomienie instalatora. W tym przypadku domyślne ustawienia są najbardziej optymalne.

  • Teraz jesteśmy gotowi do generowania podstawowych obrazów. Natomiast do tworzenia animacji potrzebujemy jeszcze 2 wtyczek i modelu o nazwie Rev Animated.
  • Rev Animated pobieramy z tej strony i umieszczamy w folderze z naszym interfejsem w folderze: models/stable-diffusion. Interesuje nas tylko i wyłącznie plik .safetensor. Oczywiście możemy również skorzystać z innych modeli i algorytmów dostępnych w sieci. Te przedstawione tutaj były do tej pory najbardziej przetestowane.

  • Teraz instalujemy bardzo ważną wtyczkę o nazwie Deforum. W zakładce extensions używamy przycisku Load from, a następnie z listy wybieramy Deforum. Najczęściej znajdziemy ją na samym dole listy.

Przed nami szereg ustawień, a każdy parametr ma wpływ na ostateczny wygląd animacji. Dostępne modele i sieci neuronowe to stosunkowo świeże narzędzia, które nie są jeszcze zoptymalizowane pod kątem UI, czy UX. Jeżeli dany parametr nie został uwzględniony oznacza to, że możemy zostawić tam ustawienia domyślne. Odświeżamy listę i wybieramy nasz model, a następnie przechodzimy do zakładki Deforum. Jesteśmy gotowi aby rozpocząć tworzenie naszej animacji.

Zaczynając od góry znajdziemy odpowiednio 7 zakładek. Pierwsza z nich to Run:

  • Sampler ustawiamy na DPM++ SDE Karras. Daje on najbardziej konsekwentne wyniki. W sieci możemy znaleźć także porównania sameplerów.
  • Steps – określa liczbę akcji, które wykona sieć neuronowa do stworzenia jednej klatki. Domyślne 25 akcji pozwoli nam na wyraziste i dopracowane efekty. Mniejsza ilość akcji powoduje, że sieć neuronowa tworzy bardziej abstrakcyjne wzory.
  • Na początek najlepiej poeksperymentować w mniejszych rozdzielczościach, dlatego na potrzeby tego poradnika tworzymy film w rozdzielczości 720 x 1280p.

Następnie mamy zakładkę Keyframes, a w niej kolejne zakładki.

  • Animation Mode: tutaj wybieramy opcję 3D
  • Border mode – algorytm ustawiamy na tryb WRAP
  • Cadence – algorytm odpowiedzialny za interpolacje. Im większa wartość tym efekt końcowy będzie bardziej płynny. Niskie wartości spowodują, że animacja będzie przypominała wykonaną w technice stop motion. Na początek ustawmy wartość na 5.
  • Max Frames – tyle klatek będzie miała nasza animacja, inaczej mówiąc tyle obrazów wygeneruje sieć neuronowa. Liczbę klatek dzielimy przez wartość ustawioną w [FPS] co da nam czas animacji w sekundach.
  • Strenght schedule – ustawienie, które decyduje ile pikseli z poprzedniej klatki zostanie uwzględnionych przy tworzeniu kolejnej. Możemy zostawić domyślną wartość 0: (0.65) lub delikatnie obniżyć do 0: (0.55).
  • Motion – tutaj ustawiamy ruch kamery, co opisane jest w osobnym akapicie.
  • Obok Motion znajdziemy zakładkę Noise. Ustawiamy Noise schedule. Formułę najlepiej skopiować, ponieważ ta optymalna jest dość skomplikowana: 0:(-0.06*(cos(3.141*t/15)**100)+0.06). Domyślna wartość również się sprawdzi.
  • W zakładce Anti Blur możemy zmniejszyć Amount schedule o połowę do 0: (0.05)
  • W ostatniej podzakładce Depth Warping & FOV interesuje nas tylko parametr FOV Schedule – tutaj możemy ustawić zakres pola widzenia w stopniach, co wpływa również na prędkość animacji. Domyślne ustawienie 0: (70) jest tutaj całkowicie w porządku, ewentualnie 90 lub 120.

Zakładka Prompts

Przed przystąpieniem do pisania promptów (komend) powinniśmy posiadać podstawową wiedzę z zakresu ich tworzenia. Im bardziej precyzyjne i jakościowe komendy, tym lepiej.

Tutaj wpisujemy komendy na podstawie, których będzie generowana animacja. Komendy możemy zmieniać w trakcie animacje. Do tego służy pierwsza cyfra, która wyznacza klatkę od której zaczyna obowiązywać dana komenda. A zatem wpisując powyższą komendę animacja od pierwszej do 29 klatki będzie generowała obrazy psa, a od 30 obrazy kota. Całość możemy ułożyć w spójną historię. Prompty wpisujemy w języku angielskim.

Oto przykładowe prompty w przypadku 120 klatek, gdzie temat zmienia się co 30 klatek:

{

"0": "highly detailed illustration, high style, futuristic city",

"30": "highly detailed illustration, high style, fights in the city",

"60": "highly detailed illustration, high style, peace rise in the city",

"90": "highly detailed illustration, high style, city thrives"

}

Wszystkie wartości wpisujemy zgodnie z formatem JSON, co sprowadza się do tego, aby pilnować przecinków i odstępów. W ostatniej linijce nie dajemy żadnego znaku. Pamiętajcie także o klamrach {}. Brak jednego znaku lub jego nadmiar, spowoduje, że cała sieć neuronowa nie wystartuje. Dodając komendę w zakładce prompts positive sprawimy, że zostanie ona dodana automatycznie do każdej komendy wpisanej wyżej.

Zakładka Init

Tutaj możemy wybrać 1 klatkę naszej animacji. Wybieramy opcję „Use init” i określamy ściężkę pliku online lub na dysku. Jest ona o tyle ważna, że algorytm zadba, aby cała tworzona sekwencja zachowała kolorystykę oraz proporcję kolorów z 1 klatki. Opcja ta pozwala również na łączenie ze sobą nagranych wcześniej filmów i sekwencji, o czym później. Jeżeli jej nie wybierzemy sieć neuronowa samodzielnie wygeneruje 1 klatkę.

Motion, czyli ruch kamery

Ostatnim ważnym elementem naszej animacji są ustawienia kamery. Robi się to za pomocą 6 osi w zakładce Keyframes, a następnie Motion. Ruch po każdej z osi możemy zaprogramować z dokładnością co do jednej klatki.

Domyślne ustawiona jest oś Z [Translation Z], która odpowiada za ruch do przodu, czyli niejako zoom. Na początek zmieńmy jej wartość na 0: (1). Da nam to wolny, spokojny ruch, który możemy delikatnie przyśpieszyć. Operujmy tutaj wartościami dziesiętnymi, a zatem sprawdzą się ustawienia typu 1,2 czy już szybsze 1,75.

Dodajemy do tego jeszcze jedną oś X [Translation X].  Przykładowe ustawienia mogą wyglądać tak: "translation_x": "0:(2) co sprawi, że obraz będzie przesuwał się o 2 piksele w prawo co każdą klatkę. Wyeksportujemy nasze wyniki. Taki efekt da nam połączenie ruchu w dwóch osiach. Dzięki cadence o wartości 5 ruch będzie także bardzo stabilny. Klikamy generate i czekamy na zakończenie generowania wszystkich klatek. Nasza automatycznie sklejona animacja razem z wszystkimi klatkami pojawi się w folderze z zainstalowanym interfejsem w ścieżce outputs/img2img-images.

Tutaj warto eksperymentować z każdą zmienną, delikatnie ją modyfikując i obserwując wpływ na końcowy efekt. Ruch w filmie wertykalnym, a w filmie horyzontalnym wymaga trochę innych ustawień, dlatego jeżeli zmienimy rozdzielczość ustawienia będą wymagały ponownego dopasowania.

Teraz możemy dokładać kolejne osie i obserwować jak zachowuje się nasza kamera. Dopracowanie tej umiejętności pozwoli na swobodne tworzenie animacji. Tworzenie przybliżeń, obrotów czy innych bardziej skomplikowanych ruchów staje się z czasem łatwiejsze, a kontrola nad końcowymi efektami staję się coraz większa. Tutaj liczy się praktyka.

Jak łączyć krótkie wygenerowane sekwencje w jedną całość?

Ścieżka folderu z wynikami wygenerowanymi przez sieć neuronową znajduję się w folderze z zainstalowanym interfejsem, a następnie /outputs/img2img. W folderze pierwszy plik to sklejone wideo, a następnie mamy WSZYSTKIE klatki, które zostały wygenerowane do jej stworzenia. Teraz wybieramy ostatnią z nich. Dla wygody najlepiej skopiować ją do innego folderu i zmienić nazwę. Następnie plik ustawiamy jako init. Sieć neuronowa rozpocznie kolejną sekwencję od tej właśnie klatki pozwalając nam na łączenie dwóch fragmentów w spójną całość w programach do edycji wideo jak OpenShot, który jest także bezpłatny. Dzielenie animacji na mniejsze segmenty daje nam większą kontrolę nad animacją. Czasami jeden źle napisany prompt może popsuć cały efekt. Eksportując krótkie fragmenty możemy je łatwo zmieniać i wygenerować ponownie.

Init możemy także wykorzystać, aby połączyć klasyczny film nagrany chociażby telefonem z naszą animacją. W tym przypadku przechwytujemy ostatnią klatkę filmu i wrzucamy ją jako init. Efekty tej techniki wyglądają tak jak na tym TikToku.

Zachęcamy do spróbowania swoich sił w roli twórców animacji z wykorzystaniem AI. Kto wie, kiedy i do czego taka umiejętność może się przydać.

Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu