ml — Strojové učení

Modul ml obsahuje funkce pro načítání a spouštění modelů TensorFlow Lite na OpenMV Cam. Modul vystavuje jedinou uživatelsky orientovanou třídu ml.Model, která obaluje podkladovou C třídu Model o další vymoženosti na straně Pythonu (automatické načítání štítků a automatický převod obrazu na tenzor).

Podmoduly

class Model – Kontejner modelu

class ml.Model(path: str, *, postprocess: object = None) Model

Načte model TensorFlow Lite z cesty path do paměti a připraví jej pro inferenci. path může být soubor v souborovém systému nebo název modelu zabudovaného v obrazu firmwaru.

postprocess je volitelný objekt pro následné zpracování, který Model.predict vyvolá po inferenci. Přijímá (model, inputs, outputs) a může vrátit libovolnou hodnotu (např. seznam ohraničujících rámečků). Je-li zadán, dostává následný procesor z důvodu výkonu surové výstupní tenzory modelu (bez dekvantizace).

Při konstrukci se obal navíc pokusí načíst soubor .txt se stejným základem názvu jako path; pokud je nalezen, každý řádek se načte do Model.labels. Jinak je Model.labels rovno None.

predict(inputs: list, *, callback: object = None) list

Spustí inferenci modelu a vrátí výstupní tenzory.

inputs je seznam s jednou položkou na každý vstupní tenzor modelu. Každá položka může být:

  • Objekt ndarray, jehož tvar odpovídá příslušné položce v Model.input_shape. Hodnoty se kvantují pomocí měřítka (scale) a nulového bodu (zero point) vstupního tenzoru (vstupy typu float32 procházejí beze změny).

  • Objekt image.Image. Obal jej automaticky zabalí do objektu ml.preprocessing.Normalization, aby jej převedl na očekávaný tenzor.

  • Volatelný objekt. Bude vyvolán s (bytearray, shape, dtype) a očekává se, že naplní bytearray daty vstupního tenzoru.

callback je volitelný objekt pro následné zpracování platný pro jedno volání. Je-li zadán, přepíše postprocess nastavený v konstruktoru pouze pro toto volání. Callback přijímá (model, inputs, outputs) a jeho návratová hodnota je vrácena funkcí predict.

Vrací seznam výstupů ndarray, jeden na každý výstupní tenzor modelu. Pokud není aktivní žádný následný procesor, jsou výstupy dekvantizovány na float32; pokud je následný procesor aktivní, jsou mu místo toho předány surové výstupní tenzory (s použitím nativního dtype každého tenzoru).

len: int

Velikost načteného modelu v bajtech.

ram: int

Množství paměti RAM využité arénou tenzorů modelu, v bajtech.

input_shape: list[tuple[int, ...]]

Seznam n-tic udávajících tvar každého vstupního tenzoru.

input_dtype: list[str]

Seznam jednoznakových řetězců udávajících dtype každého vstupního tenzoru: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Seznam hodnot float udávajících kvantizační měřítko (scale) každého vstupního tenzoru.

input_zero_point: list[int]

Seznam celých čísel udávajících kvantizační nulový bod (zero point) každého vstupního tenzoru.

output_shape: list[tuple[int, ...]]

Seznam n-tic udávajících tvar každého výstupního tenzoru.

output_dtype: list[str]

Seznam jednoznakových řetězců udávajících dtype každého výstupního tenzoru: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Seznam hodnot float udávajících kvantizační měřítko (scale) každého výstupního tenzoru.

output_zero_point: list[int]

Seznam celých čísel udávajících kvantizační nulový bod (zero point) každého výstupního tenzoru.

postprocess: object

Objekt pro následné zpracování zadaný v konstruktoru, nebo None.

labels: list[str]

Seznam řetězců štítků načtených ze souboru .txt vedle modelu, nebo None, pokud takový soubor neexistuje.