ControlNet

Becsült olvasási idő 7 perc

ControlNet, ami irányíthatóvá teszi a szöveg-alapú képgenerálást

A Stable Diffusion talán legfontosabb kiegészítője. Ennek segítségével tudjuk a mesterséges intelligenciát irányítani. Ne csak találomra rajzoljon egy macskát, hanem pontosan olyan macskát és olyan pozícióban, amilyet mi szeretnénk.

A ControlNetet Lümin Zhang és Maneesh Agrawala, a Stanford Egyetemről mutatták be 2023 februárjában, a „Adding Conditional Control to Text-to-Image Diffusion Models” című tanulmányukban.

A ControlNet működése

A ControlNet egy többlépcsős folyamat. Először szükségünk van egy bemeneti képre. Ezzel fogjuk a mesterséges intelligenciát irányítani.
A ControlNet Preprocessor értelmezi a kép tartalmát, abból generál egy segéd képet. Majd pedig az utasításokat (prompt) használva a segédkép és a ControlNet Model alapján rajzolja meg a képet. Összesen tehát négyféle komponens alapján áll össze a végleges kép (segédkép, controlNet model, prompt és a stable diffusion model).

A segéd képet megkapjuk a programtól a képgenerálás végén. Ezt betölthetjük egy képszerkesztő programba (pl. Photoshop), és átrajzolhatjuk, kijavíthatjuk a hibákat. Majd ezt használhatjuk bemeneteli képnek, a Preprocessort pedig üresen hagyjuk.
(A ControlNet beállítására még visszatérünk)

A ContolNet-hez különböző mélytanulásos modelleket tölthetünk le. Ezek mind másképpen értelmezik a képet, és ettől függően nagyon más eredményeket kaphatunk. A modell értelmezheti a körvonalakat, az éles vonalakat, az emberi pózokat, az arc mimikáját, a kép mélységét, a képen lévő objektumokat, és még sok minden mást.

Az alábbiakban néhány modellt mutatunk be. Ezek a leggyakrabban használtak. De érdemes kísérletezni a többi modellel is, illetve újakat keresni.

Canny

ControlNet - Canny
ControlNet – Canny

A Canny a leggyakrabban használt ControlNet model. Ez a képen szereplő tárgyak éleit keresi meg, zajcsökkentést használ, majd az éleket pontosan lokalizálja és nyomon követi. Ennek köszönhetően nagyon pontosan visszakapjuk mi van a képen.
A végleges kép élvonalai megegyeznek a bemeneti kép élvonalaival.

Lineart, Scribble

ControlNet - Lineart
ControlNet – Lineart

Vonalas rajzok használatához a legideálisabb a Lineart, és a Scribble, pl. ceruza rajzoknál, kifestőknél, mangánál, vagy más fekete-fehér rajzoknál.
A Preprocessor a vonalakat fogja megkeresni, majd azt alapján készül a képgenerálás. Ha a Model esetében is Lineart vagy Scribble-t használunk, akkor az eredmény inkább vonalas rajz lesz.
Választhatjuk a Canny-t is. Ebben az esetben tudunk egy vonalas rajzból (pl. vázlat) egy valósághű fényképet készíteni.
Ez fordítva is működik: bemeneteli képnek adhatunk egy valódi fényképet is. Majd nézzük meg, hogy a Canny, SoftEdge, Lineart vagy a Scribble adja legjobb eredményt. Utasításnak (prompt) pedig lehet mondjuk „kézirajz”

Depth

ControlNet - Depth
ControlNet – Depth

A Depth Preprocessor a bemeneteli kép mélységét értelmezi, és ezzel egy 3D-s teret hoz létre. Az új kép generálása ezen tér alapján fog történni.

Segmentation

ControlNet - Segmentation
ControlNet – Segmentation

A Segmentation Preprocessor a bemeneteli kép objektumait értelmezi. Ezeket körvonalazza, és színkódokkal látja el. A minta képben a ControlNet felismerte a fákat, amiket zölddel színezett ki. Az épületeket is megtalálta, azok téglaszínűek lettek. A végső kép generálásánál ezeket a tárgyakat megtartja: a fa megmarad fának, a ház háznak, stb…

A színkódos képet egy képszerkesztő programban módosíthatjuk, hogy pontosabb legyen, vagy egy objektumot kicseréljük. Így pl. belső építészeti látványtervet nagyon jól lehet készíteni.

Melyik szín melyik objektumot jelenti? Ezt szerencsére már valaki összegyűjtötte erre az oldalra. A mi biztonsági mentésünk itt található.

OpenPose

ControlNet - OpenPose
ControlNet – OpenPose

Az OpenPose Preprocessor megkeresi az embereket a képen, és felismeri a végtagok állását. Ebből egy pálcika ember rajzot készít. A generált képen lévő figura pontosan ugyan ebben a pózban lesz. Ez pedig nagyon megkönnyíti a kép készítését. Nem kell leírni, milyen beállásban legyen a karakter, elég csak egy fotót mutatni róla a programnak.

Az OpenPose Face az emberi arcot vizsgálja hasonlóan.

IPAdapter

