ml — Aprendizaje automático

El módulo ml contiene funcionalidad para cargar y ejecutar modelos de TensorFlow Lite en la OpenMV Cam. El módulo expone una única clase orientada al usuario, ml.Model, que envuelve la clase Model subyacente en C con comodidades adicionales del lado de Python (carga automática de etiquetas y conversión automática de imagen a tensor).

Submódulos

class Model – Contenedor del modelo

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

Carga en memoria un modelo de TensorFlow Lite desde path y lo prepara para la inferencia. path puede ser un archivo en el sistema de archivos o el nombre de un modelo integrado en la imagen del firmware.

postprocess es un invocable opcional de posprocesamiento llamado por Model.predict después de la inferencia. Recibe (model, inputs, outputs) y puede devolver cualquier valor (por ejemplo, una lista de cuadros delimitadores). Cuando se proporciona, el posprocesador recibe los tensores de salida sin procesar del modelo (sin descuantizar) por rendimiento.

Durante la construcción, el envoltorio además intenta cargar un archivo .txt con el mismo nombre base que path; si lo encuentra, cada línea se carga en Model.labels. De lo contrario, Model.labels es None.

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

Ejecuta la inferencia en el modelo y devuelve los tensores de salida.

inputs es una lista con una entrada por cada tensor de entrada del modelo. Cada entrada puede ser:

  • Un ndarray cuya forma coincide con la entrada correspondiente en Model.input_shape. Los valores se cuantizan usando la escala y el punto cero del tensor de entrada (las entradas float32 se pasan sin modificar).

  • Un objeto image.Image. El envoltorio lo envuelve automáticamente en un objeto ml.preprocessing.Normalization para convertirlo en el tensor esperado.

  • Un invocable. Se llamará con (bytearray, shape, dtype) y se espera que rellene el bytearray con los datos del tensor de entrada.

callback es un invocable opcional de posprocesamiento por llamada. Cuando se proporciona, anula el postprocess establecido en el constructor solo para esta llamada. La función de retorno (callback) recibe (model, inputs, outputs) y su valor de retorno es devuelto por predict.

Devuelve una lista de salidas ndarray, una por cada tensor de salida del modelo. Si no hay ningún posprocesador activo, las salidas se descuantizan a float32; si hay un posprocesador activo, se le pasan en su lugar los tensores de salida sin procesar (usando el dtype nativo de cada tensor).

len: int

El tamaño del modelo cargado en bytes.

ram: int

La cantidad de RAM usada por el tensor arena del modelo, en bytes.

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

Una lista de tuplas que da la forma de cada tensor de entrada.

input_dtype: list[str]

Una lista de cadenas de un solo carácter que da el dtype de cada tensor de entrada: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Una lista de números de coma flotante que da la escala de cuantización de cada tensor de entrada.

input_zero_point: list[int]

Una lista de enteros que da el punto cero de cuantización de cada tensor de entrada.

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

Una lista de tuplas que da la forma de cada tensor de salida.

output_dtype: list[str]

Una lista de cadenas de un solo carácter que da el dtype de cada tensor de salida: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Una lista de números de coma flotante que da la escala de cuantización de cada tensor de salida.

output_zero_point: list[int]

Una lista de enteros que da el punto cero de cuantización de cada tensor de salida.

postprocess: object

El invocable de posprocesamiento proporcionado al constructor, o None.

labels: list[str]

Lista de cadenas de etiquetas cargadas desde el archivo .txt junto al modelo, o None si no existe tal archivo.