7.9. TensorFlow Lite for Microcontrollers

TFLM on ajonaikainen ympäristö, jota useimmat kamerat käyttävät ladatun mallin suorittamiseen. Se jäsentää .tflite-tiedoston – FlatBuffer-muotoisen operaattoreiden, painojen ja tensorimuotojen kokonaisuuden – ja käy operaattorilistan läpi järjestyksessä ohjaten jokaisen operaattorin kernelille, joka tuottaa seuraavan välitensorin.

Välitensorit sijaitsevat latausaikana varatussa kiinteäkokoisessa tensor arenassa. Kamera mitoittaa arenan kahdessa vaiheessa: ensin rakennetaan kertakäyttöinen tulkki suurinta vapaata kekoa vasten, jotta malli voi raportoida tarvitsemansa työmuistin; pysyvä tulkki varataan sitten täsmälleen tällä koolla plus pieni marginaali. Pienemmät mallit jättävät enemmän kekoa vapaaksi skriptin loppuosalle.

TFLM on moottori H7:ssä, RT1062:ssa ja AE3:ssa.

Kolme saraketta vierekkäin. Vasemmalla: H7 ja RT1062 ajavat TFLM:ää CMSIS-NN-kerneleillä Cortex-M7:llä. Keskellä: AE3 ajaa TFLM:ää CMSIS-NN:llä ja Ethos-U-operaattorilla Cortex-M55:llä, jossa on Ethos-U55-NPU. Oikealla: N6 ajaa STAI:ta Neural-ART-NPU:lla.

Moottori predict():n keskellä on eri pino jokaisessa kameraperheessä.

7.9.1. Operaattorin selvittäjä (op resolver)

TFLM ei toimita jokaista kerneliä. Kamera linkittää mukaan selvittäjän (resolver), joka luettelee sen suoritettavissa olevat operaattorit, ja selvittäjää vasten ladattu malli epäonnistuu latausaikana, jos se sisältää operaattorin, jota ei ole listalla. Toimitettava käännös rekisteröi konenäkö- ja signaalinkäsittelyverkoissa yleiset operaattorit – konvoluutio- ja tiheäkerrokset, pool- ja aktivointikerrokset, reshape- ja concat-operaattorit, quantize- ja dequantize-operaattorit – joten yhtä standardiarkkitehtuuria (YOLO, MediaPipe, MobileNet) vasten koulutettu malli latautuu listaa laajentamatta.

AE3-käännös rekisteröi lisäksi Ethos-U-operaattorin. Vela-käännetty malli on muutoin tavallinen .tflite, ja TFLM käy sen läpi normaalisti; Vela-merkityt aliverkot osuvat Ethos-U-operaattoriin ja ohjautuvat NPU:lle.