Ali računalniki lahko postanejo zares pametni?
Kako se računalniki učijo, razumejo naučeno in kako se samostojno odločajo? Je najboljša programska oprema za umetno inteligenco še vedno odprtokodna in zastonj? Lahko poleg domačega PC tudi raspberry pi postane pameten?
Umetna inteligenca (UI) z velikimi koraki vstopa v naša življenja: od sodobnega družinskega avta, ki kdaj pa kdaj sam poprime za volan, samovoznih taksijev, robotiziranih dostavljalnikov hrane in drugih izdelkov, varnostnih sistemov, ki samodejno prepoznajo sumljive osebe in stvari na letališčih ter drugih varovanjih lokacijah, do robotskih svetovalcev za večje nakupe, s katerimi se bomo lahko pogovarjali kot z živim človekom prek telefona, po internetu, ali v živo. Vendar je bilo o tem, kakor tudi o organizaciji OpenAI, ki spodbuja razvoj vseh vrst UI, v Monitorju že veliko napisanega.
Tokrat nas bo zanimalo, kakšna strojna in programska oprema omogočata računalnikom učenje in prilagajanje različnim okoljem ter reševanje zapletenih problemov, kot je razpoznavanje predmetov in oseb v prostoru. Zanimalo nas bo tudi, katera programska orodja UI in programske knjižnice UI lahko prenesemo s spleta, pa še, ali lahko s sorazmerno malo dela sestavimo uporabne aplikacije UI.
Robot ni pameten zaradi neštetih tipal, ampak zaradi programske opreme, ki s slike iz kamere prepozna ovire v prostoru, da se jim robot lahko izogne.
Med zadnjimi je v zadnjem času veliko takih, ki se zanašajo le na zmogljivosti UI velikih javnih računalniških oblakov, kot so Googlov, Microsoftov in Amazonov, a prav zato pogosto niso primerne, saj ob prekinitvi dostopa do interneta odpovedo. Po drugi strani prednost avtonomnih aplikacij UI ni samo neodvisnost od interneta, ampak tudi, da s tipal zajetih podatkov ne pošiljajo v obdelavo na oddaljene internetne strežnike javnih računalniških oblakov, zato jih lahko uporabljamo tudi v okoljih, kjer je potrebna najvišja stopnja varovanja osebnih in drugih zaupnih podatkov.
Imajo vse, razen pameti!
Čeprav večina pametnih telefonov, predvsem zaradi prednameščene programske opreme v operacijskih sistemih Android in iOS, ki ne vsebuje zmogljivejših funkcij UI, v resnici ni kdove kako pametna, imajo novejši modeli presenetljivo veliko serijsko vgrajenih tipal: kamere, mikrofone, sprejemnike signala GPS, merilnike orientacije in položaja v prostoru, merilnike notranjih temperatur baterije in procesorja, merilnike vremenskih parametrov itn. Tudi večina notesnikov in računalniških tablic ima vgrajene kamero, mikrofon in kopico merilnikov notranjih temperatur ter delovnih napetosti, medtem ko pri namiznih računalnikih pogosto manjka le spletna kamera z mikrofonom, a tu si lahko pomagamo s pametnim telefonom in z ustrezno programsko opremo (npr. Camo), s katero ta prevzame funkcijo spletne kamere.
Najpogostejše (pred)nameščene pametne aplikacije, ki samostojno delujejo v pametnih telefonih, so bralniki črtne kode, vendar te ne potrebujejo zmogljive UI.
Kaj pa domači robotski pomočniki? Robotski sesalnik, kosilnica in čistilnik bazena imajo tipala za zaznavanje ovir, oddaljenosti od robov prostora in orientacijo v njem. Obenem zna večina prostor izmeriti in izdelati načrt gibanja v njem, zato lahko svoje delo opravijo po najkrajši mogoči poti. Lahko rečemo, da so še kar pametni, a vgrajene programske opreme večinoma sami ne moremo in ne smemo spreminjati.
Kakšno razvojno okolje izbrati?
Razvojno okolje UI izberemo glede na reševani problem, razpoložljivi programsko in strojno platformo pa tudi glede na svoje programersko znanje in izkušnje. Zahtevnim in bolj izkušenim (profesionalnim) uporabnikom grafično razvojno okolje sicer pomaga pri iskanju osnovnega modela UI, vzpostavitvi začetne zbirke učnih podatkov in preverjanju konceptov, a v nadaljnjih korakih iščejo bolj integrirane in hitrejše rešitve v programskih jezikih C in C++. Modele UI lahko z ustreznimi aplikacijskimi programskimi vmesniki vseeno uporabijo tudi v aplikacijah v drugih programskih jezikih, kot sta Java in Javascript.
Manj zahtevni raziskovalci in domači uporabniki si po drugi strani težko privoščimo mesece razvoja in programiranja, zato pride popularni programski jezik Python z enostavnimi in s sorazmerno lahko razumljivimi primeri programske kode še kako prav, ko želimo domači računalnik uporabiti še za kaj drugega kot za pisanje besedil, gledanje videa in igranje računalniških igric.
Na večini lestvic priljubljenosti razvojnih okolij UI je Google Tensorflow uvrščen na prvo mesto.
Razvojno in izvajalno okolje lahko namestimo v svoj računalnik ali pa se zadovoljimo z že izdelanimi storitvami UI velikih javnih računalniških oblakov, kot so Amazonov AWS, Google Cloud in Microsoft Azure. Zadnje zahteva stalno povezavo z internetom in nenehno posredovanje toka vzorcev oblačnemu storitvenemu strežniku, ki izvaja modele UI in vrača odgovore, denimo koordinate okvirjev predmetov, ki jih je odkril v posredovanih slikah.
A pri kolikor toliko resnih aplikacijah UI, denimo takih, s katerimi bi prepoznali vlomilca v našem domu, se ne moremo zanašati na stalno dostopnost interneta, zato moramo hočeš nočeš ves model UI izvajati v lastnem računalniku. Večina brezplačnih razvojnih okolij UI zahteva pri učenju modelov UI rabo zahtevnejše strojne opreme (npr. namiznega PC), medtem so za izvajanje na voljo poenostavljena okolja, kot je Tensorflow lite, ki ga lahko izvajamo tudi na raspberry pi in podobnih mikro PC.
Kaj je model UI?
Marsikdo si strojno učenje najlažje predstavlja v povezavi z globokim učenjem modelov umetnih nevronskih mrež, ki delujejo v digitalnem računalniku, vendar umetne nevronske mreže niso edini modeli UI. Strojno učenje lahko izvajamo, denimo, nad odločitvenimi drevesi. Model UI je zato logična struktura, ki omogoča uporabo metod UI. Te računalniku omogočijo učenje reševanja težkih problemov, denimo prepoznavanja predmetov v prostoru, pretvorbo govora v besedilo, gibanje in orientacijo robota v prostoru, poglobljeno analizo velikih podatkovnih zbirk, samostojno odločanje itn.
Od prvih programskih knjižnic UI ...
Sredi 90. let preteklega stoletja, ko so v številnih laboratorijih za UI po vsem svetu začeli (večinoma na osnovi PC) pospešeno graditi okorne samovozne in bolj ali manj pametne robote z računalniškim vidom in preizkušati različne metode UI, je bilo na spletu še zelo težko dobiti uporabna razvojna okolja in/ali programske knjižnice za hiter razvoj aplikacij UI. Večina danes uveljavljenih algoritmov UI, med katere sodijo tudi algoritmi za implementacijo umetnih nevronskih mrež, je bila še v povojih. O njih smo lahko brali v znanstvenih in specializiranih strokovnih revijah, večino pa smo lahko preizkusili le, če smo jih sami sprogramirali v katerem od višjih programskih jezikov, med katerimi je bil sta bila najbolj priljubljena C in C++. Tu in tam se je vendarle našel kak primer programske kode, medtem ko so raziskovalci UI brez znanja ali volje po programiranju lahko uporabili tudi Matlab, če so zanj dokupili ustrezne module UI.
Danes je na spletu na voljo presenetljivo veliko razvojnih okolij UI in programskih knjižnic z vrsto primerov in orodij za razvoj aplikacij UI. Večina je bila najprej izdelana za PC in Applove mace, kasneje pa so nastale tudi okrnjene različice za uporabo v mikro PC (npr. raspberry pi) z omejenimi pomnilniškimi in procesorskimi zmogljivostmi. Pri zadnjih sicer ne moremo izvajati strojnega učenja, a lahko poganjamo že naučene modele UI, kar je odlično, saj je raspberry pi zaradi njegove majhnosti in majhne porabe električne energije sorazmerno enostavno vgraditi v robote, drone in robotska vozila in plovila.
... do brezplačnih odprtokodnih razvojnih okolij
UI iz raziskovalnih ustanov in razvojnih oddelkov velikih proizvajalcev elektronike danes le počasi prehaja v splošno uporabo. Morda pa je prav zato največ kakovostnih razvojnih okolij UI še vedno brezplačnih in odprtokodnih, saj so njihovi lastniki željni prostovoljnih prispevkov programske kode iz internetnih skupnosti.
Apple core ML (developer.apple.com) poenostavlja uporabo modelov strojnega učenja (SU, angl. machine learning) v uporabniških aplikacijah. Uporabljamo ga lahko tudi v spletnem oblačnem razvojnem okolju Cloudkit, v katerem lahko razvijamo vsakovrstne podatkovne modele. Pri tem je na voljo načrtovalsko namizje, kjer povezujemo različne module v večji podatkovni model, ki usmerja tok podatkov. Za nameščanje modelov UI uporabljamo Core ML model deployment dashboard.
Apple core ML v okviru platforme iCloud favorizira načrtovanje celotnega podatkovnega modela, kamor po potrebi vključimo modele UI.
Caffe (caffe.berkeleyvision.org), napisan v programskem jeziku C++, so razvili v Berkeley AI Research. Kot brezplačna programska oprema je na voljo od leta 2017, vendar nasprotju z veliko drugimi programskimi knjižnicami UI nima vgrajenega jezika za opisovanje modelov UI in toka podatkov med njimi, temveč morebitno implementacijo tovrstnih funkcionalnosti v celoti prepušča uporabnikom. Namenjen je predvsem segmentaciji in klasifikaciji slik, za katero lahko uporabimo različne modele UI z globokim učenjem. Odlikuje ga tudi hitro delovanje, saj izkorišča surovo moč grafičnih procesorjev zmogljivih grafičnih kartic.
Keras (keras.io) ni samostojna programska knjižnica, temveč za svoje delovanje potrebuje eno izmed podpornih razvojnih okolij UI: Tensorflow, Microsoft cognitive toolkit ali Theano. Je modularen, ima uporabniku prijazen visokonivojski uporabniški vmesnik in omogoča hitro preizkušanje novih zamisli. Pri povezovanju in dodajanju modulov ni bistvenih omejitev. Omogoča pohitritev računanja ob pomoči vektorskih ukazov in več jedrih glavnega procesorja ter izkorišča velike zmogljivosti grafičnih procesorjev sodobnih grafičnih kartic.
Microsoft cognitive toolkit (docs.microsoft.com/en-us/cognitive-toolkit), katerega del sta tudi popularni programski knjižnici OpenCV in ONNX, je nastajal od leta 2016 in je bil namenjen tudi komercialni uporabi. Čeprav so ga prenehali razvijati, ga še vedno lahko prenesemo in namestimo z Microsoftovih spletnih strani in Githuba. Omogoča integracijo številnih tehnik globoko učenje (GU, angl. deep learning) pa tudi model za SU, je učinkovit pri reševanju različnih problemov in odličen pripomoček pri sestavljanju novih programskih oprem. Je tudi eno izmed prvih razvojnih okolij, ki podpira zapis nevronskih mrež v obliki ONNX (angl. Open Neural Network Exchange) za izmenjavo (optimiziranih) modelov nevronskih mrež med različnimi razvojnimi okolji. Uporabljamo ga lahko v programskih jezikih C++, Python, C# in BrainScript. Priložene algoritme za SU pa lahko uporabimo v izvorni obliki, prilagodimo ali pa namesto njih uporabljamo svoje.
Preizkušanje funkcionalnosti OpenCV v Microsoft Visual Studiu
Pytorch (pytorch.org) je napisana v programskih jezikih C++ in Python in je ena najboljših knjižnic UI, katere zahtevnost izvajanja med SU lahko prilagodimo zmogljivosti razpoložljive strojne opreme. Zahvaljujoč bogati izbiri modelov UI jo lahko uporabljamo tudi pri aplikacijah za procesiranje naravnih jezikov. Zaradi arhitekture, ki omogoča izkoriščanje velikih zmogljivosti javnih računalniških oblakov, omogoča tudi učenje in poganjanje najzahtevnejših modelov UI.
Tensorflow (tensorflow.org) ni samo skupek odprtokodnih programskih knjižnic, ampak vključuje tudi razvojno okolje Google AI tools, ki v veliki meri olajša in pohitri sestavljanje ter preizkušanje programov v Pythonu. Uporabniški vmesnik Colab deluje na spletnem strežniku Jupyter, ki ga lahko zastonj prenesemo in namestimo v svoj računalnik z interneta. S tem se izognemo pošiljanju svoje programske kode v Googlov oblak, a je kljub temu uporaba tega priporočljiva za začetnike, saj se s tem izognejo zahtevnemu nameščanju programske opreme. Za uporabo AI tools je dovolj Googlov račun, ki ga večina že tako in tako uporablja za elektronsko pošto Gmail.
Tensorflow je napisan v programskih jezikih Python in C++ ter poleg SU omogoča tudi uporabo nevronskih mrež z GU. Visoka stopnja učinkovitosti programske knjižnice, zasnovane na toku podatkov, se kaže pri klasifikaciji, razumevanju problemov, odkrivanju, ustvarjanju in napovedovanju dogodkov. Googlova partnerska podjetja nudijo širok krog na Tensorflowu temelječih programskih rešitev in storitev.
Theano (deeplearning.net/software/theano) spada med kakovostne programske knjižnice UI, ki so dobro optimizirane za hitro izvajanje. Še posebej se izkaže pri uporabi nevronskih mrež z GU, saj je veliko hitrejša od klasičnih programskih knjižnic v Pythonu, denimo Numpy. Obenem omogoča visoko stopnjo paralelizacije in s tem dobro izkorišča zmogljivosti velikih večprocesorskih računalnikov ter večračunalniških sistemov. Zaradi prilagodljivosti je uporabna za industrijsko uporabo, pri raziskavah in kot pripomoček pri poučevanju UI.
Omenimo še, da lahko za procesiranje modelov UI s pridom uporabimo tudi splošne programske knjižnice za numerično matematiko, kot je Numpy (numpy.org), le da od njih ne smemo pričakovati že izdelanih modelov UI, temveč lahko te sorazmerno hitro zgradimo sami, na voljo pa so tudi funkcije (npr. kartezijski produkt) za računanje z njimi. Po drugi strani pri analizi zvoka pogosto pride prav tudi Fourierova transformacija, ki je prav tako ne bomo pogrešali.
Kako načrtovati tok in obdelave podatkov?
Tok podatkov iz podatkovnih zbirk, prek modelov UI v modele za odločanje in krmiljenje ter nazaj v podatkovne zbirke, je bilo včasih mogoče realizirati le z zahtevno računalniško aplikacijo. Danes imamo na voljo veliko načrtovalskih orodij z visokonivojskimi opisnimi programskimi jeziki, ki nam prihranijo in poenostavijo korake načrtovanja ter sestavljanja programske logike z vgrajenimi modeli UI. Pri tem je grafični urejevalnik v veliko pomoč, saj omogoča, da si lažje predstavljamo podatkovne tokove, ki so ključni za delovanje UI.
Naj verjamemo, da so živi?
Da je govoriti o naravni inteligenci in samozavedanju v povezavi z računalniki in umetnimi nevronskimi mrežami lahko kočljivo, je pred meseci na lastni koži občutil Googlov razvojni inženir Blake Lemoine, ko je javnosti predstavil robota LaMDA, s katerim se lahko pogovarjamo v naravnem jeziku (npr. angleščini). Ker je pri tem menil, da je do neke mere sposoben samozavedanja, je požel veliko negodovanja in na koncu izgubil službo.
Strah pred umetno ustvarjenim samozavedajočim se bitjem je za večino ljudi, ki so tovrstne (pre)pametne robotske pomočnike spoznali v znanstvenofantastičnih filmih Vojna zvezd in Zvezdne steze, do neke mere utemeljen. Želimo lagodnejšega in varnejšega življenja, vendar nočemo ustvariti novodobnih robotskih sužnjev, s katerimi bi se postavili ob bok starim Rimljanom.
Današnja umetna inteligenca zna dobro posnemati človeško vedenje, dostopa do velikih podatkovnih zbirk znanja in zna sprejemati odločitve tudi na osnovi lastnega učenja. Kljub temu so po mnenju večine strokovnjakov računalniški sistemi UI še za nekaj velikostnih razredov premalo zmogljivi, da bi jih lahko primerjali s kompleksnostjo človeških možganov.
Sodobno načrtovanje sistemov z UI
Visoka stopnja kompleksnosti razmišljanja in razumevanja konceptov ter možnost poglobljenega učenja so vsekakor nujni za dosego visoke stopnje inteligence in povsem avtonomno odločanje, vendar ne poznamo načina niti natančnega trenutka in pogojev, pri katerih se odraščajoči človeški možgani začno samozavedati in ko s tem postanemo to, kar smo.
Učeče se umetne nevronske mreže so medsebojno povezane s hevrističnim programskimi algoritmi, ki smo jih ustvarili ljudje in vsebujejo najboljše prakse, kako se odzvati v vnaprej predvidenih situacijah, zato lahko med pogovorom ali komunikacijo s tipkanjem računalnik uporabniku dlje časa daje vtis, kot da se pogovarja z živo osebo.
Že v srednjem veku so ob pomoči urinega mehanizma izdelali avtomatizirano lutko pisarja, ki namoči pisalno pero v črnilo in vsakokrat v prelepi pisavi v latinščini zapiše Cognito, ergo sum (Mislim, torej sem). Tistim, ki so vedeli, da jo poganja urin mehanizem, je bilo vselej več kot očitno jasno, da ni živa.
Roboti androidi so danes veliko prepričljivejši, a kljub temu še daleč od tega, da bi karkoli počeli zavestno ali se celo po svoji volji uprli svojim lastnikom. Če se ustavijo, ko si najmanj želimo, ali počno nepričakovane (morda celo nevarne) stvari, je to skoraj gotovo zaradi številnih programerskih napak in pomanjkljivosti pri načrtovanju njihove ekspertne logike, v kateri pogosto ne manjka tudi konceptualnih napak. Ekspertna logika obenem navadno odloča tudi o tem, kaj, kdaj in koliko se učijo.
Menim, da bo moralo preteči še veliko časa in da bomo morda ljudje prej ustvarili uporabne kvantne računalnike, preden bomo sposobni z elektroniko ali s katero drugo tehnologijo posnemati človeške možgane do te mere, da se bodo naši stroji začeli zavedati samih sebe. Da sta neskončna edino vesolje in človeška neumnost, je menil že Albert Einstein, čeprav o vesolju ni bil povsem prepričan.
Kako se računalnik uči?
Pri SU pogosto uporabljamo dvofazne učeče se modele UI, ki jim moramo najprej zagotoviti veliko množico primerov vhodnih vzorcev in pravilnih odgovorov nanje. Tako se naučijo posploševati in znajo v drugi fazi (redna uporaba) poiskati karseda pravilne odgovore tudi za vzorce, ki se jih niso učili.
Model UI, ki je načrtovan do zadnje podrobnosti tudi glede možnosti učenja.
Precej drugačen način SU je samodejna klasifikacija, pri kateri računalnik ne dobi pravih odgovorov, ampak le raznovrstne vzorce, ki jih mora uvrstiti v skupine po medsebojni podobnosti. Skupinam v nadaljnjih fazah obdelave podatkov pripišemo tudi konkreten pomen, denimo: (0) Robot je pred oviro, ki se ji lahko izogne z vožnjo po levi. (1) Robot je pred oviro, ki se ji lahko izogne z vožnjo po desni. (2) Robot mora pred oviro obrniti in iti po drugi poti ...
Visoka stopnja vzporednosti je ključ do uspeha
Učenje zahtevnejših modelov UI navadno zahteva veliko procesnih zmogljivosti, a ga lahko k sreči razbijemo na veliko vzporednih procesov. Prav zato dajejo mnoge programske knjižnice UI poseben poudarek podpori vzporednosti na vseh ravneh procesiranja.
Ena najpomembnejših in najpogosteje optimiziranih računskih operacij pri učenju in uporabi modelov UI je kartezijski produkt (angl. tensor product), s katerim medsebojno množimo matrike s podatki. Njegovo izvajanje lahko pohitrimo skoraj z vsemi oblikami paralelizma, ki ga najdemo v sodobnih računalnikih, od več procesorskih jeder in vektorskih operacij do izkoriščanja zmogljivosti igričarskih grafičnih kartic s tisoči enostavnimi procesorji. Večina programskih knjižnic UI se zanaša prav na zadnje, zato marsikatera (vsaj v izvedljivo kodo prevedeni obliki) ne bo delovala v deset ali več let starem namiznem PC ali macu, a jo bomo vseeno lahko poganjali na novejšem poceni prenosniku.
Kdaj uporabiti Pythnon, kdaj C/C++ in zbirnik?
Dilema, kateri programski jezik uporabiti za hitro gradnjo aplikacij UI, še dolgo ne bo končana, a mnoge zmogljive programske knjižnice UI so razvili prav s priljubljenim odprtokodnim programskim jezikom Python, katerega začetki segajo v 90. leta preteklega stoletja. Python lahko uporabljamo v številnih razvojnih okoljih in operacijskih sistemih. Ima tudi eno največjih spletnih skupnosti, zato hitro najdemo pomoč pri reševanju še tako zahtevnega problema. Ker je odprtokoden, ga lahko prenesemo tudi v prihajajoče operacijske sisteme in razvojna okolja, v katerih še ni podprt. Programov v Pythonu zato skoraj ni treba spreminjati, ko jih prenašamo med različnimi računalniškimi platformami.
Razhroščevanje programske kode je sorazmerno enostavno, saj je Python ukazov ne prevede v strojno kodo, ampak jih interpretira. Med izvajanjem programa se zato vselej ustavi natančno na vrstici z napako, ki jo natančno opiše.
Raspberry pi 4 se izkaže kot odličen krmilnik z vgrajeno UI za manjše robote.
Po drugi strani lahko z uporabo programskega jezika C/C++, ki se veliko bolj približa procesorski izvedljivi kodi, za vsaj en velikostni razred povečamo hitrost izvajanja programov na isti strojni opremi. Ne preseneča torej, da so bila starejša, raziskovalcem manj prijazna razvojna okolja UI izdelana prav v tem programskem jeziku. Danes je C/C++ še vedno popularen za gradnjo hitrih programskih knjižnic UI, ki svoje funkcionalnosti ponudijo glavnemu programu v poljubnem programskem jeziku prek aplikacijskega programskega vmesnika (API).
Nekateri programerji hitrih programskih knjižnic UI gredo v želji, kako iz strojne opreme iztisniti prav vse atome moči, tudi tako daleč, da dele programske kode napišejo celo ??? zbirniku (angl. assembler), a je njihova uporaba nato omejena le na eno procesorsko arhitekturo (npr. ARM ali Intel) in en operacijski sistem (npr. Android, Linux, Windows). To je sicer edini način, kako strojno učenje učinkovito izvajati tudi v majhnih računalnikih, kot so pametni telefoni in raspberry piji.
UI z raspberry pi
Raspberry pi 4 z 8 GB delovnega pomnilnika, s pomnilniško kartico s 64 GB ali več in primernim sistemom hlajenja, ki omogoča navijanje procesorja, je odlična osnova Linux za preizkušanje različnih implementacij UI. Med drugim tudi zato, ker je računalnik dovolj majhen in lahek, da ga lahko vgradimo tudi v manjše drone, robotska plovila in vozila. Raspberry pi 3 ali 4 je tudi 64-biten, kar omogoča hitrejše računanje zahtevnih modelov UI.
O nalaganju operacijskega sistema na novo pomnilniško kartico ne kaže izgubljati besed, se pa pogosto izplača uporabiti eno od različic, ki so priporočene za posamezno razvojno okolje ali programsko knjižnico UI, saj nam tako ne bo treba prilagajati navodil za namestitev. Pri zadnji se moramo natančno držati navodil tudi pri vrstnem redu nameščanja posameznih programskih paketov, še posebej pa pri razponu podprtih različic, zato bomo morali kdaj pa kdaj namestiti tudi kako starejšo različico.
Zdaj se lotimo namestitve 64-bitne programske knjižnice OpenCV, ki omogoča računalniški vid, sledi namestitev programa ali programov za zajemanje žive slike s kamere, denimo Gstreamerja. Kot okolje za razvoj projektor v C++ lahko namestimo Code::blocks, nakar s spleta prenesemo še primer globokega učenja za raspberry pi, kar storimo z ukazom wget https://github.com/Qengineering/Face-Mask-Detection-Raspberry-Pi-64-bits/archive/master.zip, lahko pa tudi ročno. Nato se lotimo prevajanja in zaganjanja programske kode. Podrobnejša navodila najdete, če v spletni iskalnik (npr. Google) vpišete geslo: Deep learning examples on Raspberry 32/64 OS.
Za konec omenimo še, moramo za uporabo OpenCV (različica za C++) v PC prej vanj z interneta naložiti in namestiti Microsoftovo brezplačno razvojno okolje Visual Studio 2019 ...