ComfyUI krok po kroku: jak stworzyć pierwszy workflow do generowania obrazów AI
Zbuduj pierwszy workflow w ComfyUI: od wczytania modelu i połączenia węzłów po zapis gotowego obrazu AI. Poznaj ustawienia KSampler, wypróbuj prompty realistyczne i ilustracyjne oraz sprawdź, jak poprawiać wyniki i rozwiązywać typowe problemy.
1. Wprowadzenie: co zbudujemy i czego potrzebujesz
Zaczniemy od najprostszego scenariusza: wpisujesz opis, a model generuje na jego podstawie obraz i zapisuje go do pliku. Zbudujemy podstawowy workflow text-to-image w ComfyUI, bez obrazów referencyjnych, dodatkowych modeli i narzędzi do powiększania. Taki układ pozwoli zrozumieć, skąd bierze się wynik i za co odpowiadają poszczególne elementy procesu.
Na potrzeby tego przewodnika przyjmujemy klasyczny workflow dla Stable Diffusion 1.5 lub SDXL. To ważne, ponieważ nie każdy model do generowania obrazów korzysta z identycznego zestawu komponentów. Modele z innych rodzin mogą wymagać innego sposobu ładowania, kodowania tekstu i przygotowania danych.
ComfyUI — środowisko do układania procesu generowania
ComfyUI to interfejs, w którym proces tworzenia obrazu przedstawiasz jako połączone węzły. Każdy z nich wykonuje określone zadanie, na przykład wczytuje model albo przetwarza tekst. Cały taki układ nazywamy workflow. Zamiast korzystać wyłącznie z gotowego formularza ustawień, masz dostęp do elementów składających się na generowanie.
Do rozpoczęcia pracy potrzebujesz działającego ComfyUI: uruchomionego lokalnie lub udostępnionego na zdalnej maszynie. Interfejs otwierasz w przeglądarce, ale obliczenia wykonuje komputer, na którym działa aplikacja. Przy pracy lokalnej karta graficzna znacznie przyspiesza generowanie; zapotrzebowanie na pamięć zależy między innymi od modelu i rozmiaru obrazu. SD 1.5 jest zwykle mniej wymagający sprzętowo niż SDXL, dlatego sprawdza się jako punkt startowy na słabszym sprzęcie.
Checkpoint i VAE — dwa różne zadania
Checkpoint to plik zawierający wyuczone wagi modelu. Wybór checkpointu wpływa na charakter rezultatów: niektóre modele są bardziej uniwersalne, inne dostrojono pod fotografie, ilustracje lub konkretną estetykę. Na początek wystarczy jeden checkpoint zgodny z SD 1.5 albo SDXL, pobrany z wiarygodnego źródła. Sprawdź jego opis, rodzinę modelu i warunki licencji. W standardowej instalacji plik umieszcza się w katalogu ComfyUI/models/checkpoints.
VAE odpowiada za przejście między skompresowaną reprezentacją obrazu a widocznymi pikselami. W naszym workflow wykorzystamy go do zamiany wyniku generowania na zwykły obraz. Wiele checkpointów SD 1.5 i SDXL zawiera już potrzebne wagi VAE, więc osobne pobieranie tego komponentu często nie jest konieczne. Jeśli autor modelu zaleca zewnętrzny VAE, wybierz zgodny z danym modelem; nie traktuj tych plików jako dowolnie wymiennych.
Podstawowe pojęcia, które warto znać przed startem
- Prompt — tekst opisujący oczekiwany obraz: temat, otoczenie, styl czy oświetlenie.
- Negative prompt — opis cech, od których model ma się oddalać. Jest wskazówką, a nie gwarantowaną listą zakazów.
- Enkoder tekstu, np. CLIP — komponent przekształcający prompt w reprezentację wykorzystywaną przez model.
- Latent — skompresowana reprezentacja, w której odbywa się właściwe generowanie. Nie jest jeszcze gotowym obrazem do wyświetlenia.
Na start przygotuj więc działające ComfyUI, jeden odpowiedni checkpoint i dostępny, zgodny VAE — wbudowany w checkpoint lub osobny. Dodatkowe rozszerzenia i niestandardowe węzły nie są potrzebne do zbudowania tego podstawowego workflow.
Zerowy workflow w ComfyUI: przegląd interfejsu i zasada działania węzłów
Workflow w ComfyUI najlepiej czytać jak schemat przepływu danych: skąd pochodzą, co dzieje się z nimi po drodze i dokąd trafia wynik. Zamiast jednego formularza ustawień masz przed sobą graf, czyli węzły połączone przewodami. Każdy węzeł odpowiada za określone zadanie, a połączenia pokazują zależności między zadaniami.
W Cognity często słyszymy pytania, jak praktycznie podejść do budowania workflow w ComfyUI — odpowiadamy na nie także na blogu, zaczynając od zasad działania węzłów i połączeń między nimi. Na tym etapie nie musisz jeszcze uruchamiać generowania. Celem jest zrozumienie przestrzeni roboczej — tak, aby późniejsze łączenie elementów wynikało z ich funkcji, a nie z odtwarzania układu ze zrzutu ekranu.
Co widzisz w przestrzeni roboczej?
Najważniejszą częścią interfejsu jest obszar grafu, nazywany też płótnem. To tutaj znajdują się węzły. Możesz przesuwać widok, przybliżać go i oddalać oraz zmieniać położenie poszczególnych elementów. Ich rozmieszczenie służy czytelności: przesunięcie węzła w inne miejsce samo w sobie nie zmienia działania workflow.
W zależności od wersji ComfyUI i konfiguracji po uruchomieniu możesz zobaczyć pusty obszar albo już załadowany graf. Wokół płótna znajdują się narzędzia do obsługi workflow, uruchamiania zadań i sprawdzania kolejki. Ich położenie oraz nazwy przycisków mogą się różnić między wersjami interfejsu. Przycisk uruchomienia zleca wykonanie grafu; samo przesuwanie węzłów czy edytowanie pól nie oznacza jeszcze rozpoczęcia generowania.
Jak czytać pojedynczy węzeł?
Węzeł ma nazwę opisującą jego rolę oraz elementy, przez które przyjmuje dane, udostępnia wyniki lub pozwala zmienić ustawienia. Warto od początku rozróżniać trzy rzeczy:
- Wejścia — zwykle widoczne po lewej stronie. Odbierają dane z innych węzłów, na przykład model lub reprezentację obrazu.
- Wyjścia — zwykle po prawej stronie. Udostępniają rezultat pracy węzła kolejnym elementom grafu. Jeden wynik może być przekazany do kilku odbiorców.
- Pola ustawień — znajdują się wewnątrz węzła. Służą między innymi do wpisywania tekstu, wybierania pliku lub ustawiania wartości liczbowych.
Pole ustawienia i wejście nie są tym samym: w pierwszym podajesz wartość bezpośrednio, a przez drugie dostarczasz ją z innego elementu grafu. Niektóre pola można przekształcić w wejścia, ale na początku wystarczy rozpoznawać tę różnicę.
Połączenia muszą pasować typem danych
Przewód łączy wyjście jednego węzła z wejściem drugiego. Nie jest jednak dowolną linią między dwoma prostokątami. Łączone gniazda muszą obsługiwać zgodne typy danych. Pomagają w tym oznaczenia i kolory gniazd, choć sam kolor nie powinien zastępować sprawdzenia typu.
Przykładowo IMAGE oznacza dane obrazu w postaci pikselowej, natomiast LATENT — jego reprezentację w przestrzeni ukrytej, wykorzystywaną podczas generowania. Nie można traktować ich zamiennie. Podobnie zwykły tekst promptu nie jest tym samym co CONDITIONING, czyli informacja przygotowana do sterowania generowaniem. Właśnie dlatego graf zawiera również węzły przekształcające dane z jednej postaci w drugą.
Co decyduje o kolejności wykonania?
ComfyUI ustala kolejność pracy na podstawie połączeń, a nie pozycji elementów na ekranie. Węzeł może wykonać swoje zadanie dopiero wtedy, gdy otrzyma wymagane dane. Graf często układa się od lewej do prawej, ponieważ łatwiej go wtedy czytać, lecz jest to konwencja porządkowa, nie reguła działania programu.
Nie każdy widoczny węzeł musi zostać wykonany. Znaczenie mają zależności prowadzące do węzłów wyjściowych, takich jak zapis lub podgląd obrazu. Element pozostawiony obok, bez połączenia z wykonywaną częścią grafu, nie wpłynie na rezultat. Przy czytaniu workflow śledź więc przewody: sprawdzaj, co zasila dany węzeł i kto odbiera jego wynik. To znacznie pewniejsza wskazówka niż miejsce zajmowane przez niego na płótnie.
3. Budowa pierwszego workflow krok po kroku: dodawanie i łączenie węzłów
Zbudujmy podstawowy workflow text-to-image, czyli generowanie obrazu na podstawie opisu tekstowego. Poniższy układ działa z klasycznymi checkpointami Stable Diffusion 1.5 oraz SDXL; nie jest uniwersalnym schematem dla wszystkich rodzin modeli. Na tym etapie potrzebujesz checkpointu dostępnego w ComfyUI, który udostępnia model, enkoder tekstu CLIP i VAE.
Na pustym obszarze roboczym kliknij dwukrotnie, aby otworzyć wyszukiwarkę węzłów. Wyszukuj je po nazwach podanych poniżej. Cały workflow będzie składał się z siedmiu węzłów — w tym dwóch osobnych węzłów do kodowania tekstu.
Krok 1. Dodaj Load Checkpoint i wybierz model
Wyszukaj Load Checkpoint i umieść go po lewej stronie obszaru roboczego. W polu ckpt_name wybierz zainstalowany checkpoint. Ten węzeł udostępnia trzy wyjścia, które wykorzystasz w różnych częściach workflow:
- MODEL — podłączysz do samplera odpowiedzialnego za generowanie obrazu w przestrzeni latentnej.
- CLIP — zasili oba węzły przetwarzające opisy tekstowe.
- VAE — posłuży do przekształcenia wyniku generowania w widoczny obraz.
W tym wariancie korzystasz z VAE dostępnego przez Load Checkpoint, więc nie dodawaj osobnego węzła do jego wczytywania.
Krok 2. Dodaj dwa węzły CLIP Text Encode
Wyszukaj CLIP Text Encode (Prompt) i dodaj go dwukrotnie. Jeden egzemplarz będzie przetwarzał prompt pozytywny, a drugi — negatywny. To ten sam typ węzła: o jego roli decyduje późniejsze połączenie z odpowiednim wejściem samplera.
Przeciągnij połączenie z wyjścia CLIP w Load Checkpoint do wejścia clip pierwszego enkodera. Następnie z tego samego wyjścia poprowadź drugie połączenie do wejścia clip drugiego enkodera. Jedno wyjście może zasilać kilka węzłów.
W pierwszym polu tekstowym wpisz krótki opis tego, co chcesz wygenerować. Drugie pole służy do wskazywania niepożądanych cech obrazu; podczas testowania połączeń możesz pozostawić je puste. Dla czytelności ustaw prompt pozytywny nad negatywnym lub odpowiednio zmień tytuły węzłów. Oba enkodery zwracają dane typu CONDITIONING, a nie gotowy obraz.
Krok 3. Dodaj Empty Latent Image
Dodaj Empty Latent Image i umieść go poniżej enkoderów tekstu. Węzeł określa wymiary oraz liczbę obrazów, które mają powstać. Nie wczytuje zdjęcia wejściowego — przygotowuje pustą reprezentację latentną dla procesu generowania.
Ustaw szerokość i wysokość odpowiednio do wybranego modelu, a batch_size ustaw na 1, aby pierwsze uruchomienie dotyczyło jednego obrazu. Ten węzeł nie wymaga żadnych połączeń wejściowych. Jego wyjście LATENT podłączysz do KSamplera.
Krok 4. Dodaj KSampler i podłącz cztery wejścia
Wyszukaj KSampler i ustaw go na prawo od dotychczas dodanych węzłów. To tutaj zbiegają się model, oba opisy tekstowe i początkowy latent. Wykonaj połączenia zgodnie z tabelą:
| Węzeł źródłowy | Wyjście | Wejście w KSampler |
|---|---|---|
| Load Checkpoint | MODEL | model |
| CLIP Text Encode z promptem pozytywnym | CONDITIONING | positive |
| CLIP Text Encode z promptem negatywnym | CONDITIONING | negative |
| Empty Latent Image | LATENT | latent_image |
Sprawdź szczególnie wejścia positive i negative. Mają ten sam typ danych, więc interfejs pozwoli je zamienić, ale znaczenie opisów będzie wtedy odwrotne do zamierzonego. Na razie nie dostrajaj parametrów samplera; w tym workflow generującym obraz od zera pozostaw denoise na wartości 1.0.
Krok 5. Dodaj VAE Decode
Wynik KSamplera nadal jest latentem, dlatego nie można podłączyć go bezpośrednio do zapisu obrazu. Dodaj VAE Decode i wykonaj dwa połączenia:
- wyjście
LATENTz KSampler → wejściesamplesw VAE Decode; - wyjście
VAEz Load Checkpoint → wejścievaew VAE Decode.
Dekoder zamieni reprezentację latentną w dane obrazu. Na jego wyjściu otrzymasz typ IMAGE, który można już wyświetlić i zapisać.
Krok 6. Dodaj Save Image i uruchom workflow
Dodaj Save Image, a następnie połącz wyjście IMAGE z VAE Decode z wejściem images węzła zapisu. Pole filename_prefix możesz pozostawić bez zmian. W standardowej konfiguracji plik trafi do katalogu ComfyUI/output.
Przed uruchomieniem sprawdź, czy KSampler ma wszystkie cztery połączenia wejściowe, VAE Decode otrzymuje zarówno latent, jak i VAE, a Save Image jest podłączony do dekodera. Następnie kliknij przycisk uruchomienia — zależnie od wersji interfejsu oznaczony jako Run lub Queue Prompt. Po zakończeniu obliczeń podgląd pojawi się przy węźle Save Image, a wygenerowany obraz zostanie zapisany na dysku.
4. Ustawienia KSampler i ich wpływ na rezultat
KSampler odpowiada za odszumianie obrazu w przestrzeni latentnej: korzysta z modelu oraz zakodowanych promptów, aby stopniowo przekształcić początkowy szum w uporządkowaną kompozycję. Jego ustawienia wpływają na czas generowania, interpretację opisu i wygląd detali. Większe wartości nie oznaczają automatycznie lepszego obrazu — najważniejsze jest dopasowanie parametrów do checkpointu.
W Cognity omawiamy dobór tych ustawień zarówno od strony technicznej, jak i praktycznej — pokazując, jak poszczególne parametry wpływają na rezultat i czas pracy.
Rozmiar obrazu: ustawiany poza KSampler
W tym workflow szerokość i wysokość określasz w węźle Empty Latent Image, w polach width i height. KSampler otrzymuje już latent o wybranych wymiarach. Rozdzielczość wpływa nie tylko na liczbę pikseli, lecz także na kompozycję, zużycie pamięci GPU i czas obliczeń.
Dla standardowych modeli SD 1.5 bezpiecznym punktem startowym jest 512 × 512 px, a dla SDXL — 1024 × 1024 px. Zachowuj wymiary podzielne przez 8 i uwzględniaj zalecenia autora checkpointu. Duże zwiększenie rozdzielczości względem tej, do której model został przystosowany, nie zastępuje skalowania obrazu: może prowadzić do powielania obiektów lub zaburzeń proporcji.
Steps: ile kroków odszumiania wykona model
Parametr steps określa liczbę kroków procesu generowania. Zbyt mała wartość może pozostawić niedopracowane kształty i detale. Zwiększanie liczby kroków pomaga jednak tylko do pewnego momentu — później zysk bywa niewielki, choć czas obliczeń nadal rośnie.
Dla standardowych checkpointów SD 1.5 i SDXL zacznij od 20–30 kroków. Nie traktuj 50 czy 100 kroków jako obowiązkowego ustawienia jakościowego. Modele przyspieszone, takie jak warianty Turbo, Lightning lub LCM, wymagają odrębnych ustawień i często znacznie mniejszej liczby kroków.
CFG: siła prowadzenia przez prompt
CFG, czyli Classifier-Free Guidance, reguluje siłę prowadzenia generacji przez warunkowanie tekstowe. Niższa wartość daje modelowi większą swobodę, ale może osłabić zgodność z opisem. Wyższa zwykle mocniej akcentuje wskazówki z promptu, lecz nie gwarantuje poprawnej realizacji każdego szczegółu.
Na początek sprawdź CFG 7 dla SD 1.5 albo CFG 5–6 dla SDXL. Nadmierne podnoszenie tego parametru może powodować nienaturalny kontrast, przesycone kolory i szorstkie detale. To zakresy orientacyjne dla standardowych modeli, nie uniwersalna reguła dla wszystkich checkpointów.
Sampler i scheduler: sposób oraz przebieg odszumiania
Pole sampler_name wybiera algorytm odszumiania. scheduler określa natomiast rozkład poziomów szumu pomiędzy kolejnymi krokami. Te ustawienia współpracują, ale pełnią różne funkcje.
- euler + normal — prosty, dobry zestaw odniesienia do pierwszych prób.
- dpmpp_2m + karras — popularny punkt startowy dla standardowych SD 1.5 i SDXL, często zapewniający dobry kompromis między jakością a czasem generowania.
- euler_ancestral — wariant wprowadzający dodatkowy szum w trakcie odszumiania; może dawać inny charakter detali i wyraźniejsze zmiany przy zmianie liczby kroków.
Nie istnieje jeden najlepszy zestaw dla każdego modelu. Jeśli autor checkpointu wskazuje konkretny sampler i scheduler, zacznij od jego rekomendacji.
Seed i denoise: punkt wyjścia oraz zakres odszumiania
Seed to liczba inicjująca losowość generowania, w tym początkowy szum. Nie jest ustawieniem jakości: większy seed nie daje lepszego obrazu. Na potrzeby pierwszych prób możesz wpisać dowolną stałą wartość, na przykład 12345. Ten sam seed przy niezmienionym workflow i środowisku pozwala zwykle odtworzyć wynik; różnice sprzętowe lub programowe mogą wpływać na dokładną zgodność.
W opisanym workflow tekst–obraz pozostaw denoise = 1.0, czyli pełny zakres odszumiania. Niższe wartości stosuje się przede wszystkim przy pracy z istniejącym obrazem lub latentem — nie są sposobem na podniesienie jakości generacji z pustego latentu.
Praktyczne ustawienia na pierwszy obraz
| Parametr | Standardowy SD 1.5 | Standardowy SDXL |
|---|---|---|
| Rozmiar w Empty Latent Image | 512 × 512 px | 1024 × 1024 px |
| Steps | 25 | 30 |
| CFG | 7 | 5,5 |
| Sampler | dpmpp_2m | dpmpp_2m |
| Scheduler | karras | karras |
| Seed | 12345 | 12345 |
| Denoise | 1.0 | 1.0 |
To ustawienia startowe, a nie sztywny przepis. Wymagania konkretnego checkpointu mają pierwszeństwo, szczególnie jeśli korzystasz z modelu zoptymalizowanego do generowania w kilku krokach.
5. Przykładowe prompty: realistyczny, ilustracyjny i negative prompt
Dobry prompt opisuje nie tylko to, co ma znaleźć się na obrazie, ale też sposób przedstawienia sceny. Na początek wystarczy określić temat, otoczenie, kadr, światło i styl. Poniższe przykłady pokazują tę samą postać w podobnym ujęciu — dzięki temu łatwiej zauważyć, jak język fotografii i ilustracji zmienia charakter obrazu.
Opis wybranego wariantu wklej do węzła CLIP Text Encode obsługującego prompt pozytywny. Przykłady są po angielsku, ponieważ wiele popularnych checkpointów Stable Diffusion dobrze reaguje na angielskie opisy. Nie oznacza to, że polskie prompty nie zadziałają; ich skuteczność zależy od modelu.
Prompt realistyczny: portret w naturalnym świetle
photorealistic portrait of an adult woman with short brown hair, wearing a green wool sweater, sitting beside a cafe window, medium close-up, eye-level view, soft overcast daylight, natural skin texture, subtle facial expression, muted colors, shallow depth of field, softly blurred backgroundTen opis kieruje model w stronę fotografii: wskazuje naturalną fakturę skóry, miękkie światło dzienne oraz niewielką głębię ostrości. Sprawdzi się jako punkt wyjścia do portretów i wizualizacji o charakterze lifestyle’owym. Zamiast ogólnego „piękne zdjęcie” zawiera konkretne wskazówki dotyczące wyglądu sceny.
Aby uzyskać bardziej filmowy efekt, zastąp soft overcast daylight frazą cinematic side lighting, a muted colors zmień na warm highlights and cool shadows. Jeśli zależy Ci na estetyce studyjnej, zamień otoczenie kawiarni na plain studio background, a światło na soft studio lighting. Zastępuj sprzeczne wskazówki, zamiast dopisywać kolejne — światło pochmurnego dnia i mocne studyjne oświetlenie mogą niepotrzebnie konkurować ze sobą.
Prompt ilustracyjny: ta sama scena jako ilustracja redakcyjna
editorial illustration of an adult woman with short brown hair, wearing a green sweater, sitting beside a cafe window, medium close-up, eye-level view, simplified shapes, clean expressive outlines, flat color areas, limited palette of forest green, cream and terracotta, subtle paper texture, calm moodW tym wariancie fotograficzne cechy zastępują uproszczone kształty, kontury i ograniczona paleta. To dobry kierunek dla ilustracji do artykułów, materiałów edukacyjnych czy grafik towarzyszących treściom w mediach społecznościowych. Prompt określa sposób rysowania, zamiast oczekiwać, że samo słowo „ilustracja” wystarczy do uzyskania spójnej estetyki.
Zmianę stylu najlepiej oprzeć na konkretnym medium lub sposobie wykonania:
- Akwarela: zastąp clean expressive outlines, flat color areas opisem watercolor washes, soft edges, visible paper grain.
- Komiks: użyj bold ink outlines, cel shading, high contrast zamiast delikatnej faktury papieru i płaskich plam koloru.
- Ilustracja przypominająca grafikę wektorową: wybierz geometric shapes, crisp edges, solid colors, no texture. Taki opis wpływa na wygląd, ale nie zmienia wygenerowanego obrazu w plik wektorowy.
Przykładowy negative prompt: czego unikać
W standardowym workflow z checkpointem Stable Diffusion negative prompt służy do wskazania niepożądanych cech. Wklej go do osobnego węzła CLIP Text Encode przeznaczonego na opis negatywny:
low quality, distorted face, misaligned eyes, duplicate person, malformed hands, extra fingers, missing fingers, unwanted text, watermark, logoTo propozycja startowa, nie obowiązkowa lista ani gwarancja usunięcia błędów. W ciasnym portrecie bez widocznych dłoni fragmenty dotyczące palców są zbędne. Jeśli napis lub logo ma być częścią sceny, usuń odpowiadające mu wykluczenie.
Negative prompt powinien wspierać wybrany styl, a nie mu przeczyć. Do wariantu fotograficznego możesz dodać cartoon, illustration, plastic skin. Przy ilustracji takie wykluczenia byłyby nietrafione; jeśli model nadmiernie zmierza w stronę zdjęcia, przydatne może być photorealistic, photographic. Unikaj też automatycznego dodawania blurry, gdy celowo prosisz o miękko rozmyte tło. Rezultat zależy zarówno od treści promptu, jak i możliwości checkpointu — model wyspecjalizowany w ilustracji nie musi dobrze odtwarzać fotograficznej skóry.
6. Iteracja i kontrola wyników: warianty, powtarzalność i zapisywanie workflow
Pierwszy udany obraz warto potraktować jako punkt odniesienia. Zapisz workflow, zachowaj wynik i dopiero wtedy zacznij wprowadzać zmiany. Dzięki temu porównasz kolejne wersje z konkretnym wzorcem, zamiast próbować odtworzyć ustawienia z pamięci.
Warianty obrazu: zmieniaj jeden element naraz
Najprostsza metoda kontrolowanej iteracji polega na zmianie tylko jednego elementu między generacjami. Jeśli sprawdzasz wpływ oświetlenia opisanego w prompcie, pozostaw bez zmian model, seed i pozostałe ustawienia. Jeśli szukasz innej kompozycji, zmieniaj seed przy niezmienionym prompcie. Nie gwarantuje to zachowania wszystkich szczegółów obrazu, ale ułatwia ocenę, z czego wynika różnica.
Rozdziel pracę na dwa tryby: poszukiwanie, w którym generujesz różnorodne propozycje, oraz dopracowanie, w którym porównujesz niewielkie zmiany względem wybranego wyniku. W pierwszym liczy się wybór dobrego kierunku; w drugim — możliwość rzetelnego porównania.
Seed: jak wrócić do tego samego wyniku
Seed określa punkt wyjścia do wygenerowania szumu, od którego rozpoczyna się generacja. W standardowym workflow z węzłem KSampler ustaw control_after_generate na fixed, aby wartość nie zmieniała się po każdym wykonaniu. Tryb randomize przydaje się do szukania nowych wariantów, natomiast increment i decrement pozwalają kolejno zwiększać lub zmniejszać seed. Sąsiednie wartości nie oznaczają jednak podobnych obrazów.
Sam seed nie wystarcza do odtworzenia rezultatu. Potrzebne są także te same prompty, pliki modelu i VAE, ustawienia generacji oraz układ workflow. Najpewniejszą powtarzalność uzyskasz w tym samym środowisku. Zmiany wersji ComfyUI, bibliotek, dodatkowych węzłów lub sprzętu mogą wprowadzać różnice, nawet jeśli zapisane parametry pozostaną identyczne.
Batch a kolejne wykonania workflow
W prostym workflow parametr batch_size w Empty Latent Image pozwala przygotować kilka obrazów w jednym wykonaniu. To wygodny sposób na przegląd wariantów przy wspólnych ustawieniach. Większy batch zwiększa jednak zapotrzebowanie na pamięć GPU, dlatego na początek warto sprawdzić niewielką serię, na przykład 2–4 obrazy.
| Metoda | Kiedy ją wybrać | Na co uważać |
|---|---|---|
| Batch w jednym wykonaniu | Gdy chcesz szybko porównać kilka propozycji o wspólnych parametrach. | Wymaga więcej pamięci; zachowaj rozmiar batcha i pozycję wybranego obrazu, jeśli chcesz odtworzyć serię. |
| Kolejne wykonania z batch_size = 1 | Gdy zależy Ci na mniejszym zużyciu pamięci i osobnym zapisie ustawień każdej próby. | Przy stałym seedzie i niezmienionych ustawieniach będziesz odtwarzać ten sam wynik, zamiast uzyskiwać nowe warianty. |
Nie zakładaj, że drugi obraz z batcha można odtworzyć pojedynczo przez wpisanie wartości seed + 1. Generowanie szumu dla całej serii nie musi odpowiadać takiej sekwencji osobnych uruchomień.
Presety i eksport: zapisuj konfigurację, nie tylko obraz
Rolę presetu najprościej może pełnić zapisany workflow w pliku JSON. Zachowuje on węzły, połączenia i ich ustawienia, więc nadaje się zarówno jako kopia udanej konfiguracji, jak i szablon kolejnych prób. Korzystaj z zapisu lub eksportu workflow dostępnego w swojej wersji interfejsu. Zwykły JSON workflow służy do dalszej pracy w edytorze; format API jest przeznaczony przede wszystkim do automatycznego uruchamiania generacji.
Standardowy węzeł Save Image domyślnie zapisuje w plikach PNG metadane, które mogą zawierać workflow. Taki obraz można przeciągnąć do ComfyUI, aby wczytać zapisaną konfigurację. Nie traktuj jednak PNG jako jedynej kopii: wyłączone metadane, obróbka pliku lub publikacja w serwisie internetowym mogą pozbawić go tych informacji. Plik JSON przechowuj osobno. Pamiętaj też, że nie zawiera on samych modeli ani dodatkowych węzłów potrzebnych do uruchomienia grafu.
Wersjonowanie workflow bez zbędnej komplikacji
Zachowaj niezmieniony szablon bazowy, a istotne etapy zapisuj jako kolejne pliki, na przykład portret_v01_baza.json i portret_v02_swiatlo.json. Do każdej wersji dołącz reprezentatywny obraz oraz krótką notatkę: co zmieniono i czy efekt był lepszy. Warto również odnotować użyty checkpoint, VAE i wersję środowiska; przy dokładnym archiwizowaniu pomocne są sumy kontrolne plików modeli, ponieważ sama nazwa nie zawsze jednoznacznie identyfikuje plik.
Taki zapis pozwala wrócić do konkretnej decyzji: nie tylko zobaczyć, który obraz był najlepszy, lecz także ustalić, jak powstał.
7. Rozwiązywanie problemów: objaw → przyczyna → rozwiązanie
Nie każdy nieudany obraz oznacza błąd w workflow. Szum na całym kadrze może wskazywać na problem z odszumianiem lub dekodowaniem, natomiast zdeformowana twarz częściej wynika z ograniczeń modelu albo zbyt małej liczby pikseli przeznaczonych na jej szczegóły. Zacznij od rozpoznania objawu i zmieniaj pojedyncze ustawienia — łatwiej wtedy ustalisz, co rzeczywiście pomaga. W Cognity łączymy teorię z praktyką — dlatego ten temat rozwijamy także w formie ćwiczeń na szkoleniach.
Zamiast obrazu pojawia się szum
Prawdopodobna przyczyna: niepełne odszumianie, zbyt mała liczba kroków dla wybranego modelu i samplera albo niezgodny VAE. W podstawowym workflow generującym obraz z Empty Latent Image obniżony parametr denoise może uniemożliwić poprawne uformowanie sceny.
Rozwiązanie: sprawdź, czy denoise w KSampler wynosi 1,0 — to ustawienie właściwe dla omawianego generowania od zera, nie uniwersalna zasada dla każdego workflow. Następnie upewnij się, że do VAE Decode trafia wyjście z KSampler, a nie bezpośrednio pusty latent. Użyj VAE zgodnego z checkpointem oraz liczby kroków zalecanej dla modelu. Nie zwiększaj jej automatycznie do bardzo wysokich wartości: nie naprawi to niezgodnych komponentów.
Obraz jest rozmyty i pozbawiony szczegółów
Prawdopodobna przyczyna: rozdzielczość niedopasowana do modelu, niedostateczne odszumienie albo opis sugerujący miękki obraz, np. soft focus. Rozmyte tło przy ostrym głównym obiekcie może być zamierzonym efektem głębi ostrości, a nie usterką.
Rozwiązanie: oceń, czy nieostry jest cały kadr, czy tylko jego wybrane fragmenty. Dla rozmycia całego obrazu sprawdź rozdzielczość zalecaną dla checkpointu i usuń z promptu niechciane określenia miękkości. Jeśli liczba kroków jest niższa od rekomendowanej, zwiększ ją do odpowiedniego poziomu. Samo powiększenie gotowego pliku nie odtworzy brakujących detali; dopracowanie ich wymaga osobnego etapu przetwarzania, np. skalowania wspomaganego modelem.
Twarze mają zniekształcone oczy, usta lub proporcje
Prawdopodobna przyczyna: twarz zajmuje zbyt mały fragment obrazu, scena zawiera wiele postaci albo wybrany checkpoint słabo radzi sobie z realistyczną anatomią. Problem mogą nasilać skrajne kąty widzenia i częściowe zasłonięcie twarzy.
Rozwiązanie: najpierw wykonaj próbę z jedną postacią w bliższym kadrze. Jeśli twarz wygląda wtedy poprawnie, przyczyną była prawdopodobnie skala lub złożoność sceny, a nie błędne połączenia węzłów. Gdy reszta obrazu jest udana, zamiast generować wszystko ponownie możesz zastosować inpainting, czyli ponowne wygenerowanie zaznaczonego obszaru. Narzędzia do rekonstrukcji twarzy również bywają pomocne, ale mogą zmienić rysy i nadać skórze nienaturalną gładkość.
Kolory są przesycone, a jasne partie tracą szczegóły
Prawdopodobna przyczyna: zbyt wysokie CFG względem zaleceń modelu, nadmierne wagi określeń w prompcie lub nagromadzenie poleceń wzmacniających kontrast i nasycenie. Nietypowe zafarby mogą też wskazywać na niewłaściwy VAE.
Rozwiązanie: jeśli CFG przekracza zalecany zakres, obniż je i porównaj rezultat. Ogranicz mocno ważone frazy oraz określenia takie jak extremely vibrant czy high contrast, jeśli nie są potrzebne. Gdy nienaturalna kolorystyka występuje niezależnie od opisu sceny, sprawdź zgodność VAE z checkpointem. Korekcja kolorów po wygenerowaniu obrazu może złagodzić efekt, ale nie przywróci szczegółów, których model nie wytworzył w jasnych obszarach.
Najczęściej zadawane pytania i odpowiedzi odnośnie ComfyUI krok po kroku: jak stworzyć pierwszy workflow do generowania obrazów AI
Nie musisz mieć mocnego komputera, jeśli ComfyUI działa na zdalnej maszynie. Przeglądarka wyświetla interfejs, natomiast obliczenia wykonuje komputer, na którym uruchomiono aplikację. Przy pracy lokalnej karta graficzna znacznie przyspiesza generowanie, a wymagania pamięciowe zależą między innymi od modelu i rozdzielczości. Na słabszym sprzęcie rozsądniej zacząć od SD 1.5, który zwykle jest mniej wymagający niż SDXL.
Podstawowy workflow text-to-image dla klasycznych checkpointów SD 1.5 lub SDXL wymaga siedmiu węzłów. Każdy odpowiada za konkretny etap:
- Load Checkpoint wczytuje model, CLIP i VAE.
- Dwa CLIP Text Encode przetwarzają prompt pozytywny i negatywny.
- Empty Latent Image określa wymiary i liczbę obrazów.
- KSampler przeprowadza odszumianie.
- VAE Decode przekształca latent w piksele.
- Save Image zapisuje rezultat.
Ten układ nie wymaga dodatkowych rozszerzeń, ale nie jest uniwersalny dla wszystkich rodzin modeli.
Dla standardowego SD 1.5 zacznij od 512 × 512 px, 25 kroków i CFG 7, a dla SDXL od 1024 × 1024 px, 30 kroków i CFG 5,5. Pozostałe ustawienia startowe mogą być wspólne:
- sampler: dpmpp_2m;
- scheduler: karras;
- denoise: 1.0;
- batch_size: 1.
Rozdzielczość i batch_size ustawiasz w Empty Latent Image. Zalecenia autora checkpointu mają pierwszeństwo; warianty Turbo, Lightning i LCM wymagają odrębnych parametrów.
Tak, w opisanym workflow możesz pozostawić tekst negative promptu pusty. Zachowaj jednak drugi węzeł CLIP Text Encode i jego połączenie z wejściem negative w KSampler. Jeśli dodajesz wykluczenia, dopasuj je do sceny i stylu: opis błędnych palców jest zbędny, gdy dłonie pozostają poza kadrem. Negative prompt ukierunkowuje generowanie, ale nie gwarantuje usunięcia wszystkich niepożądanych cech.
Ten sam seed nie gwarantuje identycznego obrazu, jeśli zmieniły się pozostałe ustawienia lub środowisko. Na wynik wpływają również prompty, checkpoint, VAE, rozdzielczość, parametry samplera i układ workflow. Sprawdź, czy control_after_generate ma wartość fixed, aby seed nie zmieniał się po wykonaniu. Przy porównywaniu wyników zachowaj także ten sam batch_size; zmiany sprzętu lub oprogramowania mogą utrudnić dokładne odtworzenie obrazu.
Zapisz workflow jako plik JSON, aby zachować węzły, połączenia i ustawienia do dalszej pracy. PNG ze standardowego Save Image również może zawierać konfigurację w metadanych, ale obróbka lub publikacja obrazu może je usunąć. Przechowuj więc JSON osobno, razem z obrazem wzorcowym i informacją o użytych modelach. Sam plik workflow nie zawiera checkpointów ani dodatkowych węzłów.
Sprawdź denoise, połączenie KSamplera z VAE Decode oraz zgodność VAE z checkpointem. Przy generowaniu od zera z Empty Latent Image denoise powinno wynosić 1.0. Dekoder musi otrzymywać wynik KSamplera, a nie bezpośrednio pusty latent. Następnie porównaj liczbę kroków z zaleceniami dla modelu. Samo zwiększanie steps nie naprawi błędnych połączeń ani niezgodnych komponentów.
Do poprawienia samej twarzy możesz wykorzystać inpainting, czyli ponowne wygenerowanie zaznaczonego obszaru. Wymaga to rozszerzenia podstawowego workflow text-to-image, ale pozwala pracować nad fragmentem udanej kompozycji. Wcześniej sprawdź, czy problem nie wynika z małej skali twarzy, wykonując próbę z jedną postacią w bliższym kadrze. Narzędzia rekonstrukcji twarzy również bywają pomocne, lecz mogą zmienić rysy i nadmiernie wygładzić skórę.