7.16. Sažetak¶
Ovo poglavlje obradilo je dijelove modula ml za kojima OpenMV aplikacija poseže kada je korak zaključivanja dio obradnog tijeka:
Koncepti – što je neuronska mreža u aritmetičkom smislu (skup operatora koji se mogu trenirati i koji preslikava tenzor u tenzor), što je strojno učenje promijenilo u odnosu na klasičnu obradu slike (algoritam sažimanja koji je pisao čovjek je nestao, zamijenjen težinama naučenima iz označenih podataka) te demonstracija hello koja je pokrenula detektor lica u svega nekoliko redaka Pythona.
Modul ml – objekt
ml.Modeli njegova svojstva za pregledavanje ulaznih i izlaznih tenzora, putanje do datoteka modela koje prihvaća te gdje te datoteke žive: u particiji ROMFS samo za čitanje radi izvršavanja izravno iz flash memorije, ili u bilo kojem drugom MicroPython datotečnom sustavu kada se model može kopirati u RAM pri učitavanju.Obradni tijek zaključivanja – tri faze koje
predict()izvodi redom (pretprocesiranje, otprema na pogon, postprocesiranje), upravljačNormalizationu prvoj fazi, upravljač postprocesora u trećoj fazi te kvantizacijska aritmetika koja povezuje cjelobrojne tenzore koje kamera pokreće natrag s realnim brojevima na kojima je mreža trenirana.Pogoni za zaključivanje – TFLM (interpreter operatora koji pokreće većina kamera), CMSIS-NN (knjižnica SIMD jezgri koja leži ispod njega na Cortex-M) te NPU-ovi (Armov Ethos-U55 na AE3 uparen s Vela izvanmrežnim prevoditeljem, ST-ov Neural-ART na N6 uparen sa STAI i STEdgeAI). Pogon je određen kamerom; skripta ga ne bira.
Dekodiranje izlaza – postprocesori koji pretvaraju sirove izlazne tenzore u okvire, ključne točke ili liste po klasama, klasa
NMSkoja sažima preklapajuće kandidate, vodič kroz YOLOv8 koji pokazuje kako zadržati dekodiranje brzim primjenom praga prije dekvantizacije te protokol za pisanje vlastitog dekodera kada katalog ne pokriva model.
7.16.1. Što je sada nadohvat ruke¶
Tri stvari za koje vas poglavlje priprema:
Učitavanje treniranog modela i njegovo pokretanje. Sve u
/rom/radi bez dodatne pripreme; sve što je dostavljeno izvana kao kompatibilan.tfliteradi nakon što izvanmrežni alat za ciljanu kameru (Vela za AE3, STEdgeAI za N6) proizvede ispravan raspored.Dekodiranje bilo kojeg izlaznog tenzora. Kada je arhitektura u katalogu, ispravan postprocesor je mehanička stvar:
YoloV8za YOLOv8 model,BlazeFaceza BlazeFace, i tako dalje. Kada nije, protokol writing-your-own pokriva ugovor, a vodič kroz YOLOv8 najčistija je referenca za kopiranje.Razmišljanje o performansama. Model koji radi pri 30 FPS na NPU-u može raditi pri 3 FPS na Cortex-M7; omjer ovisi o tome koliko mreže kamera može preuzeti s procesora. Kvantizacija, smještaj u ROMFS, NPU prevođenje i pokrivenost operatora ciljanog pogona četiri su poluge, a poglavlje je obradilo svaku od njih.
7.16.2. ML se kombinira s ostatkom kamere¶
Zaključivanje se rijetko izvodi izolirano. Modul image hvata i pretprocesira sličicu, modul ml pokreće mrežu, a ulab.numpy obavlja sav numerički posao za koji nijedna strana nema ugrađenu funkciju. Tipična skripta za detekciju kombinira sve troje: hvatanje pomoću csi, opcionalno prilagođavanje sličice s image, pokretanje predict(), postprocesiranje rezultata ispravnim modulom iz ml.postprocessing te poseganje za ulab.numpy za bilo kakvu prilagođenu matematiku koju aplikacija želi povrh okvira koje je postprocesor vratio. Ta tri modula dijele isti memorijski model; granice među njima su bez kopiranja gdje god je to moguće.