Skip to content

Hlbší pohľad na zásuvný modul Fast Sketch Cleanup pre Kritu

Predchádzajúci príspevok | Friday, 20 December 2024 | Čas čítania: 6 minút | Nasledujúci príspevok

Zásuvný modul Fast Sketch Cleanup

Úvod

Tento projekt sme začali s cieľom poskytnúť užívateľom nástroj užitočný pri inkovaní skíz. Je založený na výskumnüh modeli ch Simo Roppola a Sierra Hallman.

V časti nižšie sú niekoľké sk utočné príklady prípadov použitia a výsledkov zo zásuvného modulu. Výsledky sa líšia, ale väčšina pracovných postupov produkuje niečo, s čím môže umelec ďalej pracovať.

Čo sa týka modelu použitého v nástroji, natrénovali sme ho sami. Všetky dáta v datasete sú darované od ľudí, ktorí podpísali príspevkovú dohodu.

Použiť: cases

Pr iemeruje čiary do jednej čiary a vytvára silné čierne čiary, ale konečný výsledok môže byť rozmazaný alebo nerovnom erný. V mnohých prípadoch je týmto najlepšou cestou použtiť ho s ďalšími krokmi spracovania.

Extrahovanie fotografovanej ceruzkovej skice

Toto je výsledok štandardného postupu použitia filtra Úro vní na skíci na extrahovanie čiar (čo má za následok zaostre né čiary).

sketch_girl_original_procedure_comparison_small

sketch_girl_original_procedure_comparison_small1843×1209 165 KB

Skíca bola nakreslená od Tiar (odkaz na profil KA)

Toto je postup použit ia zásuvného modulu so SketchyModel (Ú rovne → zás. modul → Úrovne):

sketch_girl_new_procedure_comparison_small

sketch_girl_new_procedure_comparison_small1843×2419 267 KB

Porovnanie (pre čierne čiary):

sketch_girl_procedures_comparison_small

sketch_girl_procedures_comparison_small1920×1260 215 KB

Ďalšý možný výsledok je zastaviť pri zásuvnom module bez vynúcania čierných čiar pomocou Ú rovní, čo má za následok peknejšý výsledok so sivými čiarami.

sketch_girl_after_plugin_small

sketch_girl_after_plugin_small1536×2016 161 KB

Inkáž v štýle komixu


Picture of a man made by BeARToys

Tu na obrázkoch vyššie vidíte inking v štýle komixu. Výsledok, ktorý je trochu rozmazaný v porovnaní s originálom, sa môže stáť východiskom pre ďalší užívateľský zásah.

Čistenie čiar

Príklady skíz, ktoré som urobil a výsledok zásuvného modulu, ukazujúce silné a slabé stránky zásuvného modulu.

flower_001

flower_0011209×739 46.5 KB

flower_001_detail

flower_001_detail681×456 22.1 KB

portrait_man_portrait_2_comparison_2_small

portrait_man_portrait_2_comparison_2_small1305×505 139 KB

portrait_man_portrait_2_detail

portrait_man_portrait_2_detail646×1023 26.6 KB

Všetky obrázky vyššie na maľoval Tiar (odkaz na profil KA)

Na obrázkoch nižšie, na šupinách ryby, vidíte, ako model rozlišuje svet lejšie čiary a zvyrazňuje tmavšie.


fish_square_sketchy_comparison_small1920×968 156 KB

Obrázok ryby vytvorila Christine Garner (odkaz na portfólio)

Ako ho použiť v Krite

Zásuvný modul Fast Sketch Cleanup

  1. Pripravte Kritu:
    1. Okná
      1. Zásuvný modul Fast Sketch Cleanup
      2. Alebo osobitne:
        1. Stiahnite prenosnú verziu Krity 5.2.6 (alebo podobnú verziu - mal by sti eda fungovať)
        2. Zásuvný modul Fast Sketch Cleanup
        3. Roz baľte súbor do priečinku krita-5.2.6/ (zachovajúc štruktúru prieč inkov).
        4. Zásuvný modul Fast Sketch Cleanup
    2. Linux
      1. Stiahnite appimage: https://download.kde.org/unstable/krita/5.3.0-prealpha-fast-sketch/krita-5.3.0-prealpha-cdac9c31c...
  2. (Voľno) Nainštalujte ovládače NPU, ak máte NPU na vašom zarêdení (prakticky nutné len na Linuxe, ak máte very nový Intel alebo AMD procesor s NPU).
  3. Spustite zásuvný modul:
    1. Otvorte alebo vytvorte biele plátno so sivo-bielymi čiarami (upozornenie: zásuvný modul vezme aktuálnu projekciu plátna, teda jeho zlúčenie).
    2. Prejdite na Nástroje → Fast Sketch Cleanup
    3. Vyberte model. Pokročilé možnosti budú automaticky vybrané pre vás.
    4. Počkajte, kým skončí spracovanie (dialóg sa potom automaticky zatvorí).
    5. Skontrolujte, či vytvoril novú vrstvu s výsledkom.

Tipy pre spracovanie

V súčasnosti je lepšie použiť len SketchyModel.xml, vo väčšine prípadov funguje výrazne lepšie ako SmoothModel.

Musíte sa uistiť, že pozadie je dosť svetlé a čiary, ktoré chcete zachovať vo výsledku, sú rel atívne tmavé v porovnaní s pozadím.

Po spracovaní môžete chcieť zlepšiť výsledky buď filtrom Ú rovní alebo filtrom Ostrím, v závislosti od vašich požiadaviek.

Technológia a veda za tým

Jedinečné požiadavky

