Kąt Andersona
Trzy wyzwania przed Stable Diffusion

Wydanie modelu Stable Diffusion przez stability.ai może być jednym z najważniejszych technologicznych ujawnień od czasu DeCSS w 1999 roku; jest to zdecydowanie największe wydarzenie w dziedzinie generowanych przez AI obrazów od czasu, gdy kod deepfakes został skopiowany na GitHub i rozgałęziony w DeepFaceLab i FaceSwap, a także w oprogramowanie do transmisji deepfakes w czasie rzeczywistym DeepFaceLive.
Nagle, frustracja użytkowników związana z ograniczeniami zawartości w API syntezowania obrazów DALL-E 2 została rozwiązana, ponieważ okazało się, że filtr NSFW w Stable Diffusion można wyłączyć, zmieniając jedną linię kodu. Szybko powstały subreddit-y poświęcone Stable Diffusion, które równie szybko zostały usunięte, podczas gdy społeczność deweloperów i użytkowników podzieliła się na oficjalne i NSFW społeczności na Discordzie, a Twitter zaczął wypełniać się fantastycznymi tworami Stable Diffusion.
W tym momencie każdy dzień przynosi jakieś niesamowite innowacje od deweloperów, którzy zaadoptowali ten system, z wtyczkami i dodatkami trzecich stron, które są szybko pisane dla Krita, Photoshop, Cinema4D, Blender i wielu innych platform aplikacji.
Tymczasem promptcraft – teraz profesjonalne sztuka “szepnienia AI”, która może okazać się najkrótszą opcją kariery od czasu “Filofax binder” – już jest komercjalizowana, podczas gdy wczesna komercjalizacja Stable Diffusion odbywa się na poziomie Patreon, z pewnością więcej sofistykowanych ofert ma się pojawić, dla tych, którzy nie chcą nawigować w opartych na Conda instalacjach kodu źródłowego lub proskryptywnych filtrów NSFW w wersjach internetowych.
Tempo rozwoju i swobodne poczucie eksploracji ze strony użytkowników postępuje w takim szybkim tempie, że trudno zobaczyć, co się wydarzy dalej. Podstawowo, nie wiemy jeszcze, z czym mamy do czynienia, ani jakie ograniczenia lub możliwości mogą się pojawić.
Jednakże, przyjrzyjmy się trzem z najbardziej interesujących i wyzwaniowych przeszkód, które społeczność Stable Diffusion musi pokonać.
1: Optymalizacja rurociągów opartych na kafelkach
Stable Diffusion nie spełnia swojego nazewnictwa, gdy chodzi o przedstawianie złożoności ludzkich kończyn. Ręce mogą się mnożyć losowo, palce mogą się łączyć, trzecie nogi pojawiają się niespodziewanie, a istniejące kończyny znikają bez śladu. W swojej obronie, Stable Diffusion dzieli ten problem ze swoimi “stabilnymi” odpowiednikami, a także z DALL-E 2.

Ten render 1024×576, rozdzielczość, która jest zwykle niemożliwa w jednym renderze Stable Diffusion, został utworzony przez skopiowanie i wklejenie pliku attention.py z forków DoggettX Stable Diffusion (wersja, która implementuje skalowanie kafelków) do innego forków. Źródło: https://old.reddit.com/r/StableDiffusion/comments/x6yeam/1024x576_with_6gb_nice/
Chociaż niektóre z tych projektów wykorzystują oryginalny kod lub inne biblioteki, port txt2imghd GOBIG (tryb w VRAM-hungry ProgRockDiffusion) ma dostarczyć tę funkcjonalność do głównego gałęzi wkrótce. Podczas gdy txt2imghd jest dedykowanym portem GOBIG, inne wysiłki ze strony deweloperów społeczności obejmują różne implementacje GOBIG.

