7.1. Što je neuronska mreža

Neuronska mreža je algoritam čije se ponašanje uči iz primjera umjesto da ga čovjek ručno kodira. Ista arhitektura mreže, kada joj se preda milijun slika lica, nauči detektirati lica. Ista arhitektura, kada joj se preda milijun slika ruku, nauči detektirati ruke. Ista arhitektura, kada joj se preda označeni skup koji pokriva mnogo kategorija objekata, nauči detektirati sve njih odjednom. Između ciljeva mijenjaju se samo težine, a težine proizvodi proces treniranja izvan ploče koji prati predikcije mreže u odnosu na označene primjere i prilagođava težine sve dok se ne podudaraju.

7.1.1. Mehanizam

Neuronska mreža je stog slojeva. Svaki sloj množi izlaz prethodnog sloja matricom težina, dodaje vektor pomaka i na rezultat primjenjuje nelinearnu funkciju. Izlaz jednog sloja je ulaz u sljedeći. Snimljena slika ulazi na vrhu stoga, protječe prema dolje kroz desetke ili stotine slojeva i izlazi na dnu kao tenzor čije zapise opisuju što se nalazilo na slici.

Što težine svakog sloja rade ovisi o tome na čemu je mreža trenirana. Matrica težina ranog sloja u mreži za vid mogla bi reagirati na kratki vodoravni rub; nešto dublja mogla bi reagirati na kut; još dublja mogla bi reagirati na kružni oblik oka; najdublji slojevi mogli bi reagirati na rasporede cijelog lica. Ništa od toga nije napisano ručno. Proces treniranja iterirao je preko milijuna označenih primjera, gurnuo težine nizbrdo po funkciji gubitka, a hijerarhija rub-pa-kut-pa-oko-pa-lice proizašla je iz podataka.

Okomiti stog od devet označenih okvira koji predstavljaju slojeve male mreže za klasifikaciju. Gornji okvir je označen s "Input image" i oblikom tenzora (192, 192, 3). Strelica vodi prema dolje do okvira "Conv + ReLU" s oblikom (96, 96, 32). Druga strelica vodi do drugog okvira "Conv + ReLU" s oblikom (48, 48, 64). Slijedi okvir "MaxPool" s oblikom (24, 24, 64). Slijede još dva okvira "Conv + ReLU" s oblicima (12, 12, 128) i (6, 6, 256). Okvir "Global average pool" ima oblik (256,). Okvir "Fully connected" ima oblik (1000,). Donji okvir je označen s "Class scores" s oblikom (1000,). Tok tenzora je od vrha prema dnu.

Mala mreža za klasifikaciju kao stog slojeva. Ulazni tenzor ulazi na vrhu s oblikom snimljene slike i protječe prema dolje kroz slojeve, pri čemu svaki transformira dimenzije tenzora. Izlazni tenzor na dnu ima jedan zapis po razredu. Mreže za detekciju i ključne točke dijele isti oblik stoga slojeva; mijenja se samo interpretacija izlaznog tenzora.

Arhitektura mreže – kako su slojevi raspoređeni, koje ih operacije povezuju – jest ono što mreža može raditi. Težine su ono što je mreža naučila. Uloga kamere u tome je učitati datoteku težina koju je proizvelo treniranje i izvesti istu aritmetiku koju je izveo trener, ali na snimljenoj sličici umjesto na skupu za treniranje.

7.1.2. Što se ubacuje, što izlazi

Oba kraja mreže su tenzori – višedimenzionalna polja brojeva, ista vrsta objekta koju je upravo predstavilo poglavlje o numpy. Ulazni tenzor za mrežu za vid jest snimljena slika preraspoređena u raspored koji mreža očekuje: tipično oblik (B, H, W, C) 4-torke gdje je B dimenzija serije (uvijek 1 na kameri, jer se jedna sličica obrađuje odjednom), H i W su očekivana visina i širina mreže u pikselima, a C je broj kanala (3 za RGB mrežu, 1 za sive tonove).

