Slika 1 je zelo povedna. Celotna civilizacija se spreminja zaradi izdelka (pametni telefon), ki ga je omogočilo enostavno združevanje procesorja, grafične kartice in potrebne strojne opreme na eno rezino silicija.
V grafični kartici se skrivajo standardi jpeg in H.26x za strojno kodiranje in dekodiranje slike in filma. Gre za stiskanje z izgubo informacije (za razliko od npr. zip stiskanja, kjer se informacija ne izgublja), ki ni nujna za zaznavanje slike. Vse kamere od 4K navzgor (standard govori do 64K) imajo takoj poleg tipala tudi strojno kodiranje slike. Na strani predvajalnika imamo strojno dekodiranje slike. Vzrok je očiten, gre za preveliko količino podatkov, da bi jih lahko prenašali in shranjevali dovolj hitro. HD kamere so še imele možnost brez kodiranja, zato si moral kodirati sliko v računalniku. Zato ima npr. raspberry dekoder in koder za H.264 standard. Od 4K navzgor je dekodiranje in kodiranje na mestu predvajanja ali snemanja postala nuja.
Ta vsebina je samo za naročnike
Kaj trenutno dogaja?
Zadnjič smo si ogledali opencv (Vir 1) knjižnico in prve vaje strojnega vida. Strojni vid je danes prevladujoča tema in bi bilo odlično, če bi se našla duša, ki bi pomagala pri razvoju vaj. Prepoznavanje obraza (znakov), sledenje objekta, določanje razdalje in orientacije je samo nekaj zanimivih tem.
Opencv vaje rešujejo priklop na različne kamere (IP kamera, USB kamera in vgrajena kamera na raspberry računalniku, ki je v opuščanju. Naslednje znamo prepoznavati obraze in znamo na posamezno sliko risati objekte (tekst, kvadrat, črta itd). Vse to na živi sliki. Pomembne so tudi vaje odpiranja ali shranjevanja slik v posnetke. Ne smemo pozabiti na številne efekte, ki jih sprogramiramo sami. Gre za veliko več kakor uporabo klasičnih urejevalnikov posnetkov.
Trenutno je fokus na apliciranju Sense HAT(Vir 6) razvojne ploščice na robota (Vir 4). Predvsem se je pokazalo, da mora robot smer držati sam. Z uporabo kombiniranih objektov, ki uporabljajo pospeškometer, kompas (hall senzor) in žiroskop, bomo robota naučili, vožnje naravnost :). Jasno Python je programski jezik, ki je z malimi izjemami, omejen z idejami programerja (razvijalca) (Vir 7). Slovenska izdaja (Vir 5) samo sledi trendom na področju odprte kode. Kot vidimo, kar dobro pokrivamo ključne tehnologije, ki se redno vrtijo okoli prvih mest na raznih lestvicah vrste top 5 in podobno. Omeniti velja, da trenutno vpeljujemo 64bit različico raspberry OS. Še vedno ne dela mathematica (Vir 9) in pa težavice so s chromiumom (Vir 8). Chromium izrablja vse strojne pospeševalnike na platformi in pri prevajanju se počasi dodajajo strojne rešitve in ukinjajo programske. Važen je napredek ne perfekcija. Trenutno se dogajajo posodobitve na 12 ur, kar kaže na trud razvijalcev.
Aplikacija IP Webcam
IP kamere so standard, lahko jo kupimo. Za android telefone obstaja zastonj aplikacija IP Webcam (Vir 10). S telefonom se priklopimo na WiFi omrežje razreda (SSID:pi , geslo:raspberry).
Program je precej dodelan, poglejte si nastavitve, še najpomembneje je to, da znamo pognat aplikacijo ob zagonu, menjava kamere in podobne nastavitve. Praktično je, če v razredu še nimamo dovolj kamer z mikrofonom.
06_Zajem_posnetka_ip_kamera.py
Enostaven program nam prenaša živo sliko v okno. Če imamo USB kamero, nam podoben program (05_Zajem_posnetka.py) ravno tako prenaša živo sliko v okno. Morda še zanimivost, če bi hoteli sivo sliko, lahko odstranite komentar in spustite sliko skozi filter.
12_Meje_zivo_ip_kamera.py
Vaja pokaže katere filtre moramo uporabit za izrisovanje mej na živi sliki. Vidimo, da najprej naredimo sliko sivo in iz sive slike naredimo binarno sliko. Iz binarne slike z metodo findContours poiščemo meje objekta. To so samo nekateri filtri, ki jih uporabljamo pri prepoznavanju objektov. Metode umetne inteligence potem iz mej objekta lahko prepoznavajo obraze. Je veliko metod prepoznavanja. Točna uporaba metod in kombinacija je pri različnih uporabnikih različna.
16_Obrazi_na_ip_kameri.py
Tu gre za prepoznavanje in uokvirjanje obraza (ov) v živi sliki. Gre za metodo CascadeClassifier, ki ji podamo parameter front_face_default.xml Ker sem gledal vstran metoda ni prepoznala obraza.
Tu je metoda prepoznala obraz, ker sem gledal naravnost in glavo sem imel navpično. Za tiste, ki ravnokar menjujete osebno izkaznico za novo biometrično, so vas pri fotografiranju verjetno opozarjali na pogled naravnost in vodoravno glavo :). Sedaj vsaj veste zakaj :).
Nevroni.py
Nevronske mreže so umetna inteligenca. Primer (Vir 11) pokaže, kako mrežo najprej naučimo s pozitivnimi in negativnimi vzorci. Naučena mreža prepoznava skrite povezave med vzorci in po določenem času in vzorcih začne predvidevati ali je vzorec pozitiven ali negativen. Ena od metod prepoznavanja obraza je s standardnimi utežmi poiskati vse obraze s pogledom naravnost in s poravnanimi glavami. Uokvirjen obraz se nato poenoti in primerja s sliko, ki ravno tako zahteva poenoteno sliko osebe. Zato je fotografiranje za nove biometrične osebne izkaznice malo bolj zapleteno. Fotograf mora počakati na pozitivno potrditev programa za fotografiranje. 🙂
Naslednjič
Pogledali si bomo, kaj je novega na področju robota (Vir 2, 3 in 4). Znotraj slovenske izdaje (Vir 5) spada robot pod šolske delujoče projekte. Trenutno imamo 3 programe robot.py, program.py in enostavno.py.
Robot.py je program, ki uporablja krmilno jedro in je namenjen upravljanju robota s pomočjo nagibanja pametnega telefona. Na primeru pokažemo uporabo pospeškometra v pametnem telefonu.
Program.py je program, ki ne uporablja krmilnega jedra. Na zapisu parametrov programu opišemo enostavno pot robota, ki jo le ta potem odpelje po programu.
Enostavno.py je program ki uporablja krmilno jedro in je namenjen vodenju robota preko tipkovnice. V razredu se je le-tak način vodenja pokazal kot primeren.
Ravnokar sem dobil in namestil Sense HAT (Vir 12) modul s tipali, stikali in priročno LED matriko 8×8. Poleg zgoraj opisanih treh programov , ki upravljajo robota, se je pokazalo, da mora robot smer držati sam. Torej naprej pomeni naprej. Modul ima med drugim tipalo pospeška, hall (kompas) in žiroskop. Regulacija preko žive slike je prepočasna in robot (Vir 4) se je vozil kot pijan. Z lokalnimi tipali bi moralo biti vse veliko bolje :). Na naši šoli izvajamo tekmovalne vožnje z roboti med ovirami. Sedaj bo zanimivo primerjati čase med grobim vodenjem in vodenjem reference regulatorja.
Viri:
https://opencv.org/
http://77.38.33.244/projekti/robot/php.php
http://77.38.33.244/projekti/robot/python.php
http://77.38.33.244/projekti/robot/tinkercad.php
http://77.38.33.244/
https://projects.raspberrypi.org/en/projects/getting-started-with-the-sense-hat
https://bootcamp.berkeley.edu/blog/most-in-demand-programming-languages/
https://www.chromium.org/chromium-projects/
https://www.wolfram.com/mathematica/online/
https://play.google.com/store/apps/details?id=com.pas.webcam
http://77.38.33.244/projekti/nevroni/python.php
https://pinout.xyz/pinout/sense_hat
Avtor: mag. Boštjan Šuhel