SUPIR képnagyítás felhőben

Becsült olvasási idő 10 perc.

SUPIR a képnagyító és képjavító program

Pintér Zsolt talált rá, majd osztotta meg a SUPIR (Scaling Up to Excellence: Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild – A Kiválóság fokozása: A modellskálázás gyakorlása a fotórealisztikus képrestauráláshoz a természetben) nevű alkalmazást.

A program mesterséges intelligenciát használva a kapott képet teljesen újrarajzolja abban a méretben, amit kérünk (és amit a számítógép elbír). Az MI a kép tartalma alapján a nehezen látszódó és a teljesen hiányzó részeket is megpróbálja elkészíteni a tréningezés során tanult adatokból.

Például, ha egy emberi arc esetén a program tudja, hogy két szemnek, egy orrnak és egy szájnak kell ott lennie. Akkor is, ha ez a kép alacsony felbontása miatt nem látszik. Ezért egy olyan arcot rajzol, ami leginkább beleillik a környezetbe.

Warning!

Ebből két fontos dolog következik!

⚠️ A mesterséges intelligencia nem tudja, hogy eredetileg ki volt a képen, és hogy nézett ki. Minél kevesebb információ van a személyről (azaz minél kevesebb pixel), annál inkább véletlenszerű embert fog rajzolni az MI. Minél több a határozott vonal, annál jobb fog a kép a kívánt személyre hasonlítani.

Ugyan így a képen látható több elem, mint az épületek, járművek, fák, hegyek, stb... is annál inkább hasonlít a valóságban lévőre, minél több információ van róla.

⚠️ A SUPIR (és a többi mesterséges intelligencia-alapú nagyító program) nem csak fotók nagyítására, hanem rossz felbontású, homályos képek javítására is alkalmas.

A SUPIR programról további ismertető itt található

Bal oldalt a hagyományos nagyítás, jobb oldalt a mesterséges intelligencia nagyítása látható.

A SUPIR futtatása

A SUPIR készítői egy publikus szerverre telepítettek egy kipróbálható verziót, ahol mi is tesztelhetjük a program tudását. Az oldal itt található: https://replicate.com/cjwbw/supir

Amennyiben tényleg használni szeretnénk, akkor a saját számítógépünkön a Stable Diffusion ComfyUI alá be tudjuk illeszteni. Erről szintén Pintér Zsolt készített egy jól érthető videót.

Számolni kell vele, hogy a SUPIR nagyon erőforrás igényes. Amint egy kicsit is nagyobb képünk van, máris ajánlott az erős videókártya (legalább 24 GB VRAM) és memóriából is jó, ha legalább 50 GB-unk van.

Ha nem rendelkezünk egy ilyen óriás géppel, akkor érdemes inkább kifejezetten grafikai munkára előkészített szervert bérelni. A Runpod szolgáltónál nagyon kedvező áron választhatunk ilyen szervert. Ráadásul már kész SUPIR rendszert is találunk.
Szükség esetén néhány kattintással beállíthatunk egy képnagyító rendszert. Majd használat után egyszerűen törölhetjük.

Ebben a bejegyzésben ezt írjuk le részletesen.

A SUPIR a Runpod szolgáltatásnál

Menjünk el a Runpod szerverre, és regisztráljunk. A használathoz előre kell fizetni, a minimum összeg 25 USD. De ez több hónapra bőségesen elég. A grafikai processzor használatáért óránként 0.36 USD – 0.79 USD-t fizetünk. Míg a tárhelyért 0.16 USD naponta (óránként kb. 0.07 USD). Azaz 1 óra SUPIR használat kb. 0.43 USD-ba kerül.

Szerencsére a Runpod szerveren van előkészített SUPIR minden beállításával együtt. Ezért amikor nem használjuk, nem szükséges fenntartani. Kb. 10-15 perc alatt automatikusan feltelepedik a rendszert, majd használat után törölhetjük. Így tényleg csak az aktívan használt időt fizetjük.

(az árak 2024. májusában készültek)

A SUPIR telepítése

Első lépésként navigáljunk el a Storage menübe

A SUPIR telepítéséhez két dologra van szükségünk: tárhelyre, és grafikus szerverre.
A Runpod több országban is üzemel, illetve saját szervert is bérbe lehet adni. De ez utóbbiak lassabbak és kevésbé megbízhatóak, bár olcsóbbak.

A tárhely kiválasztásánál egyúttal a grafikai szerver park helyét is meg kell választani. Ezért a tárhely választással együtt a grafikai kártyákat is érdemes nézni.

