Trzy lata temu opublikowałem artykuł opisujący eksperyment z wykorzystaniem wtyczki Mov2Mov dla Stable Diffusion (Automatic1111) do przekształcenia animacji fraktala wygenerowanego w Mandelbulberze w realistycznie wyglądający kanion.
Tamten wpis można przeczytać tutaj:
W tamtym czasie była to jedna z niewielu metod pozwalających na przetwarzanie całych sekwencji wideo przy użyciu Stable Diffusion. Efekty były interesujące, jednak rozwiązanie miało wiele ograniczeń. Modele generowały każdą klatkę niemal niezależnie, co powodowało migotanie obrazu, utratę szczegółów oraz stopniowe odchodzenie od geometrii oryginalnego fraktala.
Powrót do projektu po trzech latach
Rozwój modeli generujących wideo jest obecnie bardzo dynamiczny. Postanowiłem więc wrócić do tego eksperymentu i sprawdzić, jak poradzi sobie współczesny model Wan Video 2.1 uruchomiony w ComfyUI.
Tym razem nie korzystałem już z klasycznego mov2mov(czyli img2img niezależnych klatek). Zbudowałem całkowicie nowy workflow wykorzystujący możliwości modeli video.
Pipeline wygląda następująco:
Animacja fraktala (Mandelbulber)
↓
Load Video
↓
Resize
↓
Wan Video Encode
↓
Wan Video Sampler
↓
• Wan Video 2.1 1.3B
• VACE
• LoRA Depth
• Prompt tekstowy
↓
Wan Video Decode
↓
Render gotowego filmu

Wykorzystane modele
Do eksperymentu wykorzystałem:
- Wan Video 2.1 1.3B
- model VACE odpowiedzialny za video conditioning,
- LoRA Wan Depth, która ma pomagać modelowi zachować strukturę przestrzenną sceny,
- encoder T5 odpowiedzialny za interpretację promptów tekstowych.
Całość została uruchomiona w ComfyUI na dwóch kartach NVIDIA Tesla P40.
Największy problem
Okazało się, że największym wyzwaniem nie jest wygenerowanie realistycznego filmu.
Modele WAN robią to zaskakująco dobrze.
Znacznie trudniejsze jest zmuszenie modelu, aby pozostał wierny geometrii fraktala.
Fraktal posiada bardzo charakterystyczny układ skał i dolin. Model AI ma natomiast naturalną tendencję do „poprawiania” sceny według własnej wiedzy o krajobrazach. W efekcie z każdą kolejną klatką zaczyna coraz bardziej odbiegać od oryginalnej geometrii.
To właśnie zachowanie struktury wejściowej animacji okazało się najtrudniejszym elementem całego eksperymentu.
LoRA Depth
Jednym z najciekawszych elementów okazało się wykorzystanie LoRA Depth.
Jej zadaniem jest przekazanie modelowi informacji o głębi sceny, dzięki czemu łatwiej zachować przestrzenny układ obiektów.
Nie jest to jednak rozwiązanie idealne. LoRA poprawia spójność obrazu, ale nadal nie gwarantuje wiernego odwzorowania geometrii fraktala.
VACE
Kolejnym elementem workflow jest VACE (Video Auto-Conditioning Encoder).
Pozwala on zakodować informację o całym materiale wejściowym i przekazać ją do modelu generującego.
W praktyce poprawia spójność kolejnych klatek i zmniejsza przypadkowość generacji.
Wyniki
Największą zaletą nowego podejścia jest to, że model potrafi zamienić abstrakcyjną animację fraktala w scenę przypominającą prawdziwy kanion.
Widoczne są:
- realistyczne oświetlenie,
- zachowana płynność ruchu kamery,
- dużo większa spójność między kolejnymi klatkami niż w metodzie wykorzystującej Mov2Mov.
Jednocześnie nadal widać, że model interpretuje scenę na swój sposób i nie odwzorowuje w 100% geometrii wejściowego fraktala, jednakże efekt jest już bardzo zadowalający.
Optymalne parametry znalezione w toku testów:
Positive:
photorealistic sandstone canyon,
american southwest,
natural rock erosion,
cinematic drone footage,
realistic lighting,
highly detailed geology,
ultra realistic,
blue sky with clouds,
red rocks
Negative:
cartoon,
cgi,
3d render,
fractal,
mandelbulb,
low quality,
painting,
illustration,
anime,
snow,
bushes,
trees,
water,
birds
Depth lora: 0.6
Cfg: 4
Shift: 4
Steps: 10
Denoise: 0.7
Scheduler: unipc
noise_aug_strength: 0
ComfyUI uruchomiono z następującymi parametrami, optymalnie dla p40:
–highvram –force-fp32 –disable-cuda-malloc
Modele ładować jako fp32.
Wydajność
Eksperyment wykonywałem na serwerze HPE ProLiant ML350p Gen8 wyposażonym w dwie karty NVIDIA Tesla P40.
Największym ograniczeniem okazał się czas renderowania.
Już 10 do 20 kroków denoisingu dla filmu liczącego kilkadziesiąt klatek oznacza około 10~50 minut obliczeń, a karty przez cały czas pracują z temperaturą dochodzącą do około 90°C. Zalecana wymiana padów oraz pasty termoprzewodzącej i uruchamianie z opcją increased colling w RBSU (zwiększona głośność pracy serwera).
Modele wideo są obecnie zdecydowanie bardziej wymagające niż klasyczne modele Stable Diffusion.
Karty P40 nie są optymalnym rozwiązaniem do tego rodzaju zadań, ze względu na starą architekturę, brak tensor cores i optymalizacji FP16.
Czas generowania 81 klatek przy 10 steps to około 50 minut.
Zalecane przywrócenie stacji roboczej HP Z440 i zakup nowoczesnej karty graficznej z przynajmniej 16GB VRAM.
Co dalej?
Planuję sprawdzić między innymi:
- Wan Video 2.2 5B,
- modele wykorzystujące ControlNet Depth,
- dodatkowe metody zachowania geometrii sceny,
- automatyczne generowanie map głębi przy pomocy Depth Anything,
Mam nadzieję, że uda się jeszcze bardziej zbliżyć wygenerowany film do oryginalnej struktury fraktala, zachowując jednocześnie realistyczny wygląd krajobrazu.
Podsumowanie
Porównując efekty z 2023 roku z możliwościami współczesnych modeli można zauważyć ogromny postęp. Tam, gdzie wcześniej korzystaliśmy z przetwarzania klatka po klatce w Stable Diffusion, dziś możemy używać modeli zaprojektowanych specjalnie do generowania i modyfikacji wideo.
Mimo że zachowanie geometrii sceny dynamicznej nadal pozostaje otwartym problemem, Wan Video 2.1 pokazuje, jak szybko rozwijają się modele generatywne. Jestem przekonany, że kolejne wersje modeli oraz rozwój metod kontroli (Depth, ControlNet czy VACE) pozwolą w przyszłości jeszcze wierniej odwzorowywać złożone animacje fraktali, zachowując ich strukturę przy jednoczesnym nadaniu im fotorealistycznego wyglądu.

Dodaj komentarz