ml — Machine Learning

De ml-module bevat functionaliteit voor het laden en uitvoeren van TensorFlow Lite-modellen op de OpenMV Cam. De module biedt een enkele klasse voor gebruikers, ml.Model, die de onderliggende C-klasse Model omhult met extra gemakken aan de Python-zijde (automatisch laden van labels en automatische conversie van afbeelding naar tensor).

Submodules

class Model – Modelcontainer

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

Laadt een TensorFlow Lite-model vanuit path in het geheugen en bereidt het voor op inferentie. path kan een bestand op het bestandssysteem zijn of de naam van een model dat in de firmware-image is ingebouwd.

postprocess is een optionele nabewerkingsfunctie die door Model.predict wordt aangeroepen na de inferentie. Deze ontvangt (model, inputs, outputs) en kan een willekeurige waarde retourneren (bijv. een lijst met begrenzingsvakken). Indien opgegeven ontvangt de nabewerker de ruwe model-uitvoertensoren (niet-gedequantiseerd) omwille van de prestaties.

Bij constructie probeert de wrapper bovendien een .txt-bestand met dezelfde basisnaam als path te laden; indien gevonden wordt elke regel ingeladen in Model.labels. Anders is Model.labels gelijk aan None.

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

Voert inferentie uit op het model en retourneert de uitvoertensoren.

inputs is een lijst met één item per model-invoertensor. Elk item kan zijn:

  • Een ndarray waarvan de vorm overeenkomt met het bijbehorende item in Model.input_shape. Waarden worden gequantiseerd met behulp van de schaal en het nulpunt van de invoertensor (float32-invoer wordt ongewijzigd doorgegeven).

  • Een image.Image-object. De wrapper omhult dit automatisch in een ml.preprocessing.Normalization-object om het te converteren naar de verwachte tensor.

  • Een aanroepbaar object. Het wordt aangeroepen met (bytearray, shape, dtype) en wordt geacht de bytearray te vullen met de invoertensorgegevens.

callback is een optionele nabewerkingsfunctie per aanroep. Indien opgegeven overschrijft deze de postprocess die op de constructor is ingesteld, maar alleen voor deze aanroep. De callback ontvangt (model, inputs, outputs) en de retourwaarde wordt geretourneerd door predict.

Retourneert een lijst met ndarray-uitvoer, één per model-uitvoertensor. Als er geen nabewerker actief is, worden de uitvoeren gedequantiseerd naar float32; als er wel een nabewerker actief is, worden in plaats daarvan de ruwe uitvoertensoren (met het eigen dtype van elke tensor) eraan doorgegeven.

len: int

De grootte van het geladen model in bytes.

ram: int

De hoeveelheid RAM die door de tensor-arena van het model wordt gebruikt, in bytes.

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

Een lijst met tuples die de vorm van elke invoertensor aangeven.

input_dtype: list[str]

Een lijst met strings van één teken die het dtype van elke invoertensor aangeven: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Een lijst met floats die de quantisatieschaal van elke invoertensor aangeven.

input_zero_point: list[int]

Een lijst met ints die het quantisatienulpunt van elke invoertensor aangeven.

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

Een lijst met tuples die de vorm van elke uitvoertensor aangeven.

output_dtype: list[str]

Een lijst met strings van één teken die het dtype van elke uitvoertensor aangeven: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Een lijst met floats die de quantisatieschaal van elke uitvoertensor aangeven.

output_zero_point: list[int]

Een lijst met ints die het quantisatienulpunt van elke uitvoertensor aangeven.

postprocess: object

De nabewerkingsfunctie die aan de constructor is opgegeven, of None.

labels: list[str]

Lijst met labelstrings die zijn geladen uit het .txt-bestand naast het model, of None als een dergelijk bestand niet bestaat.