7.6. Anatomija predict¶
Model.predict(inputs, *, callback=None) je mjesto gdje učitani objekt modela zapravo obavlja posao. Između ulaza koji ulaze i rezultata koji izlazi, tri faze izvode se redom: predobrada, otprema na mehanizam, naknadna obrada. Dvije od te tri primaju parametre koje skripta izravno kontrolira; mehanizam u sredini odlučuje kamera.
Tri faze metode predict(). Predobrada i naknadna obrada primaju parametre koje skripta kontrolira; mehanizam u sredini fiksira kamera.¶
7.6.1. Predobrada¶
Faza predobrade pretvara svaki ulaz u gusti tenzor koji mreža očekuje. Najčešći ulaz je image.Image, snimljen u RGB565. Faza ga izreže i mijenja veličinu na mrežin input_shape, pretvara iz RGB565 u kanalski format na kojem je mreža trenirana (RGB888 za većinu mreža za strojni vid), primjenjuje skaliranje i pomak po kanalu te – kada mreža očekuje cjelobrojni ulaz – kvantizira u mrežin input_dtype u istom prolazu. Mreže trenirane za float ulaz preskaču korak kvantizacije i primaju rezultat skaliranja i pomaka izravno.
Zadani ml.preprocessing.Normalization čita mrežin ulazni dtype i automatski izvodi ispravnu transformaciju. Ručno podešeni Normalization nadjačava vrijednosti skale, srednje vrijednosti i standardne devijacije za modele trenirane na prilagođenim statistikama kanala (srednje vrijednosti i standardne devijacije izvedene iz ImageNeta čest su slučaj). Obična pozivna funkcija u potpunosti nadjačava fazu – korisno kada ulaz uopće nije slika ili kada je aplikacija već sama proizvela gusti tenzor.
7.6.2. Otprema na mehanizam¶
Faza mehanizma pokreće mrežu. Na koji mehanizam otprema fiksira kamera: H7 i RT1062 pokreću TFLM (interpreter TensorFlow Lite for Microcontrollers, koji otprema ARM-optimizirane CMSIS-NN jezgre gdje postoje); AE3 pokreće isti TFLM interpreter sa svojim Cortex-M55 rezervnim mehanizmom i Ethos-U NPU-om koji obrađuje svaki operator koji je offline Vela kompajler označio za akcelerator; N6 pokreće STAI, ST-ov runtime za N6-ov namjenski izrađeni NPU.
Skripta ne bira mehanizam. Mehanizam koji se isporučuje s kamerom pokreće svaki model koji kamera učita.
7.6.3. Naknadna obrada¶
Faza naknadne obrade pretvara sirove izlazne tenzore mreže natrag u upotrebljiv rezultat. Zadano ponašanje je dekvantizacija svakog izlaznog tenzora u pomični zarez (ili njegovo prosljeđivanje nepromijenjeno za mreže s float izlazima) i njihovo vraćanje kao popis ndarray objekata. Većina aplikacija registrira post-procesor – pozivnu funkciju koja poznaje izlazni raspored mreže – za dekodiranje tenzora u oblik rezultata na koji aplikacija djeluje: popis graničnih okvira, popis ključnih točaka, popis klasa.
Skripta kontrolira ovu fazu na dva načina. Ključna riječ postprocess= u konstruktoru registrira post-procesor koji se izvodi pri svakom pozivu. Ključna riječ callback= u predict() nadjačava registrirani post-procesor samo za jedan poziv – korisno za prebacivanje između nekoliko dekodera bez ponovnog učitavanja modela. Oba oblika primaju (model, inputs, outputs) i vraćaju što god aplikacija očekuje.
7.6.4. Što skripta kontrolira¶
Predobrada i naknadna obrada dvije su ručke skripte. Zadani pred-procesor obrađuje većinu modela za strojni vid; ispravan post-procesor za danu obitelj mreža bira se iz kataloga pod ml.postprocessing. Mehanizam u sredini odlučuje izgradnja i izvodi se na isti način bez obzira na to što skripta traži.