Abstrakcyjny obraz w oryginalnym renderze 512x512px (po lewej i drugi z lewej); podniesiony przez ESGRAN, który jest teraz bardziej lub mniej rodzimy we wszystkich dystrybucjach Stable Diffusion; i otrzymany ‘specjalną uwagę’ za pomocą implementacji GOBIG, produkując szczegóły, które, przynajmniej w obrębie sekcji obrazu, wydają się lepiej podniesione. Źródło: https://old.reddit.com/r/StableDiffusion/comments/x72460/stable_diffusion_gobig_txt2imghd_easy_mode_colab/
Ten rodzaj abstrakcyjnego przykładu ma wiele “małych królestw” szczegółów, które pasują do tego podejścia do skalowania, ale które mogą wymagać bardziej wyzwaniowych rozwiązań kodowych, aby wytworzyć niepowtarzalne, spójne skalowanie, które nie wygląda jak złożone z wielu części. Nie mniej, w przypadku ludzkich twarzy, gdzie jesteśmy niezwykle wrażliwi na aberracje lub “denerwujące” artefakty. Dlatego twarze mogą wymagać dedykowanego rozwiązania.
Stable Diffusion nie ma obecnie mechanizmu, który pozwalałby na skupienie uwagi na twarzy podczas renderowania w tym samym sposób, w jaki ludzie priorytetowo traktują informacje o twarzy. Chociaż niektórzy deweloperzy w społecznościach Discord rozważają metody implementacji tego rodzaju “wzmocnionej uwagi”, jest to obecnie znacznie łatwiejsze, aby ręcznie (i, ostatecznie, automatycznie) poprawić twarz po initialnym renderowaniu.
Ludzka twarz ma wewnętrzną i kompletną logikę semantyczną, która nie zostanie znaleziona w “kafelku” dolnego rogu (na przykład) budynku, i dlatego jest to obecnie możliwe, aby bardzo skutecznie “przybliżyć” i ponownie wyrenderować “szkicową” twarz w wyjściu Stable Diffusion.

Po lewej, pierwsza próba Stable Diffusion z podpowiedzią ‘Pełnometrażowe kolorowe zdjęcie Christiny Hendricks wchodzącej do zatłoczonego miejsca, ubrana w płaszcz; Canon50, kontakt z oczami, wysoki detal, wysoki detal twarzy’. Po prawej, poprawiona twarz uzyskana przez wprowadzenie rozmytej i szkicowej twarzy z pierwszego renderowania z powrotem do pełnej uwagi Stable Diffusion za pomocą Img2Img (zobacz poniższe obrazy animowane).
W przypadku braku dedykowanego rozwiązania Textual Inversion (zobacz poniżej), to będzie działać tylko wtedy, gdy twarz jest już dobrze reprezentowana w danych LAION, które trenowały Stable Diffusion. Dlatego będzie działać na przykład na Tomie Cruise, Bradzie Pitcie, Jennifer Lawrence i ograniczonej gamie prawdziwych luminarzy mediowych, którzy są obecni w dużej liczbie obrazów w danych źródłowych.

Generowanie wiarygodnego zdjęcia prasowego z podpowiedzią ‘Pełnometrażowe kolorowe zdjęcie Christiny Hendricks wchodzącej do zatłoczonego miejsca, ubrana w płaszcz; Canon50, kontakt z oczami, wysoki detal, wysoki detal twarzy’.
Dla sław z długimi i trwałymi karierami, Stable Diffusion zwykle generuje obraz osoby w starszym wieku (tj. starszym), i będzie konieczne dodanie podpowiedzi, takich jak ‘młody’ lub ‘w roku [ROK]’, aby wytworzyć młodszego wyglądu.

Z powodu wybitnej, dobrze sfotografowanej i spójnej kariery trwającej prawie 40 lat, aktorka Jennifer Connelly jest jedną z nielicznych sław w LAION, które pozwalają Stable Diffusion na reprezentację szeregu wieków. Źródło: prepack Stable Diffusion, lokalne, v1.4 punkt kontrolny; podpowiedzi związane z wiekiem.
To głównie ze względu na rozpowszechnienie cyfrowej (a nie kosztownej, emulsyjnej) fotografii prasowej od połowy 2000 roku i późniejszy wzrost objętości danych obrazowych ze względu na zwiększone prędkości łącza internetowego.

Wydany obraz jest przekazywany do Img2Img w Stable Diffusion, gdzie wybiera się ‘obszar uwagi’ i tworzy nowy, maksymalny render tylko tego obszaru, pozwalając Stable Diffusion na skupienie wszystkich dostępnych zasobów na odtworzeniu twarzy.

