ml — Maschinelles Lernen

Das Modul ml enthält Funktionen zum Laden und Ausführen von TensorFlow-Lite-Modellen auf der OpenMV Cam. Das Modul stellt eine einzige für Benutzer sichtbare Klasse bereit, ml.Model, die die zugrunde liegende C-Klasse Model mit zusätzlichen Annehmlichkeiten auf Python-Seite umhüllt (automatisches Laden von Labels und automatische Konvertierung von Bild zu Tensor).

Untermodule

class Model – Modellcontainer

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

Lädt ein TensorFlow-Lite-Modell aus path in den Speicher und bereitet es für die Inferenz vor. path kann eine Datei im Dateisystem oder der Name eines in das Firmware-Image integrierten Modells sein.

postprocess ist ein optionales aufrufbares Objekt zur Nachbearbeitung, das von Model.predict nach der Inferenz aufgerufen wird. Es erhält (model, inputs, outputs) und kann einen beliebigen Wert zurückgeben (z. B. eine Liste von Begrenzungsrahmen). Falls angegeben, erhält der Nachbearbeiter aus Performancegründen die rohen Ausgabetensoren des Modells (nicht dequantisiert).

Bei der Konstruktion versucht der Wrapper zusätzlich, eine .txt-Datei mit demselben Basisnamen wie path zu laden; wird sie gefunden, wird jede Zeile in Model.labels geladen. Andernfalls ist Model.labels gleich None.

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

Führt die Inferenz für das Modell aus und gibt die Ausgabetensoren zurück.

inputs ist eine Liste mit einem Eintrag pro Eingabetensor des Modells. Jeder Eintrag kann sein:

  • Ein ndarray, dessen Form mit dem entsprechenden Eintrag in Model.input_shape übereinstimmt. Die Werte werden mit der Skala und dem Nullpunkt des Eingabetensors quantisiert (float32-Eingaben werden unverändert durchgereicht).

  • Ein image.Image-Objekt. Der Wrapper umhüllt es automatisch in einem ml.preprocessing.Normalization-Objekt, um es in den erwarteten Tensor zu konvertieren.

  • Ein aufrufbares Objekt. Es wird mit (bytearray, shape, dtype) aufgerufen und soll das bytearray mit den Daten des Eingabetensors füllen.

callback ist ein optionales aufrufbares Objekt zur Nachbearbeitung pro Aufruf. Falls angegeben, überschreibt es das im Konstruktor gesetzte postprocess nur für diesen Aufruf. Der Callback erhält (model, inputs, outputs) und sein Rückgabewert wird von predict zurückgegeben.

Gibt eine Liste von ndarray-Ausgaben zurück, eine pro Ausgabetensor des Modells. Ist kein Nachbearbeiter aktiv, werden die Ausgaben zu float32 dequantisiert; ist ein Nachbearbeiter aktiv, werden ihm stattdessen die rohen Ausgabetensoren (mit dem nativen dtype jedes Tensors) übergeben.

len: int

Die Größe des geladenen Modells in Bytes.

ram: int

Die Menge an RAM, die von der Tensor-Arena des Modells belegt wird, in Bytes.

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

Eine Liste von Tupeln, die die Form jedes Eingabetensors angeben.

input_dtype: list[str]

Eine Liste von Strings aus einem einzelnen Zeichen, die den dtype jedes Eingabetensors angeben: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Eine Liste von Floats, die die Quantisierungsskala jedes Eingabetensors angeben.

input_zero_point: list[int]

Eine Liste von Ints, die den Quantisierungs-Nullpunkt jedes Eingabetensors angeben.

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

Eine Liste von Tupeln, die die Form jedes Ausgabetensors angeben.

output_dtype: list[str]

Eine Liste von Strings aus einem einzelnen Zeichen, die den dtype jedes Ausgabetensors angeben: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Eine Liste von Floats, die die Quantisierungsskala jedes Ausgabetensors angeben.

output_zero_point: list[int]

Eine Liste von Ints, die den Quantisierungs-Nullpunkt jedes Ausgabetensors angeben.

postprocess: object

Das aufrufbare Objekt zur Nachbearbeitung, das dem Konstruktor übergeben wurde, oder None.

labels: list[str]

Liste von Label-Strings, die aus der .txt-Datei neben dem Modell geladen wurden, oder None, falls keine solche Datei existiert.