A SUPIR legalább 24 GB VRAM-ot igényel. Ehhez talán a legjobb választás az RTX A5000. Ennek ára 0.44 USD óránként. Az RTX 4090-es valamivel gyorsabb, és több RAM-al rendelkezik, de jóval magasabb az ára: 0.74 USD.
Ha viszont nagyobb képekkel szeretnénk dolgozni, akkor választhatunk egy RTX A6000-t (0.79 USD/óra) . Illetve lehetőségünk van több grafikai szervert is összekötni (többszörös áron). De ezt nem teszteltük még.

A példa képen a CA-MTL-1 nevű szerveren zölddel jelzi az RTX A5000-es szervert. Vagyis itt általában találunk szabad kapacitást. De ez naponta változhat (ahogyan az árak is idővel módosulhatnak).
Mi így ezt választottuk.

A Volume Name-nek a SUPIR-t adtuk. Méretnek pedig 70 GB-t kértünk.

SUPIR tárhely foglalása
SUPIR tárhely foglalása

Következő lépésben menjünk el a Pods menübe és kattintsunk a Deploy gombra!

A felső menüsorban válasszuk a GPU-t, a Secure Cloud-ot, majd pedig a Network Volume menüből kattintsunk az előbb készített SUPIR szerverre. Az alsó listából pedig válasszuk ki az RTX A5000-es kártyát.

SUPIR grafikai szerver foglalása
SUPIR grafikai szerver foglalása

Következő lépésben választhatunk az előre elkészített szerverek között. A Change Template gombra kattintás után a keresőbe írjuk be a SUPIR szót. Itt meg is jelenik a SUPIR Upscaling and Restoration nevű template (készítette ashleykza/supir:2.2.0)

SUPIR template választása
SUPIR template választása

A végén a Pod name rublikában adhatunk egy nevet a szervernek (mondjuk SUPIR). Az Instance pricing legyen On-Demand. Ezután kattintsunk legalul a Deploy On-Demand gombra.

Ezzel el is indult a program telepítése. Mivel a SUPIR kb. 60-65 GB, ez olyan 10-15 percig is eltarthat. Lehet, hogy a rendszer azt mondja, hogy készen van, de valójában a háttérben a szükséges fájlokat másolja.
A program akkor van teljesen készen, ha a Connection Options-ban a Connect to HTTP Services Port 3000-e kattinva a SUPIR kezelőfelületét látjuk. (A szerver állapotán is látszik, ha a CPU vagy a HDD dolgozik éppen, akkor még nincsen kész a rendszer)

A SUPIR-t a Connect to HTTP Services Port 3000-ra kattinva indíthatjuk
A SUPIR-t a Connect to HTTP Services Port 3000-ra kattinva indíthatjuk

A SPUR használata

A Runpod-on található SUPIR kicsit eltér a demó verziótól, és a Stable Diffusion-ba illeszthetőtől. De gombok és a funkciók ugyan azok.

SUPIR beállítások
SUPIR beállítások

1. lépés: előfeldolgozás

Miután feltöltöttünk egy képet az Input ablakba, a Stage 1t kell futtatni (ez némelyik SUPIR programban automatikusan lefut). Ez átalakítja a képet olyan formába, amivel élek és körvonalak határozottabbak lesznek. Ez fog segíteni abban, hogy a rajzolt kép minél jobban hasonlítson az eredetire.

A Runpod szerveren futó SUPIR esetében az előfeldolgozott képet mi is feltölthetjük. Tehát külső programos is használhatunk az előkészítésre, így jobban kontrollálhatjuk, hogy mely vonalak a fontosak.

2. lépés: utasítás

A mesterséges intelligencia esetében nagyon fontos, hogy minél jobban értse a kép tartalmát. Nem mindegy, hogy a képen lévő homályos négyzet egy asztal vagy egy ház, mert a mesterséges intelligencia annak akarja majd rajzolni.
A munkáját az utasítással (prompt) tudjuk segíteni. Ide angolul leírjuk, mi is van valójában a képen.

Csakhogy a SUPIR készítői tudták, hogy ez a leírás mennyire nehéz. Főleg azoknak, akik nem beszélnek jól angolul.
Így beraktak a programba egy LlaVA (Large Language and Vision Assistant – Nagyméretű nyelvi és látássegítő asszisztens) modult.

PixelRita mi az a LlaVA?

Tehát az LlaVA segít nekünk abban, hogy minél jobb utasítást készítsünk. A LlaVA gombra kattintva hamarosan elkészül az utasítás.

Ezt még mindig tudjuk módosítani azzal, hogy a szöveget átírjuk. De sokat segíthet a pontosabb leírásban, ha mi is elmondjuk, hogy mi van a képen, hol készült, mikor és mit szeretnénk látni.
Erre a SUPIR programon belül nincs lehetőségünk. De elmehetünk egy szabad LlaVA oldalra, vagy a ChatGPT GPT-jét is használhatjuk. Mindkettő esetében a feltöltött képről addig beszélgethetünk az MI-vel, míg a számunkra kedvező promptot megírja.