Prvá jedinečná požiadavka bola, že musí fungovať na plátnach všetkých veľkostí. To znamenalo, že sieť nemohla mať žiaden pe vný vstupný rozmer.

Ďalšia výzva bola, že sme nemohli použiť model, ktorý vytvorili, keďže nebol kompatibilný s licenciou Krity.

Naviac sme nemali žiaden dataset, ktorý by sme mohli použiť. Simo & Sierra používal dataset, kde očakávané obrázky boli všetky nakreslené ručne. Naš výskum vyžadoval odľehlý, prirodzenejší dataset.

Odkaz na náš úplný dataset nájdete nižšie v časti Dataset.

Architektúra modelu

Všetky hlavné vrstvy sú buď konvolučné alebo dekonvolučné (na konci modelu). Po každej (de)konvolučnej vrstve nasleduje vr stva dávkovej normalizácie a aktivačná vrstva ReLU.

Použité Python balíčky: Pillow, Numpy, PyTorch a Openvino

Numpy je štandardná knižnica pre všetky druhy polí a pokročilé maticové operácie a Pillow sme použili na čítanie obrázkov.

Použitie NPU pre inferenciu


This table shows the result of benchmark_app, which is a tool that’s provided with Intel’s python package openvino. It tests the model in isolation on random data. As you can see, the NPU was several times faster than the CPU on the same machine.

Na druhej strane, zavedení NPU pridalo výzvu: jediné modely, ktoré môžu bežať na NPU, sú statické modely, čo znamená, že musia byť zafixované na konkrétnu veľkosť vstupu.

Ako trénovať vlastný model

Ak chcete natrénovať vlastný model, budete potrebovať niekoľko technických znalostí, páry obrázkov a výkonný počítač.

Ovládače a príprava

Musíte nainštalovať Python3 a nasledujúce balíčky: Pillow, openvino, numpy, torch. Pre kvantizáciu modelu je tiež potrebný neural_compressor.

Ak ste na Windows, pravdepodobne máte ovládače pre NPU a dedikovaný GPU. Na Linuxe môžete potrebovať nainštalovať ovládače NPU osobitne.

Naviac, ak chcete použiť iGPU na trénovanie (ktoré môže byť ešte výrazne rýchlejšie než na CPU), pravdepodobne budete potrebovať nainštalovať XPU ovládače.

Ak sa vám podarí správne spu stiť zariadenie XPU na vašom počítači, ešte budete potrebovať upraviť trénovacie skripty, aby používali XPU zariadenie.

Dátová sada

Na trénovanie modelu budete potrebovať niekoľko obrázkov. Musia byť v pároch.

Pred trénovaním je najlepšie rozšíriť dáta: to znamená, že obrázky sú otočené, zväčšené alebo zmenšené a spúhadané, aby sa zvýšil počet trénovacích príkladov.

Ako použiť skript na rozšírenie dát je vysvetlené nižšie v podrobných pokynoch pre časť trénovania.

Tu je dataset, ktorý sme použili (prosím, pečlivo si prečíate licenciu, ak ho chcete použiť):

Výber modelu a ďalších parametrov

Pre rýchle výsledky použite tooSmallConv; ak máte viac času a zdrojov, typicalDeep môže byť lepším nápadom.

Použiť: adadelta as the optimizer.

Môžete použiť buď blackWhite alebo mse ako funkciu strát; mse je klasické, ale blackWhite môže viesť k rýchlejším výsledkom.

Tréning

  1. Klonujte repozitár na https://invent.kde.org/tymond/fast-line-art (na vetve 3.x).

  2. Potom pripravte priečinok:

    • Vytvorte nový priečinok pre trénovanie.
    • V prieč inku spustite:
      python3 [prieč inok repozitára]/spawnExperiment.py --path [cesta k novému prieč inku, relatívna alebo absolútna]
  3. Pripravte dáta:

    • Ak máte existujúci rozšírený dataset, vložte ho všetok do data/training/ a data/verify/, pamätajúc si, že spárované obrázky musia byť v rovnakých prieč inkoch.
    • Ak nemáte existujúci rozšírený dataset:
      1. Vložte všetky surové dáta do data/raw/, pamätajúc, že spárované obrázky musia mať rovnaké názvy s pridanou predponou (napr. "in_" a "out_").
      2. Spustite skript prípravy dát:
        python3 [prieč inok repozitára]/dataPreparer.py -t taskfile.yml
        To rozšíri vaše páry.
  4. Upravte súbor taskfile.yml podľa svojich požiadaviek. Najdôležitejšie časti, ktoré chcete zmeniť, sú:

    • typ modelu - kódový názov typu modelu, použite tinyTinier, tooSmallConv, typicalDeep alebo tinyNarrowerShallow
    • optimalizátor - typ optimalizátora, použite adadelta alebo sgd
    • rýchlosť učenia - rýchlosť učenia pre sgd ak je používané
    • funkcia strát - kódový názov funkcie strát, použite mse pre stred nú kvadratickú chybu alebo blackWhite pre vlastnú funkciu strát
  5. Spustite trénovací kód:
    python3 [prieč inok repozitára]/train.py -t taskfile.yml -d "cpu"

    Na Linuxe, ak ho chcete spustiť na pozadí, pridajte "&" na konci. Ak beží na popredí, môžete trénovanie pozastaviť stlačením Ctrl+Z.

  6. Konvertujte model na model openvino:
    python3 [prieč inok repozitára]/modelConverter.py -s [veľkosť vstupu, resp. plátno] -t [cesta k taskfile.yml]

  7. Umiestnite oba súbory modelu .xml a .bin do vašej priečinky zdrojov Krity (vnútri pykrita/fast_sketch_cleanup podprieč inku)