Izlazni tenzor ovisi o tome čemu mreža služi:

  • Mreža za klasifikaciju proizvodi 1-D tenzor ocjena pouzdanosti, jednu po razredu. Indeks najveće ocjene je predviđeni razred. Detektor osoba izveden iz MobileNeta koji dolazi na većini kamera je ovog oblika: dvije ocjene, jedna za „person”, jedna za „not person”.

  • Mreža za detekciju proizvodi 2-D tenzor čiji zapisi opisuju popis graničnih okvira plus vjerojatnosti razreda. YOLOv8 je ovog oblika: tenzor (84, N) gdje su 4 od 84 retka vrijednosti regresije okvira, a ostalih 80 su vjerojatnosti po razredu, ponovljene preko N pozicija sidra.

  • Mreža za ključne točke proizvodi tenzor čiji su zapisi pozicije imenovanih orijentira u pikselima. Model MediaPipe za orijentire lica je ovog oblika: 468 ključnih točaka po detektiranom licu.

  • Mreža za segmentaciju proizvodi 2-D tenzor čiji su zapisi oznake razreda po pikselu – istih dimenzija kao ulaz, s indeksom kategorije na svakoj poziciji.

  • Mreža za regresiju proizvodi jedan broj ili kratki vektor brojeva – procjenu dubine, kut, temperaturu.

Svaki oblik ima vlastiti post-procesor na kameri koji pretvara sirovi izlazni tenzor natrag u oblik rezultata koji ostatak aplikacije koristi – granične okvire, popise ključnih točaka, oznake razreda, numeričke procjene. Post-procesor je kôd na strani aplikacije koji poznaje raspored izlaza mreže; sama mreža je samo aritmetika koja proizvodi tenzor.

7.1.3. Zašto ovo radi na kameri

Dva dijela aritmetike čine ovo praktičnim za dio razreda mikrokontrolera. Prvi je kvantizacija. Treniranje se odvija u aritmetici s pomičnim zarezom od 32 bita; zaključivanje se može izvoditi u cjelobrojnoj aritmetici od 8 bita s gotovo nikakvim gubitkom točnosti za većinu mreža. Osmobitne težine zauzimaju četvrtinu pohrane i izvode se nekoliko puta brže od 32-bitnih realnih brojeva. Svaki model s kojim kamera dolazi već je kvantiziran izvan ploče.

Drugi je hardversko ubrzanje. Istu aritmetiku kroz koju CPU mikrokontrolera mukotrpno prolazi jednu po jednu instrukciju, akcelerator neuronskih mreža izvodi stotinama operacija odjednom. Novije kamere (AE3 i N6) nose namjensku jedinicu za neuronsku obradu (NPU) – akcelerator tenzora na SoC-u – koja model koji bi se na CPU-u izvodio sekundu pretvara u onaj koji se izvodi u desecima milisekundi. Poglavlje o mehanizmima zaključivanja pokriva kako izgleda uloga kamere u tome.

7.1.4. Što poglavlje pokriva

Treniranje nije posao kamere. Trenirani model stiže na kameru kao .tflite datoteka; kamera ga učita, propušta svaku snimljenu sličicu kroz njega i dekodira rezultirajući tenzor u rezultat na koji aplikacija može reagirati. Sve što slijedi govori o svakom od tih koraka:

  • učitavanje i pregledavanje modela;

  • particija flash memorije gdje se nalaze datoteke modela;

  • četiri faze poziva zaključivanja;

  • mehanizmi koji zapravo obavljaju aritmetiku;

  • i post-procesori koji izlazni tenzor pretvaraju natrag u popis okvira, ključnih točaka ili razreda.

Detektori u poglavlju o slici bili su svaki ograničeni na određeni cilj. Oni koje pokriva ostatak ovog poglavlja umjesto toga su trenirani iz podataka, pri čemu isti mehanizam izvodi bilo koji model koji skripta učita. Promjena radnog tijeka koja je došla s njima – algoritam specifičan za cilj zamijenjen datotekom težina specifičnom za cilj – jest sljedeća stvar koju treba istaknuti.