3. lépés – képgenerálás

A SUPIR készítői a legtöbb beállítást előre elkészítették. Így csak ritkán kell ezekkel foglalkozni. Az Upscale csúszkán kiválasztjuk, hogy mekkora nagyítást szeretnénk. Majd pedig kattintsunk a Stage 2 Run gombra.

Hamarosan elkészül a nagyított képünk.

Warning!


⚠️ Az elkészült képet ne felejtsük el lementeni!!⚠️

A kész képre jobb egérgombbal kattintva tudjuk a számítógépre menteni.

További beállítások

SUPIR beállítások
SUPIR beállítások

Amennyiben a képünk túlságosan eltér attól, amit szeretnénk, kapunk néhány beállítást a finomhangoláshoz.
Az alábbi csúszkát segíthetnek a jobb beállításban:

  • Text Guidance Scale: Mennyire vegye figyelembe a program az utasítást
  • Stage1 Guidance Strength: Mennyire vegye figyelembe a program az előfeldolgozott képet
  • Stage2 Guidance Strength: Milyen erősen működjön az eredeti kép átrajzolása
  • Steps: Hány lépésben készüljön el a rajz. A több lépés rajzosabb eredményt ad.
  • Linear CFG: Mennyire kövesse a mesterséges intelligencia az eredeti vonalakat, a rajzolás melyik fázisában (hányadik lépénél) kezdjen el működni.
  • Linear Stage2 Guidance: Mennyire kövesse a mesterséges intelligencia a Stage2 utasításokat, a rajzolás melyik fázisában (hányadik lépénél) kezdjen el működni.

Ezen beállítások képenként különböznek. Érdemes velük kísérletezni, míg a pontos használatukat megtanuljuk.

Tippek

  • A nagy memória igény miatt (60 GB RAM és 2 x 30 GB VRAM) ajánlott inkább 1024 x 1024 pixelesnél kisebb képpel dolgoztatni (előfordul, hogy 2048 x 2048-as vagy ennél nagyobb képet is elkészíti, de drasztikusan nő a program erőforrás igénye). Ha mégis nagyobb képre van szükség, akkor próbálkozzunk több grafikai szervert összekötni (szerver indításánál választhatunk több szervert is)
  • Érdemes több úton is próbálkozni! Minden kép más. A SUPIR nagyítás mellett próbáljuk meg azt is, hogy a képet hagyományos módon nagyítjuk, majd a SUPIR programban már csak a képjavítást végezzük.
  • A beépített LlaVa mellett más képanalizáló (image-to-prompt) programokat is próbáljunk ki! Pl. a ChatGPT Image to Prompt Generator GPT programot is. A pontos képelemzés nagyon sokat javít a képen.
A Runpod szerver indításánál választhatunk több szervert is
A Runpod szerver indításánál választhatunk több szervert is

Server leállítása

Amikor befejeztünk a munkánkat ne felejtsük a szervert leállítani. Különben továbbra is fizetjük az óránkénti használat árát.

Sajnos erre nincs gyors módszer.

Bár a SUPIR esetében annyira könnyű a telepítés, hogy nem érdemes a szervert várakozó módban hagyni. Egyszerűbb letörölni, majd a következő használat előtt megvárni azt a 10-15 percet a telepítésre.
Ennek leírását kicsit lejjebb lehet megtalálni.

Ha mégis megtartanánk (a tárhely fenntartási költsége 0.16 USD naponta), akkor a a Connection Options-ban a Connect to HTTP Services Port 8888-ra kattintva kapjuk az admin felületet.

Runpod admin felület
Runpod admin felület

Itt a Terminal ablakot választva adhatunk gépi utasításokat. A szerver leállítása az alábbi kód alapján történik:

runpodctl stop pod [podID]

A [podID] helyére a szerverünk azonosítóját kell beírni. Ez a Pods ablakban a szerverünk neve mellett található.

runpodctl stop pod 5ib091p2si140t
Runpod ID
Runpod ID

A képen látható példa alapján a leállítási parancs a következő lesz:

Ha mindent jól csináltunk, akkor az alábbi kép szerinti a stopped parancs fog megjelenni.

Runpod leállítása
Runpod leállítása

Rövid idő múlva pedig a szerver adatlapján a kék Exited állapot lesz látható. Kilépett, azaz most alvó állapotban van

Runpod alvó állapotban
Runpod alvó állapotban

A Server törlése

A törléshez a Pods menüben a szerverünk adatmezőjében bal alul található három vonalra kattintsunk, majd a Terminate Pod paranccsal törölhetjük.

Utána még menjünk át a Storage menübe. Itt a tárhely neve mellett jobb felül találjuk a három pontot, ahol a Delete paranccsal ezt is végleg törölhetjük.

PixelRita

Loading

No votes yet.
Please wait...

Szólj hozzá!