Komponowanie ‘wysokiej uwagi’ twarzy z powrotem do oryginalnego renderowania. Poza twarzami, ten proces będzie działał tylko z obiektami, które mają potencjalnie znany, spójny i integralny wygląd, takim jak część oryginalnego zdjęcia, która ma odrębny obiekt, taki jak zegarek lub samochód. Podniesienie sekcji, na przykład, ściany, doprowadzi do bardzo dziwnego wyglądu złożonej ściany, ponieważ renderowanie kafelków nie miało szerszego kontekstu dla tego ‘kawałka układanki’.
Niektóre sławy w bazie danych przychodzą ‘zamrożone’ w czasie, albo dlatego, że zmarły wcześnie (jak Marilyn Monroe), albo dlatego, że osiągnęły tylko przejściową sławę, produkując duże ilości obrazów w ograniczonym czasie. Stable Diffusion może dostarczyć rodzaj “bieżącego” wskaźnika popularności dla nowych i starszych gwiazd. Dla niektórych starszych i obecnych sław nie ma wystarczającej ilości obrazów w danych źródłowych, aby uzyskać bardzo dobre podobieństwo, podczas gdy trwała popularność niektórych dawno zmarłych lub innych znikających gwiazd gwarantuje, że ich rozsądne podobieństwo może być uzyskane z systemu.

Rendery Stable Diffusion szybko ujawniają, które sławne twarze są dobrze reprezentowane w danych treningowych. Pomimo jej ogromnej popularności jako starszej nastolatki w momencie pisania, Millie Bobby Brown była młodsza i mniej znana, gdy zestawy danych źródłowych LAION zostały pobrane z sieci, co utrudnia uzyskanie wysokiej jakości podobieństwa z Stable Diffusion w tym momencie.
Gdzie dane są dostępne, rozwiązania podniesienia oparte na kafelkach w Stable Diffusion mogą się posunąć dalej niż skupienie się na twarzy: mogą potencjalnie umożliwić jeszcze bardziej dokładne i szczegółowe twarze, rozkładając cechy twarzy i skierowując całą siłę lokalnych zasobów GPU na poszczególne cechy, przed ponownym złożeniem – proces, który jest obecnie, ponownie, ręczny.
To nie jest ograniczone do twarzy, ale jest ograniczone do części obiektów, które są co najmniej tak samo przewidywalnie umieszczone w szerszym kontekście obiektu gospodarza i które odpowiadają wysokim poziomom osadzania, które można by rozsądnie oczekiwać w zestawie danych o dużym zakresie.
Prawdziwa granica to ilość dostępnych danych referencyjnych w zestawie danych, ponieważ ostatecznie głęboko iterowane szczegóły staną się całkowicie “halucynowane” (tj. fikcyjne) i mniej autentyczne.
Takie wysokiej jakości powiększenia działają w przypadku Jennifer Connelly, ponieważ jest dobrze reprezentowana w różnym wieku w LAION-aesthetics (podzestaw LAION 5B, który Stable Diffusion używa); ogólnie w LAION; w wielu innych przypadkach dokładność cierpi z powodu braku danych, co wymaga dodatkowego szkolenia (szkolenia dodatkowego, patrz “Dostosowywanie” poniżej) lub Textual Inversion (patrz poniżej).
Kafelki są potężnym i względnie tanim sposobem, aby Stable Diffusion mógł produkować wyjście o wysokiej rozdzielczości, ale algorytmiczne skalowanie kafelków tego rodzaju, jeśli nie ma jakiegoś szerszego, wyższego poziomu mechanizmu uwagi, może nie osiągnąć pożądanych standardów w różnych typach zawartości.
2: Rozwiązywanie problemów z ludzkimi kończynami
Stable Diffusion nie spełnia swojego nazewnictwa, gdy chodzi o przedstawianie złożoności ludzkich kończyn. Ręce mogą się mnożyć losowo, palce mogą się łączyć, trzecie nogi pojawiają się niespodziewanie, a istniejące kończyny znikają bez śladu. W swojej obronie, Stable Diffusion dzieli ten problem ze swoimi “stabilnymi” odpowiednikami, a także z DALL-E 2.