Az IPAdapter (Image Prompt Adapter) egy kiegészítő a Stable Diffusion számára, amely lehetővé teszi képek használatát kiindulási pontként hasonlóan a MidJourneyhez és a DALL·E 3-hoz. Ennek segítségével átvehetjük a referencia kép stílusát, kompozícióját vagy arcát.

A kiegészítő több modellt is magában foglal, mint például a Face ID, Face ID v2, Face ID Portrait, és bemutatja, hogyan használhatóak az IPAdapterek az automatic1111 és a ComfyUI keretrendszerekkel.

Az IPAdapterek modelljeinek száma gyorsan növekszik, és két képkódolót használnak: az OpenCLIP ViT-H 14-t (SD 15 verzió, 632M paraméter) és az OpenCLIP ViT-Bigg 14-t (SDXL verzió, 1845M paraméter).

Az IPAdapter különlegessége, hogy külön cross-attention rétegeket képez ki a képhez, ami hatékonyabbá teszi a képgenerálás irányítását. Az IPAdapter Plus például egy patch beágyazási sémát használ, amely közelebb áll az eredeti referenciához, míg az IPAdapter Plus Face finomhangolással rendelkezik az arcok referencia szerinti használatához. További változatok is léteznek, mint az IPAdapter SDXL és az IPAdapter Face ID, amely az InsightFace modellt használja az arc azonosító beágyazások kinyerésére.

Az IPAdapter és annak változatai a következő funkciókat és jellemzőket kínálják a Stable Diffusion keretében:
  1. IPAdapter (Eredeti)
    • Képeket használ kiinduló pontként a képgeneráláshoz.
    • A CLIP képkódolót használja a referencia kép jellemzőinek kinyerésére.
    • Külön cross-attention rétegeket képez ki a képhez, javítva a generált kép irányítását.
  2. IPAdapter Plus
    • Patch beágyazási sémát használ, ami közelebb áll az eredeti referenciához.
    • A finom részleteket, mint például az arcok, nem mindig másolja pontosan.
  3. IPAdapter Plus Face
    • Az IPAdapter Plus változata, amely finomhangolt a referencia képben szereplő arcok használatára.
    • Egy közelképű arcot kell használni referenciaként.
  4. IPAdapter SDXL
    • Két verzióban létezik: egy, amely a ViT-Bigg képkódolót használ, és egy, amely a ViT-H képkódolót használ.
    • A nagyobb képkódolóval rendelkező verzió jobban követi a referencia képet.
  5. IPAdapter Plus SDXL
    • A patch képbeágyazásokat és a ViT-H képadaptert használja.
    • Közelebb áll a referencia képekhez, jobban követve azokat.
  6. IPAdapter Face ID
    • Az InsightFace modellt használja az arc azonosító beágyazások kinyerésére.
    • A modellel együtt a LoRA-t kell használni az arcok jobb követése érdekében.
  7. IPAdapter Face ID Plus
    • Minden képkódoló eszközt használ a képkódoló eszköztárból.
    • Az InsightFace-t az arcjellemzőkért, a CLIP képkódolót a globális arcjellemzőkért, és a Perceiver-Resampler-t a kombinálásért.
  8. IPAdapter Face ID Plus V2
    • A Face ID Plus továbbfejlesztett változata, javított modellel és LoRA-val, ami lehetővé teszi a CLIP képkódoló súlyának beállítását.
    • Eredményeként erősebb a hatása a referencia kép által meghatározott színsémára és arckifejezésekre.

Az IPAdapter modelleket innen lehet letölteni:

Multi ControlNet

