Umetna inteligenca | Zasebna umetna inteligenca
UI brez interneta
Umetna inteligenca (UI) brez interneta – je to sploh mogoče? In če je, katere aplikacije lahko namestimo in kako zmogljiv PC zahtevajo?
Čeprav večina umetnointeligenčnih aplikacij, kot je ChatGPT, živi le v velikih internetnih oblakih, v katerih so shranjene nepredstavljive količine vsakovrstnih podatkov, na njih pa izurjeni modeli UI, lahko nekatere od njih namestimo tudi neposredno v svoj računalnik.
Denimo Llama je sodoben veliki jezikovni model (LLM – Large Language Model), podoben ChatGPT, katerega izvorno kodo lahko prenesemo iz GitHuba oziroma ga po priloženih navodilih namestimo v svoj računalnik, »le« učiti ga moramo sami, za kar potrebujemo zelo veliko množico primerov.
Kljub temu pri pisanju tega članka nisem imel v mislih tako kompleksnega LLM, ampak predvsem aplikacije za vsakogar, kot je Upscaly, ki omogoča nekajkratno povečanje ločljivosti poljubne slike ali fotografije.
Primerjava povečav fotografij z aplikacijo Upscaly (levo) in matematičnim orodjem (desno).
Kaj je umetnointeligenčni model?
Najpogostejši tovrstni model je nevronska mreža, ki ni nič drugega kot z matematičnimi enačbami in utežmi poenostavljeno opisan model dela, hm, nevronov. Med učenjem nevronska mreža spreminja vrednosti uteži tako, da se njeni odzivi z množico učnih vzorcev čim bolj približajo pričakovanim. A obenem zna tudi posploševati, tako da se na vhodni vzorec, ki ni bil del učne množice, odzove z asociacijo, ki izraža znanje, pridobljeno med učenjem.
Na vnaprej naučenih nevronskih mrežah temeljijo tudi LLM, ki omogočajo višje kognitivne funkcije ter zahtevnejše učenje in jih uporabljajo številni napredni roboti androidi, kot je Sofija (omenjena v prejšnjem Monitorju). V LLM lahko poteka več učnih procesov hkrati, zato množica več sto ali več tisoč grafičnih procesnih enot, ki jih imajo grafične kartice/vezja Nvidia, bistveno pohitri njihovo učenje.
Čeprav rezultat povečave z Upscaly ni idealen, je kljub temu veliko boljši, kot če za povečanje ločljivosti uporabimo običajne matematične metode. Pri tem je še kako pomembno, kako zmogljiva grafična kartica je v našem PC, česar so se očitno dobro zavedal tudi avtorji aplikacije, ki je že dolgo prirejena za uporabo strojne podpore pri izvajanju povečav. Če te nimamo, lahko programsko orodje vseeno uporabimo, a delovanje je nepredstavljivo počasno ...
Kako delujejo aplikacije UI?
Veliko umetnointeligenčnih programskih knjižnic je napisanih v programskem jeziku Python 3, zato jih lahko poganjamo skoraj v kateremkoli operacijskem sistemu, v katerega lahko namestimo ta programski jezik. V večino operacijskih sistemov Linux je Python že nameščen, vendar pogosto ne v zadostni meri, zato moramo navadno dodati potrebne programske knjižnice. Aplikacije UI za domačo rabo navadno tudi niso posebej hitre, a dokler jih ne uporabljamo v robotiki, kjer pogosto štejejo milisekunde, navadno ni težko počakati nekaj 1deset sekund.
Izvorno kodo odprtokodne umetnointeligenčne aplikacije lahko prenesemo iz GitHuba, vendar je namestitev navadno enostavnejša, če namesto tega poiščemo najnovejšo izdajo programske opreme, ki vsebuje tudi vsa potrebna orodja in navodila na namestitev.
Po uspešni namestitvi je uporaba umetnointeligenčne aplikacije navadno sorazmerno enostavna, a smo jo kljub temu navadno prisiljeni zaganjati iz ukazne vrstice. Poenostavljene namestitve, ki vključujejo tudi aplikacijo z grafičnim uporabniškim vmesnikom (GUI), so v glavnem na voljo za Microsoft Windows.
Umetnointeligenčni programi za domači PC
Čeprav se zdi, da odprtokodnih umetnointeligenčnih programov, ki jih lahko namestimo v svoj računalnik, ni prav veliko, je v resnici ravno nasprotno. Predvsem zaradi popularnih tehnologij, kot je IoT, s katerimi lahko UI kot storitev uporabljamo tudi prek majhnih, v različne naprave vgrajenih krmilnih računalnikov, je GitHub prežet z različnimi zamislimi in odprtokodno programsko opremo, ki jih objavljajo samostojni raziskovalci. Od teh se mnoge umetnointeligenčne aplikacije opirajo na javno objavljene umetnointeligenčne programske knjižnice in razvojna okolja velikih ponudnikov spletnih storitev ter programske opreme. Denimo Pytorch, ki združuje metode globokega učenja nevronskih mrež in sta ga takratni Facebook (zdaj Meta) in Microsoft leta 2016 naredila javno dostopnega za razvijalce programske in strojne opreme. Vključuje aplikacijsko-programske vmesnike za Python in C++, zato ga danes najdemo tudi v številnih komercialnih izdelkih; na njegovi osnovi naj bi deloval tudi Teslin Avtopilot.
Testiranja med računalniškimi zanesenjaki priljubljenih umetnointeligenčnih aplikacij sem se lotil na klasičnem PC in tudi na Raspberry Pi 5, ki je odličen stroj za poganjanje aplikacij Linux. Večina odlično deluje na obeh, zato se včasih zdi veliko večji klasični PC skoraj nepotreben.
Kako preprečiti izgubo kočljivih podatkov?
Če umetnointeligenčne modele uporabljamo prek storitev oblačnih strežnikov, jim moramo pogosto posredovati občutljive osebne podatke (npr. pri obdelavi osebnih fotografij), ki bi načelno morali ostati nedostopni drugim uporabnikom interneta pa tudi skrbnikom oblačnih strežnikov. Vemo, da pogosto ni čisto tako, saj lahko podatki za razpoznavo našega obraza ali obraza naših prijateljev postanejo tržno blago.
Bolje je torej, če kočljive podatke obdelujemo izključno z umetnointeligenčnimi programi, ki jih tečejo le v našem računalniku. Še bolje je, če take programe v celoti namestimo v svoj računalnik, pri čemer ti za obdelavo podatkov ne potrebujejo povezave z internetom.
Digikam (digikam.org) zna razpoznavati obraze, vendar ne brez učenja. Vsako osebo mu moramo najprej predstaviti s kratkim kolažem fotografij iz različnih kotov in v različnih pozah. Šele nato bo znal to osebo poiskati na poljubni fotografiji.
Digikam lahko namestimo skoraj kamorkoli.
Funkcionalnost razpoznavanja obrazov programerji Digikam razvijajo že več kot 15 let, a jo moramo naložiti posebej kot nekakšno nadgradnjo, potem ko aplikacijo že namestimo. To velja tako za različico za Windows kot tisto za Raspberry Pi OS in druge Linuxe.
Najenostavnejša je namestitev v Windows 10 ali novejšem, saj je dovolj, da z interneta potegnemo namestitveno datoteko in jo zaženemo, medtem ko je pri namestitev v Raspberry Pi OS najenostavnejša z uporabo orodja snap. Podrobnosti najdete na spletni strani snapcraft.io/install/digikam/raspbian.
Kako deluje? Digikam vsebuje podporo za prepoznavanje obrazov na osnovi nevronskih mrež že od svoje druge različice, vendar pa je nova tehnologija praktično uporabna šele od različice 7.2, ko so programerji vgradili možnost samodejnega ustvarjanja albumov s slikami določene osebe.
Ko odpremo sliko, Digikam na njej prikaže simbol za dodajanje imena osebe na sliki, nakar moramo isto osebo še nekajkrat označiti na slikah. Nato lahko iz menija Search-->People sprožimo iskanje slik, na katerih je iskana oseba, po celotnem arhivu.
Final2x (github.com/Tohrusky/Final2x/releases) omogoča pametno povečevanje ločljivosti risb in fotografij od dva- do štirikrat po višini in širini hkrati, odvisno od zbranega umetnointeligenčnega algoritma: Real Esrgan, Real Cugan, SRMD ali Waifu. Algoritem UI pred povečevanjem ugotovi kontekst oziroma upošteva, h kateremu elementu spada točka na originalni sliki. Povečevanje ločljivosti slik s čitljivim besedilom ali predmeti z veliko ravnimi linijami za UI sicer ni nerešljiv problem, saj je mogoče na osnovi sorazmerno enostavnega sklepanja dodati manjkajoče pike. Povečamo lahko le JPG in PNG, pri čemer Final2x zahteva Windows 10 ali novejši, ki ga lahko poganjamo tudi v navideznem računalniku.
Final2x deluje najhitreje z novejšimi grafičnimi karticami Nvidia in AMD ali z novejšim procesorjem s procesorsko grafiko. Če navedenega nimate, se lahko podate v nastavitve in kot napravo za preračunavanje slike izberete glavni procesor (CPU), ki je sicer veliko počasnejši, a vseeno deluje. In to ne samo v PC, ampak tudi v Windows 11 v Raspberry Pi 5, v katerega lahko namestimo različico za računalnike z arhitekturo ARM64.
Kdenlive (kdenlive.com) je zastonjsko odprtokodno okolje za večstezno obdelavo in montažo videov in zvočnih posnetkov v Windows 10 ali novejšem, ki ga lahko prenesemo z interneta v nekaj več kot 100-megabajtni datoteki. A je brez nekaterih vtičnikov, kot je DaSiamRPN, ki omogoča sledenje predhodno označenim objektom v videu. Še posebej uporaben je, ker lahko z njim učinkovito zakrivamo posamezne vsebine, na primer naslove IP, obraze ljudi, imenske sezname, registrske oznake vozil ipd.
Kdenlive in zakrivanje vsebine z DaSiamRPN.
DaSiamPRN deluje na osnovi nevronskih mrež z globokim učenjem in je zato običajno veliko natančnejši od matematičnih metod, od katerih so nekatere že serijsko vgrajene v Kdenlive. Ko na začetni sliki označimo področje, ki ga želimo zakriti, in sprožimo analizo videa, DaSiamRPN uporabi nevronske mreže, s katerimi spremlja premikanje ter rast in krčenje označenega področja prek celotnega videoposnetka. To omogoča zakrivanje objekta z različnimi metodami, na primer z zameglitvijo.
Če je objekt, ki ga želimo zakriti, viden le v delu videa, moramo ta del najprej izrezati in ga šele nato analizirati z DaSiamRPN. V nasprotnem nevronske mreže zmedemo, saj kot referenčno sliko vedno vzamejo prvi okvir v videu, zato v nadaljevanju sledijo napačni sliki.
Med klasičnim PC in Raspberry Pi 5
Čeprav je Raspberry Pi 5 odličen za preizkušanje programske opreme UI, pri njeni uporabi ni posebej hiter. Kljub temu je odlična dopolnitev za klasični PC povsod tam, kjer bi sicer morali uporabiti počasni navidezni PC, da bi iz Windows poganjali Linux; ponovni zagon klasičnega PC z drugim operacijskim sistemom pa pogosto vzame preveč časa.
Meshroom (github.com/alicevision/Meshroom) je izjemna zastonjska in odprtokodna umetnointeligenčna aplikacija, ki ustvari trirazsežni žični model predmeta – iz večjega števila njegovih fotografij z ločljivostjo vsaj 10 milijonov pik, posnetih iz različnih kotov. 3D-model lahko nato uporabljamo v programih za trirazsežno načrtovanje (Computer Aided Design – CAD).
Meshroom temelji na Alicevisionovih fotometričnih programskih knjižnicah in polno deluje le v računalnikih s 64-bitnimi Windows in z grafičnimi karticami Nvidia, ki podpirajo protokol Cuda 2.0. Gonilnike za Cuda 2.0 moramo v Windows namestiti posebej. Ostali dovolj zmogljivi računalniki lahko Meshroom poganjajo le v skicirnem načinu, ki daje veliko manj natančne rezultate in je hkrati zelo počasen.
Nameščanje iz datoteke ZIP?
Uporabniki Windows smo vajeni povsem avtomatiziranih namestitvenih datotek, katerih čarovniki nas vodijo skozi celoten postopek namestitve. Umetnointeligenčne aplikacije žal redko najdemo v obliki namestitvenih datotek EXE in MSI. Veliko več jih je v datotekah ZIP in ne potrebujejo nameščanja. Namesto tega jih preprosto razširimo v poljubno prazno datotečno mapo in zaženemo s klikom na zagonsko datoteko EXE, ki jo najdemo v mapi bin ali glavni mapi.
Čeprav jih lahko namestimo na katerikoli podatkovni nosilec, zaradi preglednosti morda vseeno ni slabo tovrstne aplikacije namestiti v podmapo v mapi Program Files na sistemskem disku, nakar ročno ustvarimo bližnjico do zagonske datoteke EXE na namizju.
Spleeter (github.com/boy1dr/SpleeterGui) je nadvse uporabno umetnointeligenčno programsko orodje, ki omogoča razbitje skladb v zapisu MP3 na več datotek, po eno za vsak inštrument ali vokal. Čeprav nima grafičnega vmesnika, je pred leti že požel veliko zanimanja med glasbeniki in komponisti.
Glasbo lahko razdeli na dva do pet zvokovnih zapisov, pri čemer za prepoznavo posameznih kategorij uporablja vnaprej naučene modele UI. Za učenje teh so snovalci aplikacije uporabili vsakovrstno glasbo s strežnikov francoskega ponudnika pretočnih glasbenih storitev Deezer.
Spleeter dobro prepoznava različne glasbene kategorije, kot so vokali, basi, bobni in ritem, za kar izkorišča vgrajeno umetnointeligenčno programsko knjižnico Tensorflow. Za kategorijo glasbe v nove glasbene datoteke uporablja kodirnik Ffmpeg.
Spleeter med razbijanjem skladbe na dve komponenti: vokali in ostalo.
Spleeter je napisan v programskem jeziku Python, zato je pred njegovo uporabo treba namestiti celotno razvojno okolje in vse potrebne dodatne programske knjižnice, kar za začetnike ni najenostavneje. Za operacijske sisteme Windows z .NET 4.8 ali novejše je zato na voljo tudi enotna namestitvena datoteka, ki vključuje namestitev grafičnega vmesnika. Brez tega lahko aplikacijo uporabljamo le iz Power Shella ali terminalskega okna v Linuxu.
Logo Windows 10 na spletni strani Spleeterja z grafičnim vmesnikom sicer daje misliti, da vsaj zadnje različice ne moremo poganjati s starejšimi različicami tega operacijskega sistema, a je ključna možnost namestitve izvajalnega okolja .NET 4.8, ki je k sreči na voljo tudi za nekatere starejše različice. Ker pa razbijanje skladb na glasove in inštrumente zahteva veliko procesorske moči, je, če uporabljate starejši PC, vseeno potrebna dobršna mera potrpežljivosti. Hkrati je tudi več kot očitno, da je Spleeter lačen pomnilnika, saj pri obdelavi zvoka hitro zasede vse, kar je na voljo.
Ko sem se na koncu lotil poslušanja skladbe brez vokalov, je bi rezultat presenetljivo dober; vokali so bili odstranjeni v posebno datoteko, vendar je občutek, da se skrivajo nekje v ozadju in da vseeno hočejo zapeti, a jih algoritem zaduši, ostal. Po drugi strani se med vokali v ločeni datoteki skrivajo tudi zvoki in melodije, podobni vokalom. Kljub temu menim, da je rezultat presenetljivo dober.
Subsync (github.com/sc0ty/subsync/releases) je še eno od nadvse uporabnih orodij UI, ki nam ob pomoči prepoznave govora prihrani obilico dela pri pravilnem časovnem umeščanju podnapisov na videoposnetek. Pri prepoznavi govornih delov videa se zanaša na programski modul Pocketsphinx, iz katerega dobi natančne čase začetkov predvajanj in dolžine predvajanj podnapisov. Subsync deluje le, če predhodno pripravimo datoteko s serijo podnapisov, a brez časov in dolžin predvajanja, lahko pa podnapise tudi samodejno poišče na spletu.
Subsync lahko podnapise shrani v oblikah (npr. SRT), ki jih lahko preberejo številni predvajalniki, med katerimi je tudi popularni odprtokodni VLC. Čeprav deluje le na arhitekturah AMD in Intel, ne pa tudi ARM, ga lahko namestimo v operacijske sisteme Windows, Mac OS X in Linux.
Subsync podpira tudi slovenščino.
Čeprav bi bil tak program zanimiv za televizijske hiše, katerih montažerji morajo k vsakemu novinarskemu prispevku v tujem jeziku, ki ni sinhroniziran v domači jezik, dodati podnapise, ni orodje, s katerim bi lahko podnapise za poljuben film, dokumentarno oddajo ali drug video ustvarili iz govorjenega besedila. Po drugi strani je montažerju neprimerno lažje, če podnapise, ki jih dobi od prevajalca, umetnointeligenčno programsko orodje samodejno razporedi na video.
Upscayl (github.com/upscayl) uporablja metode UI za povečanje ločljivosti poljubne slike, vendar pri tem ni omejen na fiksne faktorje povečave kot Final2x. Preizkušal sem ga kar na fotografiji tiskanega vezja Raspberry Pi Compute modula 4. Rezultat je bil presenetljivo dober, čeprav se moral nanj čakati cel dan, pred tem pa še ročno zamenjati programsko knjižnico po navodilih s spleta, saj nisem imel zahtevane Nvidijine grafične kartice, ki jo zahteva originalna programska knjižnica Volcan. Upscayl sicer deluje le v računalnikih z Windows 10 ali novejšim.
Vosk (alphacephei.com/vosk) omogoča prepoznavanje govora v angleškem jeziku, z dodatki pa tudi v drugih velikih jezikih, in je enostaven za uporabo/namestitev. Predpogoj za namestitev v Windows je nameščen programski jezik Python 3.11. Nato Vosk z interneta namestimo s preprostima ukazoma, ki ju zaženemo iz ukaznega okna: pip install ffmpeg, ki namesti potrebne programske knjižnice, in pip install vosk. Če imamo nameščenih več različic Pythona, namesto pip uporabimo ukaz pip3.
Z umetnointeligenčno aplikacijo Vosk prepoznano besedilo iz videa.
Sam sem se lotil nekoliko zahtevnejše namestitve na Raspberry Pi 5 v operacijski sistem Raspberry Pi OS, ki uspe samo, če poprej vzpostavimo navidezno okolje, v katerem nato poganjamo Vosk.
Delovanje programa je hitro, dokaj kakovostno in sorazmerno enostavno, čeprav deluje iz ukaznega okna. Zaženemo ga z ukazom vosk-transcriber –l en-us –i video.mp4 –o video.txt. Pri tem video.mp4 nadomestimo s katerokoli datoteko z videom v zapisu *.mp4. Po izvajanju dobimo besedilo v izhodni datoteki video.txt. Naj dodam še, da s parametrom l izberemo jezik, v katerem je posnet video.
Vseeno menim, da je Vosk preveč občutljiv na različne govorce, skoraj idealno pa mu gre razpoznava s sintetizatorjem (npr. mimic3, ki je prav tako brezplačen) ustvarjenega govora.
Uporabno?
Ob poplavi priljubljenih programov za obdelavo vsakovrstnih večpredstavnih podatkov, od katerih večina obdeluje podatkov ob pomoči matematičnih in fizikalnih formul ter statističnih metod, se umetnointeligenčne aplikacije lahko učijo na svojih preteklih napakah, s čimer lahko sčasoma svoje delovanje povsem prilagodijo željam uporabnikov.
Ker povprečnega uporabnika ne zanima, kako se bo umetnointeligenčni model učil z relevantnimi primeri, ampak zgolj, kako bo pri svojem delu prišel do boljših rezultatov kot z običajnimi metodami, so v vse več teh aplikacij vgrajeni naučeni umetnointeligenčni modeli, ki optimalno delujejo že po namestitvi umetnointeligenčne aplikacije.
Izbira algoritma za povečavo ločljivosti slike pri Final2X.
Programerji UI poskušajo pripraviti čim splošnejše umetnointeligenčne modele, ki jih je mogoče uporabiti pri reševanju številnih podobnih primerov. Denimo, razpoznavanje govora mora dobro delovati za zelo različne govorce kakor tudi razpoznavanje besedil, ki mora delovati za zelo različne nabore znakov. Tako nastajajo številne umetnointeligenčne programske knjižnice, ki jih lahko zastonj prenesemo iz GitHuba, a z njimi si navadni uporabniki še ne morejo pomagati pri vsakdanjem delu z računalnikom. Teh programskih knjižnic pa so še kako veseli programerji umetnointeligenčnih aplikacij, ki iz njih ustvarijo izdelke za množice. Tako danes skoraj nihče več ne programira umetnih nevronskih mrež z globokim učenjem, ampak raje uporabi ustrezno programsko razvojno okolje (npr. Tensorflow), na osnovi katerega razvije aplikacije. Po drugi strani za obsežnejše aplikacije, ki so plod dela večjih programerskih skupin, nastajajo umetnointeligenčni vtičniki, kakršen je DaSiamRPN, s katerimi jim lahko na enostaven način dodamo umetnointeligenčne funkcionalnosti.
Je umetna inteligenca priročna za uporabo doma? Vsekakor je, kadar omogoča (veliko) boljše rezultate, ne da bi morali laični uporabniki za njegovo uporabo žrtvovati veliko časa. Kljub temu pa nekaj skrbniških spretnosti pri nameščanju zastonjskih aplikacij vedno pride prav, saj se z njimi navadno izognemo nakupu t. i. »profesionalnih« umetnointeligenčnih aplikacij ali mesečnemu plačevanju za uporabo umetnointeligenčnih storitev.