Niededytowane wyniki z DALL-E 2 i Stable Diffusion (1.4) na koniec sierpnia 2022 roku, oba pokazujące problemy z kończynami. Podpowiedź to ‘Kobieta obejmująca mężczyznę’
Fani Stable Diffusion, którzy mają nadzieję, że nadchodzący punkt kontrolny 1.5 (bardziej intensywnie trenowany model z udoskonalonymi parametrami) rozwiąże problem z kończynami, prawdopodobnie będą rozczarowani. Nowy model, który zostanie wydany w ciągu dwóch tygodni, jest obecnie prezentowany na komercyjnym portalu stability.ai DreamStudio, gdzie użytkownicy mogą porównać nowe wyjście z renderami z ich lokalnych lub innych systemów 1.4:

Źródło: lokalny prepack 1.4 i https://beta.dreamstudio.ai/

Źródło: lokalny prepack 1.4 i https://beta.dreamstudio.ai/

Źródło: lokalny prepack 1.4 i https://beta.dreamstudio.ai/
Jak to często bywa, jakość danych może być głównym czynnikiem przyczyniającym się do tego.
Otwarte bazy danych, które zasilają systemy syntezowania obrazów, takie jak Stable Diffusion i DALL-E 2, mogą dostarczyć wiele etykiet dla poszczególnych ludzi i interakcji międzyludzkich. Te etykiety są trenowane wraz z powiązanymi z nimi obrazami lub fragmentami obrazów.

Użytkownicy Stable Diffusion mogą eksplorować pojęcia wytrenowane w modelu, pytając o zestaw danych LAION-aesthetics, podzestaw większego zestawu danych LAION 5B, który napędza system. Obrazy są uporządkowane nie według ich alfabetycznych etykiet, ale według ich ‘estetycznego współczynnika’. Źródło: https://rom1504.github.io/clip-retrieval/
Dobra hierarchia indywidualnych etykiet i klas, które przyczyniają się do przedstawienia ludzkiej ręki, byłaby czymś w rodzaju ciało→ramię→ręka→palce→[podpalce + kciuk]→[segmenty palców]→Paznokcie.

Granularna segmentacja semantyczna części ręki. Nawet ta niezwykle szczegółowa dekonstrukcja pozostawia każdy ‘palec’ jako samodzielną jednostkę, nie uwzględniając trzech sekcji palca i dwóch sekcji kciuka Źródło: https://athitsos.utasites.cloud/publications/rezaei_petra2021.pdf
W rzeczywistości obrazy źródłowe są nieprawdopodobnie spójnie opisane w całym zestawie danych, a algorytmy etykietowania niezależnego będą prawdopodobnie zatrzymywać się na wyższym poziomie – na przykład na ‘ręce’, i pozostawią wewnętrzne piksele (które technicznie zawierają ‘informację o palcu’) jako nieopisaną masę pikseli, z której funkcje będą arbitralnie pochodne, i które mogą manifestować się w późniejszych renderach jako denerwujący element.

Jak to powinno być (górny prawy, jeśli nie górny cięcie), a jak to się dzieje (dolny prawy), ze względu na ograniczone zasoby do etykietowania, lub architektoniczne wykorzystywanie takich etykiet, jeśli istnieją one w zestawie danych.
W ten sposób, jeśli model latentny dociera do renderowania ramienia, prawdopodobnie spróbuje również renderować rękę na końcu tego ramienia, ponieważ ramię→ręka jest minimalną wymaganą hierarchią, dość wysoko w tym, co architektura wie o ‘ludzkiej anatomii’.
Po tym ‘palce’ mogą być najmniejszą grupą, chociaż istnieją 14 dalszych podziałów palców/palców, które należy wziąć pod uwagę przy przedstawianiu ludzkich rąk.
Jeśli ta teoria się utrzyma, nie ma realnego rozwiązania, ze względu na branżowe braki budżetowe na ręczne etykietowanie, oraz brak wystarczająco skutecznych algorytmów, które mogłyby zautomatyzować etykietowanie przy niskich stopach błędów. W efekcie model może obecnie polegać na ludzkiej anatomii, aby zatuszować braki w zestawie danych, na którym został wytrenowany.
Jeden z możliwych powodów, dlaczego nie może polegać na tym, niedawno zaproponowany na Discordzie Stable Diffusion, jest to, że model może się pomylić co do prawidłowej liczby palców, jaką powinna mieć (realistyczna) ludzka ręka, ponieważ baza danych LAION, która napędza go, zawiera postacie z cartoon, które mogą mieć mniej palców (co jest samo w sobie oszczędnością pracy).

