ml — Apprentissage automatique

Le module ml contient des fonctionnalités pour charger et exécuter des modèles TensorFlow Lite sur l’OpenMV Cam. Le module expose une seule classe destinée à l’utilisateur, ml.Model, qui encapsule la classe C sous-jacente Model en y ajoutant des commodités côté Python (chargement automatique des étiquettes et conversion automatique image-vers-tenseur).

Sous-modules

class Model – Conteneur de modèle

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

Charge un modèle TensorFlow Lite depuis path en mémoire et le prépare pour l’inférence. path peut être un fichier sur le système de fichiers ou le nom d’un modèle intégré à l’image du micrologiciel.

postprocess est une fonction de post-traitement optionnelle appelée par Model.predict après l’inférence. Elle reçoit (model, inputs, outputs) et peut renvoyer n’importe quelle valeur (par exemple une liste de boîtes englobantes). Lorsqu’elle est fournie, le post-traitement reçoit les tenseurs de sortie bruts du modèle (non déquantifiés) pour des raisons de performance.

À la construction, l’enveloppe tente également de charger un fichier .txt portant le même nom de base que path ; s’il est trouvé, chaque ligne est chargée dans Model.labels. Sinon, Model.labels vaut None.

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

Exécute l’inférence sur le modèle et renvoie les tenseurs de sortie.

inputs est une liste comportant une entrée par tenseur d’entrée du modèle. Chaque entrée peut être :

  • Un ndarray dont la forme correspond à l’entrée correspondante dans Model.input_shape. Les valeurs sont quantifiées à l’aide de l’échelle et du point zéro du tenseur d’entrée (les entrées float32 sont transmises telles quelles).

  • Un objet image.Image. L’enveloppe l’encapsule automatiquement dans un objet ml.preprocessing.Normalization pour le convertir en tenseur attendu.

  • Un appelable. Il sera invoqué avec (bytearray, shape, dtype) et est censé remplir le bytearray avec les données du tenseur d’entrée.

callback est une fonction de post-traitement optionnelle propre à l’appel. Lorsqu’elle est fournie, elle remplace la fonction postprocess définie dans le constructeur, pour cet appel uniquement. Le callback reçoit (model, inputs, outputs) et sa valeur de retour est renvoyée par predict.

Renvoie une liste de sorties ndarray, une par tenseur de sortie du modèle. Si aucun post-traitement n’est actif, les sorties sont déquantifiées en float32 ; si un post-traitement est actif, ce sont les tenseurs de sortie bruts (utilisant le dtype natif de chaque tenseur) qui lui sont transmis à la place.

len: int

La taille du modèle chargé, en octets.

ram: int

La quantité de RAM utilisée par l’arène de tenseurs du modèle, en octets.

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

Une liste de tuples donnant la forme de chaque tenseur d’entrée.

input_dtype: list[str]

Une liste de chaînes d’un seul caractère donnant le dtype de chaque tenseur d’entrée : 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Une liste de flottants donnant l’échelle de quantification de chaque tenseur d’entrée.

input_zero_point: list[int]

Une liste d’entiers donnant le point zéro de quantification de chaque tenseur d’entrée.

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

Une liste de tuples donnant la forme de chaque tenseur de sortie.

output_dtype: list[str]

Une liste de chaînes d’un seul caractère donnant le dtype de chaque tenseur de sortie : 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Une liste de flottants donnant l’échelle de quantification de chaque tenseur de sortie.

output_zero_point: list[int]

Une liste d’entiers donnant le point zéro de quantification de chaque tenseur de sortie.

postprocess: object

La fonction de post-traitement fournie au constructeur, ou None.

labels: list[str]

Liste des chaînes d’étiquettes chargées depuis le fichier .txt situé à côté du modèle, ou None si aucun fichier de ce type n’existe.