Kako deluje T-2 pikselator, s katerim ustvarimo T-2 NFT?
T-2 pikselator je rešitev za samodejno izdelavo NFT-jev, kjer uporabnik neposredno sodeluje. S pomočjo takšne storitve je generirana količina NFT-jev lahko neomejena, kljub temu pa je še vedno vsak NFT lahko edinstven. Glavni namen orodja je, da iz slike, ki jo naloži uporabnik, izdelamo NFT, ki se nato prenese v denarnico uporabnika. Bolj natančno - sliko obraza uporabnika pretvorimo v NFT.
Za pravilno delovanje pikselatorja pa je potrebno več korakov in uporaba kombinacije naprednih tehnologij:
1. Zaznava obraza: Za zaznavo obraza je pomembna tako hitrost kot natančnost. Zato smo uporabili funkcijo, ki je zgrajena osnovi kaskadnega klasifikatorja. Metoda, razvita leta 2011, s strani Paula Viole in Michael Jonesa je metoda strojnega učenja, ki na podlagi pozitivnih ujemanj in neujemanj klasificira slike. Potrebno je veliko pozitivnih ujemanj, iz katerih potem vzamemo lastnosti, kot so na primer oči, usta in ostale obrazne lastnosti. Skupaj z lokacijami teh lastnosti obraza na sliki imamo lahko na tej točki že osnovo za klasificiranje.
Ker pa je potrebno ogromno kalkulacij, uporabljamo metodo algoritem Adaboost, ki je metoda za združevanje množice šibkih modelov v najboljsi možen model sestavljen iz šibkih modelov. Glavna prednost takšnega pristopa je hitrost in natančnost algoritma. Adaboost je lahko uporabljen z množico različnih metod strojnega učenja.
Preden pa smo se lotili prepoznave obraza v praksi, smo morali definirati še stopnjo napake, s katero določimo natančnost prepoznave obraza glede na število lastnosti. Stopnja napake se določi asamodejno s pomočjo algoritmov preko iskanja lastnosti obraza. 200 lastnosti naj bi v teoriji prineslo 95% natančnost prepoznave obraza, uporabljeni algoritmi pa imajo v našem primeru kar 6000 lastnosti. Zaradi velikega števila lastnosti uporabimo še metodo kaskadnega klasifikatorja, ki lastnosti razporedi v skupine in preverja vsako skupino po korakih. Če slika ne prestane testa določene skupine kaskadnega klasifikatorja, pomeni, da algoritem ni zaznal obraza. V našem primeru ima celoten postopek 38 skupin.
2. Izrez obraza: Ko sistem zazna obraz, je potreben tudi pravilen izrez obraza. Na nekaterih slikah uporabniki dejansko naložijo portretne fotografije, lahko pa se zgodi, da uporabniki naložijo druge zrvsti fotografij, kjer obraz ni ključen del fotografije. V teh primerih je potrebno obrezati obraz in ga izdelati v portretno obliko. To naredimo tako, da okoli zaznanega obraza izberemo določeno stevilo pikslov in nato izdelamo portretno sliko.
Slika 1: Pred in po zaznavi obraza in izdelavi portrtne slike.
3. Odstranitev ozadja: Odstranjevanje ozadja je po kompleksnosti se težje delo kot zaznava obraza. Predvsem to velja za primere, kjer ozadje ni tako očitno. V našem primeru smo uporabili relativno novo metodo U2-Net, kjer zaznava ozadja ni vezana na določeno skupino slik kot je bilo v preteklosti, ampak je algoritem bolj splošen. Predvsem je ta algoritem uporaben za samodejni izrez elementov iz slike.
Na podlagi metode ReSidual U-Bloc je omogočena učinkovita in hitra zaznava ozadja. Tako lahko učinkovito zaznamo željeni objekt (osebo) in odstranimo ozadje. V našem primeru smo želeli obstoječe ozadje zamenjati za oranžno ozadje.
Slika 2: Slika pred označevanjem ozadja, z odtranjevanjem ozadja in z dodanim novim ozadjem.
4. Dodajanje risankosti: Preden pa našo sliko pikseliramo, je potrebno dodati se risankasti občutek slike. Pikseliranje samo po sebi še ne nudi občutka »Pixel arta«, ker na nek način samo spremenimo resolucijo slike. Če pa zraven dodamo se risankasti občutek slike, pa dobimo dejanski pixel art.
Za potrebe pikseliranja ni potrebno narediti dejanske risanke iz slike. Dovolj je samo, da se poigramo z nekaterimi parametri. V našem primeru se poigramo z barvami, nasičenostjo barv, kontrasti in se nekaterimi parametri, da dobimo občutek narisane slike. Samo po sebi to še ni tako
očitno, vendar potem, ko to sliko pikseliramo, že lahko dobimo pravi občutek.
Slika 3: Slika pred in po aplikaciji filtra za risankost
5. Pikseliranje: Glavna odločitev pri pikseliranju je določitev velikosti samo pikslov. Ker so slike vedno v isti velikosti (512X512), gre za konstanto, ki je v našem primeru 7. Tako dobimo novo velikost slike. Za samo določanje barve pikslov se uporabi metode grupiranja (clusteringa), kot je
na primer »K-Nearest Neighbors«. Na podlagi barv znotraj in okoli posameznega piksla se določi barva piksla. lzračun je potreben za vsak piksel posebej, da se ohrani pravilna barva, kljub močnemu zmanjšanju skupnega števila pikslov.
Slika 4: Slika pred in po pikseliranju
6. Dodajanje elementov na sliko: Po samodejni obdelavi slike imajo tudi uporabniki možnost dodati še nekatere elemente na samo sliko. Za dosega tega cilja uporabimo layerje (kot v Photoshopu), kjer je prvi layer slika, potem pa je vsak dodaten element nov layer. Tako lahko prepoznamo, kateri element je v ospredju ali v ozadju.
7. Izdelava NFT-ja: Na koncu pa sledi še izdelava samega NFT-ja. Končna obdelana slika uporabnika je naložena na spletno mesto, iz katerega enkrat na teden generiramo NFT-je.