Dwa z potencjalnych winowajców w ‘zespole brakujących palców’ w Stable Diffusion i podobnych modelach. Poniżej, przykłady rąk z zestawu danych LAION-aesthetics, który napędza Stable Diffusion. Źródło: https://www.youtube.com/watch?v=0QZFQ3gbd6I
Jeśli to prawda, to jedyne oczywiste rozwiązanie to ponowne wytrenowanie modelu, wykluczając nierzeczywiste treści oparte na ludziach, zapewniając, że prawdziwe przypadki pominięcia (tj. amputacje) są odpowiednio oznaczone jako wyjątki. Z punktu widzenia kuracji danych byłoby to dość wyzwaniem, szczególnie dla społeczności o ograniczonych zasobach.
Druga podejście byłoby zastosowanie filtrów, które wykluczają takie treści (tj. ‘ręka z trzema/pięcioma palcami’) z manifestowania się w czasie renderowania, w podobny sposób, w jaki OpenAI zfiltrował GPT-3 i DALL-E 2, aby ich wyjście mogło być regulowane bez potrzeby ponownego wytrenowania modeli źródłowych.

Dla Stable Diffusion, semantyczne rozróżnienie między palcami a nawet kończynami może stać się okropnie rozmyte, przypominając 80-letni nurt ‘horroru ciała’ w filmach z takimi twórcami, jak David Cronenberg. Źródło: https://old.reddit.com/r/StableDiffusion/comments/x6htf6/a_study_of_stable_diffusions_strange_relationship/
Mogłoby się wydawać, że są dwie pozostałe drogi do przodu: rzucenie więcej danych na problem i zastosowanie systemów interpretacyjnych trzecich stron, które mogą interweniować, gdy tego rodzaju fizyczne błędy są prezentowane użytkownikowi końcowemu (przynajmniej w tym przypadku, dawałoby to OpenAI sposób, aby zapewnić zwroty pieniędzy za ‘horror ciała’ rendery, jeśli firma była zmotywowana do tego).
3: Dostosowywanie
Jedną z najbardziej ekscytujących możliwości dla przyszłości Stable Diffusion jest perspektywa, że użytkownicy lub organizacje będą rozwijać zmodyfikowane systemy; modyfikacje, które pozwalają na integrację treści spoza wstępnie wytrenowanego zakresu LAION – idealnie bez niekontrolowanego wydatku na ponowne wytrenowanie całego modelu lub ryzyka związanego z wytrenowaniem dużej ilości nowych obrazów w istniejącym, dojrzałym i zdolnym modelu.
Przez analogię: jeśli dwóch mniej utalentowanych uczniów dołącza do zaawansowanej klasy trzydziestu uczniów, albo się asymilują i dogonią, albo zawiodą jako outsiders; w każdym przypadku średnia ocen całej klasy prawdopodobnie nie zostanie dotknięta. Jeśli piętnastu mniej utalentowanych uczniów dołączy, jednak, krzywa ocen dla całej klasy prawdopodobnie ucierpi.
Podobnie, synergistyczna i dość delikatna sieć relacji, które są budowane podczas długiego i kosztownego szkolenia modelu, mogą być naruszone, a nawet skutecznie zniszczone, przez nadmiar nowych danych, obniżając jakość wyjścia modelu w ogóle.
Przypadek dla robienia tego jest głównie tam, gdzie twoje zainteresowanie leży w całkowitym przejęciu pojęciowego zrozumienia relacji i rzeczy, i ich przejęciu na wyłączną produkcję treści, które są podobne do dodatkowych materiałów, które dodałeś.
Na przykład, wytrenowanie 500 000 klatek Simpsonów w istniejący punkt kontrolny Stable Diffusion może ostatecznie dać lepszy symulator Simpsonów niż oryginalna wersja, zakładając, że wystarczająco szerokie relacje semantyczne przetrwają proces (tj. Homer Simpson jedzący hot-doga, co może wymagać materiału o hot-dogach, których nie było w twoich dodatkowych materiałach, ale już istniał w punkcie kontrolnym), i zakładając, że nie chcesz nagle przełączyć się z treści Simpsonów do tworzenia fantastycznych pejzaży Grega Rutkowskiego – ponieważ twój model po wytrenowaniu miał swoją uwagę ogromnie rozproszoną i nie będzie tak dobry w robieniu tego rodzaju rzeczy, jak dawniej.
Jeden godny uwagi przykład jest waifu-diffusion, który z powodzeniem wytrenował 56 000 obrazów anime w wytrenowany i ukończony punkt kontrolny Stable Diffusion. Jest to trudne dla hobbysty, ponieważ model wymaga minimalnie 30 GB pamięci VRAM, co jest znacznie więcej, niż to, co prawdopodobnie będzie dostępne na poziomie konsumenta w nadchodzących wydaniach serii 40XX od Nvidii.

