ml — Aprendizado de Máquina

O módulo ml contém funcionalidades para carregar e executar modelos do TensorFlow Lite na OpenMV Cam. O módulo expõe uma única classe voltada ao usuário, ml.Model, que encapsula a classe C Model subjacente com facilidades adicionais no lado do Python (carregamento automático de rótulos e conversão automática de imagem para tensor).

Submódulos

classe Model – Contêiner de Modelo

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

Carrega um modelo do TensorFlow Lite a partir de path para a memória e o prepara para inferência. path pode ser um arquivo no sistema de arquivos ou o nome de um modelo embutido na imagem de firmware.

postprocess é uma função de pós-processamento opcional invocada por Model.predict após a inferência. Ela recebe (model, inputs, outputs) e pode retornar 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 des-quantizados) por questões de desempenho.

Na construção, o wrapper também tenta carregar um arquivo .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 a inferência no modelo e retorna os tensores de saída.

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

  • Um ndarray cujo formato corresponde à entrada correspondente em Model.input_shape. Os valores são quantizados usando a escala e o zero point do tensor de entrada (entradas float32 são repassadas inalteradas).

  • Um objeto image.Image. O wrapper o encapsula automaticamente em um objeto ml.preprocessing.Normalization para convertê-lo no tensor esperado.

  • Uma função (callable). Ela será invocada com (bytearray, shape, dtype) e espera-se que preencha o bytearray com os dados do tensor de entrada.

callback é uma função de pós-processamento opcional por chamada. Quando fornecida, ela substitui o postprocess definido no construtor apenas para esta chamada. O callback recebe (model, inputs, outputs) e o seu valor de retorno é retornado por predict.

Retorna 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 des-quantizadas 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 usada pela arena de tensores do modelo, em bytes.

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

Uma lista de tuplas indicando o formato de cada tensor de entrada.

input_dtype: list[str]

Uma lista de strings de um único caractere indicando 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 indicando a escala de quantização de cada tensor de entrada.

input_zero_point: list[int]

Uma lista de inteiros indicando o zero point de quantização de cada tensor de entrada.

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

Uma lista de tuplas indicando o formato de cada tensor de saída.

output_dtype: list[str]

Uma lista de strings de um único caractere indicando 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 indicando a escala de quantização de cada tensor de saída.

output_zero_point: list[int]

Uma lista de inteiros indicando o zero point de quantização de cada tensor de saída.

postprocess: object

A função de pós-processamento fornecida ao construtor, ou None.

labels: list[str]

Lista de strings de rótulos carregadas do arquivo .txt ao lado do modelo, ou None se tal arquivo não existir.