Több modellt is lehet egyszerre használni (pl. körvonalat (Canny) és objektum felismerőt (segmentation). Ehhez a Stable Diffusion Settings fülön a ContolNet beállításokban a Multi-ControlNet menüben adjuk meg, hány modellt akarunk egyszerre használni.

A több ControlNet használata több erőforrást igényel!

Multi-ControlNet használata
Multi-ControlNet használata

Néhány érdekes módszer a ControlNet használatához

A ControlNet teljesen megváltoztatja ahogyan a mesterséges intelligenciával képeket készítünk. Rengeteg lehetőség van benne. Néhányat alább összegyűjtöttünk.

  • Fotóból alternatív változatok (Stable Diffusion az építészetben)

    Becsült olvasási idő 6 perc A mesterséges intelligencia segítségével egy ceruzarajzból vagy egy alaprajból tudunk valósághű képet készíteni. Mintha az épület készen lenne. Ezúttal viszont egy már meglévő fényképet alakítunk át úgy, hogy teljesen új házat lássunk.

  • Régi térképek újrarajzolás – Stable Diffusion + ControlNet

    Becsült olvasási idő 5 perc Régi térképek, kézzel rajzolt térképek vagy AutoCAD-ben készült térképek. Mindegyik egy stilizált változata a valóságnak. De mi lenne, ha a mesterséges intelligenciával ezekből a rajzokat valósághű képekké alakítanánk? A régi térképek újraszámolása még várat magára. De bizonyára a közeljövőben a térképészetben is megjelenik a mesterséges intelligencia. Mi egyenlőre maradunk az…

  • Kreatív dekorációk a szabásminta alapján MI segítségével

    Becsült olvasási idő 6 perc Gondolkodtál már azon, hogy a mesterséges intelligencia hogyan dobhatja fel a szabásmintáidat? Nos, én igen, és megosztom veled, hogyan! Képzeld el, hogy a képeid nem csak képek, hanem valós formákba illeszkedő műalkotások. Pontosan ezt hozzuk létre egy cipő szabásmintával, és a mesterséges intelligenciával.

Telepítés (Stable Diffusion 1.5 Automatic 1111 Extension)

A következő lépéseket a Stable Diffusion 1.5 verzióhoz és az Automatic 1111 webUI-hoz használhatjuk. Más verzióknál is működhet, de nincsen rá garancia.

Elsőnek szükségünk lesz egy működő Stable Diffusion programra. Ehhez kell letölteni a ControlNet kiegészítőt

Letöltés:

A ControlNet itt található a GitHUB-on:

https://github.com/Mikubill/sd-webui-controlnet

A telepítéshez annyit kell tenni, hogy a Stable Diffusion Automatic 1111 webes felületén menjünk el az Extensions fülre. Majd válasszuk ki az Install from URL alfület. Az URL mezőbe másoljuk be az alábbi kódot. Nyomjuk meg az Install gombot és indítsuk újra a Stable Diffusion-t.

https://github.com/Mikubill/sd-webui-controlnet.git
ControlNet telepítése
ControlNet telepítése

ControlNet modellek

Szükségünk lesz a modellekre is. Menjünk el a következő linkre:
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
(A modellek a Civitai oldalon is megtalálhatóak)
Innen töltsük le a YAML (preprocessor) és PTH (model) fájlokat is a stable-diffusion-webui\extensions\sd-webui-controlnet\models\ könyvtárba. A Stable Diffusion újraindítása után már látható lesz a ControlNet is, a ControlNet Preprocessor és a ControlNet modellek is.

További ControlNet preprocessorokat és modelleket is lehet találni az interneten. Éppen ez a jó a Stable Diffusion programban, hogy sok ember készít hozzá kiegészítőket.
Nagyon népszerű és praktikus a QR-kód ControlNet kiegészítő, amivel dekoratív és működő kódokat készíthetünk. Ugyan ez a kiegészítővel lehet például céges logókat is érdekesebbé tenni.
Innen lehet letölteni a modelleket:
https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster/tree/main
Itt pedig bemutatjuk a használatát.

ControlNet beállítása

Röviden ismertetjük a ControlNet beállításait, hogy mindenki el tudjon indulni. De a tökéletes eredmény sok tanulás (leírások elolvasása és videók megtekintése) és még több gyakorlás szükséges.

ControlNet
ControlNet

Az Enable gombbal tudjuk a ControlNet-et bekapcsolni. A Low Ram pedig segít, hogy kevesebb erőforrással rendelkező gépeken is tudjuk használni. A Pixel Perfect a vonalak pontos követését kapcsolja be.

A Drop Image Here mezőbe tudjuk a forrásképet betölteni. A generált kép aránya egyezzen meg a forráskép arányával, különben torz lesz az eredmény.
Ha felette lévő fülön a Batch-ot válasszuk, akkor viszont egy egész könyvtárnyi képet megadhatunk forrás képnek. Azaz mindegyik képen hasonló műveletet hajthatunk végbe (ha a Seed is egyforma, akkor a műveletek is egyformák lesznek). De figyeljünk oda, hogy minden kép aránya egyforma legyen.

A Preprocessor fogja a forrásképet elemezni. De forrásképnek egy általunk előkészített fekete-fehér (illetve a a Segmentation esetében színkódos) kép is. Ilyenkor nem szükséges a preprocessor. A Model pedig a képet fogja rajzolni.

A következőben azt kell kiválasztani, hogy mennyire inkább a ControlNet parancsai teljesüljenek, vagy a prompt-ba írt utasítások. Ezt a Control Weight és Starting Control Step és Ending Control Step csúszkákkal állíthatjuk.

  • Minél nagyobb a Control Weight és a Starting Control Step de kisebb az Ending Control Step, annál kreatívabb lesz az eredmény.
  • Minél kisebb a Control Weight és a Starting Control Step de nagyobb az Ending Control Step, annál inkább fog az eredeti képhez ragaszkodni.

A Control Mode menüben pedig kiválaszthatjuk, hogy inkább a Controlnet (ControlNet is more important), vagy a mi utasításunk (My prompt is more important) legyen a fontosabb, vagy kiegyensúlyozott (Balanced) legyen.

Ajánlott oldalak

Az alábbi oldalakon találhatunk bővebb információt, hogyan is működik a ControlNet (az oldalak angolul vannak, de a ChatGPT majd segít értelmezni):

Ajánlott videók

Az alábbi videók segítenek a ControlNet telepítésében, és a kezdő lépésekben:

PixelRita összegzése

PixelRita, mit gondolsz a Stable Diffusion ControlNet kiegészítőről?

Loading

No votes yet.
Please wait...

Szólj hozzá!