Wytrenowanie niestandardowych treści w Stable Diffusion za pomocą waifu-diffusion: model potrzebował dwóch tygodni ponownego szkolenia, aby wyprodukować ten poziom ilustracji. Sześć obrazów po lewej stronie pokazuje postęp modelu w tworzeniu spójnych wyjść na podstawie nowych danych treningowych. Źródło: https://gigazine.net/gsc_news/en/20220121-how-waifu-labs-create/
Dużo wysiłku może być włożone w takie ‘forki’ punktów kontrolnych Stable Diffusion, tylko po to, aby zostać powstrzymanym przez dług techniczny. Deweloperzy na oficjalnym Discordzie już wskazali, że późniejsze wydania punktów kontrolnych nie będą koniecznie kompatybilne wstecz, nawet z logiką podpowiedzi, która działała z poprzednią wersją, ponieważ ich główny interes leży w uzyskaniu najlepszego modelu, a nie w wspieraniu aplikacji i procesów legacy.
Dlatego firma lub osoba, która decyduje się na rozwidlenie punktu kontrolnego w produkt komercyjny, skutecznie nie ma już drogi powrotu; ich wersja modelu jest w tym momencie ‘twardym forkami’, i nie będzie mogła czerpać korzyści z późniejszych wydań od stability.ai – co jest dość zobowiązaniem.
Bieżąca i większa nadzieja na dostosowanie Stable Diffusion to Textual Inversion, gdzie użytkownik trenuje garstkę CLIP-współliniowych obrazów.

Współpraca między Uniwersytetem w Tel Awiwie a Nvidią, textual inversion pozwala na wytrenowanie dyskretnych i nowych jednostek, bez niszczenia możliwości modelu źródłowego. Źródło: https://textual-inversion.github.io/
Główną widoczną ograniczeniem textual inversion jest to, że zalecana jest bardzo niska liczba obrazów – tylko pięć. To skutecznie produkuje ograniczoną jednostkę, która może być bardziej przydatna do zadań transferu stylu niż do wstawiania fotorealistycznych obiektów.
Pomimo tych ograniczających czynników, eksperymenty są obecnie prowadzone w ramach różnych społeczności Discord Stable Diffusion, które wykorzystują znacznie większą liczbę obrazów treningowych, i pozostaje to zobaczyć, jak produktywny może okazać się ten sposób. Ponownie, technika wymaga dużej ilości VRAM, czasu i cierpliwości.
Z powodu tych ograniczających czynników, możemy musieć poczekać, aż zobaczymy niektóre bardziej sofistykowane eksperymenty z textual inversion od entuzjastów Stable Diffusion – i czy ten podejście może ‘wstawić cię w obraz’ w sposób, który wygląda lepiej niż Photoshop cut-and-paste, jednocześnie zachowując zdumiewającą funkcjonalność oficjalnych punktów kontrolnych.
Pierwotnie opublikowane 6 września 2022.













