ml — Machine Learning

O módulo ml contém funcionalidades para carregar e executar modelos TensorFlow Lite na OpenMV Cam. O módulo expõe uma única classe de utilizador, ml.Model, que encapsula a classe C Model subjacente com conveniências adicionais do lado Python (carregamento automático de etiquetas e conversão automática de imagem em tensor).

Sub Módulos

class Model – Contentor de Modelo

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

Carrega um modelo TensorFlow Lite a partir de path para a memória e prepara-o para inferência. path pode ser um ficheiro no sistema de ficheiros ou o nome de um modelo incorporado na imagem de firmware.

postprocess é um callable opcional de pós-processamento invocado por Model.predict após a inferência. Recebe (model, inputs, outputs) e pode devolver qualquer valor (por exemplo, uma lista de caixas delimitadoras). Quando fornecido, o pós-processador recebe os tensores de saída brutos do modelo (não dequantizados) por razões de desempenho.

Na construção, o wrapper tenta adicionalmente carregar um ficheiro .txt com o mesmo nome base que path; se encontrado, cada linha é carregada em Model.labels. Caso contrário, Model.labels é None.

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

Executa inferência no modelo e devolve os tensores de saída.

inputs é uma lista com uma entrada por tensor de entrada do modelo. Cada entrada pode ser:

  • Um ndarray cuja forma corresponde à entrada correspondente em Model.input_shape. Os valores são quantizados usando a escala e o ponto zero do tensor de entrada (os tensores de entrada float32 são passados sem alteração).

  • Um objeto image.Image. O wrapper encapsula-o automaticamente num objeto ml.preprocessing.Normalization para o converter no tensor esperado.

  • Um callable. Será invocado com (bytearray, shape, dtype) e espera-se que preencha o bytearray com os dados do tensor de entrada.

callback é um callable opcional de pós-processamento por chamada. Quando fornecido, substitui o postprocess definido no construtor apenas para esta chamada. O callback recebe (model, inputs, outputs) e o seu valor de retorno é devolvido por predict.

Devolve uma lista de saídas ndarray, uma por tensor de saída do modelo. Se nenhum pós-processador estiver ativo, as saídas são dequantizadas para float32; se um pós-processador estiver ativo, os tensores de saída brutos (usando o dtype nativo de cada tensor) são passados a ele.

len: int

O tamanho do modelo carregado em bytes.

ram: int

A quantidade de RAM utilizada pela arena de tensores do modelo, em bytes.

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

Uma lista de tuplos com a forma de cada tensor de entrada.

input_dtype: list[str]

Uma lista de cadeias de um único carácter com o dtype de cada tensor de entrada: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Uma lista de floats com a escala de quantização de cada tensor de entrada.

input_zero_point: list[int]

Uma lista de ints com o ponto zero de quantização de cada tensor de entrada.

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

Uma lista de tuplos com a forma de cada tensor de saída.

output_dtype: list[str]

Uma lista de cadeias de um único carácter com o dtype de cada tensor de saída: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Uma lista de floats com a escala de quantização de cada tensor de saída.

output_zero_point: list[int]

Uma lista de ints com o ponto zero de quantização de cada tensor de saída.

postprocess: object

O callable de pós-processamento fornecido ao construtor, ou None.

labels: list[str]

Lista de cadeias de etiquetas carregadas a partir do ficheiro .txt junto ao modelo, ou None se esse ficheiro não existir.