Skip to main content
RD EZ

240630 - ComfyUI Inpainting

Spis Treści #

  1. Co próbujemy zrobić?
  2. Tło - substrat
    1. Wynik
    2. Nowe węzły - Math Nodes
    3. Wpływ parametrów na rysunek
  3. Prosty Inpainting by dodać kota
    1. Wpierw - jak dodać maskę do rysunku?
    2. Niewielka zmiana - usprawnijmy serwerownię; węzeł 'Set Latent Noise Mask' i drugi KSampler.
    3. Dodajemy kota
  4. Czyszczący KSampler

.


1. Co próbujemy zrobić? #

Poziom wizji jest dość prosty / fajny. Jako, że Kić wyjechała na obóz TaiChi, chcę coś TAKIEGO:

.

2. Tło - substrat #

2.1. Wynik #

Żeby zrobić tło wykorzystamy techniki, które już do tej pory wykorzystaliśmy. Area Composition.

Wynik:

.

Jak to zrobiliśmy?

2.2. Nowe węzły - Math Nodes #

Oki - mamy szerokość rysunku typu 1024. Ustawiamy połówkę po lewej (512) i offset po prawej (512). Nakładamy overlap ręcznie.

I człowieka szlag trafia, gdy chce mieć SZERSZY rysunek. Wszystkie offsety musi liczyć z palca.

Po to są węzły matematyczne:

.

I to właśnie zrobiliśmy robiąc nasz substrat (patrzcie na żółte węzły):

.

Czyli:

I ostatecznie całkowity pipeline budujący substrat (z jednym KSamplerem; nie potrzeba było dwóch przez siłę ConditioningSetAreaStrength który wyczyścił obrazek):

.

Nie ma tu nic dziwnego ani nic nowego. Wszystko to zrobiliśmy w poprzednim dokumencie. To tylko kwestia kalibracji prompta i stylu (na poziomie embeddingów, nie ma tu lory ani controlneta).

W czym jest ciekawa obserwacja:

2.3. Wpływ parametrów na rysunek #

Co ciekawe, w wypadku tego rysunku ogromną różnicą na plus było podniesienie wagi kompozycji całościowej i obniżenie (docelowo) do 0.8 wag kompozycji cząstkowych:

.

Też jak weźmiemy wynikowy rysunek i zobaczymy co się stanie jak zwiększę overlap (część "wspólną" między lewym rysunkiem i prawym):

.

To, że to jakkolwiek działa to jest ogromna zasługa tego ostatniego prompta który je integruje w jedną całość. Jeśli chciałbym mieć bardzo różnorodne style, popatrzcie co się dzieje jak ustawię:

overlap na 80 / 0 / 240 oraz wagę kompozytora na 0.1:

.

Niewykluczone, że powinienem zrobić coś w ten deseń - niski overlap i niska waga kompozytora - ale to z czym teraz pracuję wizualnie podoba mi się bardziej.

3. Prosty Inpainting by dodać kota #

3.1. Wpierw - jak dodać maskę do rysunku? #

Muszę być w stanie zrobić maskę i pokazać który fragment rysunku ma zostać zmieniony:

.

I oznaczam odpowiednią część:

.

Oki. Przejdźmy do konkretów.

3.2. Niewielka zmiana - usprawnijmy serwerownię; węzeł 'Set Latent Noise Mask' i drugi KSampler. #

Nie muszę używać specjalnych modeli ani zaawansowanych technik, by móc zrobić drobne zmiany. Zacznijmy od czegoś prostego - usprawnijmy serwerownię po prawej stronie rysunku.

(mógłbym LEPIEJ ustawić maskę, ale wtedy by nie było widać co dokładnie robię)

I znowu, mam kilka strategii do wyboru:

Na potrzeby tutoriala zrobię to jednym ruchem, ale da się wieloma (tak jak by dostać idealny wynik możemy próbować po znalezieniu fajnego seeda eksperymentować z różnymi wartościami denoisingu w KSamplerze).

Czyli jak to zrobić (wyjaśnię pipeline za moment):

.

.

W końcu stanęło na tym, co mi się spodobało najbardziej:

.

3.3. Dodajemy kota #

Na razie nie rozwiązałem jeszcze węzła VAE Inpainting, nie rozwiązałem też problemu inpainting modelu. Oki. Na razie.

Więc robię to tak samo jak powyżej. Dojdę do tego. Ale jeszcze nie dziś.

.

Wynik:

.

4. Czyszczący KSampler #

Rysunek który mamy ma dość... specyficzne artefakty:

.

By to naprawić, puszczę jeszcze jednego KSamplera całościowego kilka razy. Na którymś inkremencie zadziała. To naprawi nam cienie, usunie te uszkodzenia i defekty i ogólnie da nam fajny rysunek :-).

Takie czyszczenie robimy tak:

.

Wynik czyszczenia:

.

Wielokrotny pipeline czyszczenia:

.

I wynik ostateczny:

.

(tak, mogę jeszcze doczyścić rzeczy inpaintingiem i kolejnymi ksamplerami, ale naprawdę mi się już nie chce; lub photoshopem, ale tego nie umiem)

Ostateczny pipeline:

.

3. Linki powiązane #