ml.preprocessing — Pré-processamento de ML

O módulo ml.preprocessing contém classes para pré-processar imagens para uso com modelos de aprendizado de máquina.

classe Normalization – Normalização de Imagem

O objeto Normalization converte objetos image.Image em tensores de entrada ndarray para uso com ml.Model.predict(). Ele é criado automaticamente pelo objeto ml.Model quando uma imagem é passada para ml.Model.predict(), mas pode ser instanciado manualmente para controlar a conversão (escala, média/desvio padrão, ROI).

class ml.preprocessing.Normalization(scale: tuple[float, float] = (0.0, 1.0), mean: tuple[float, float, float] = (0.0, 0.0, 0.0), stdev: tuple[float, float, float] = (1.0, 1.0, 1.0), roi: tuple[int, int, int, int] = None)

Cria um objeto Normalization.

scale é a faixa (min, max) de valores que os tensores de entrada de ponto flutuante esperam após a normalização (por exemplo, (0.0, 1.0) ou (-1.0, 1.0)). Ignorado para tensores de entrada uint8 e int8.

mean é a média por canal (R, G, B) subtraída da imagem após o escalonamento. Para tensores em escala de cinza, a média é reduzida a um único valor de luma usando 0.299*R + 0.587*G + 0.114*B. Ignorado para tensores de entrada uint8 e int8.

stdev é o desvio padrão por canal (R, G, B) pelo qual a imagem é dividida após a subtração da média. Para tensores em escala de cinza, o desvio padrão é reduzido a um único valor de luma usando 0.299*R + 0.587*G + 0.114*B. Ignorado para tensores de entrada uint8 e int8.

roi é uma região de interesse (x, y, w, h) opcional dentro da imagem de entrada para recortar. Se None, a imagem inteira é usada. A região recortada é centralizada e escalonada bilinearmente (preservando a proporção com preenchimento preto) para as dimensões do tensor de entrada do modelo.

__call__(image: image.Image) Normalization
__call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None

Quando chamado com um único argumento image.Image, retorna um novo objeto Normalization vinculado a essa imagem. O objeto vinculado é o que ml.Model.predict() invoca internamente para preencher o tensor de entrada. Se roi não foi definido na instância original, ele é inicializado com o tamanho da imagem inteira.

Quando chamado com (buffer, shape, dtype), preenche buffer no local com o tensor de entrada normalizado para a imagem previamente vinculada. shape deve ser (1, H, W, C) com C igual a 1 (escala de cinza) ou 3 (RGB). dtype é o código de tipo numpy do ulab (por exemplo, ord('f') para float32, ord('b') para int8, ord('B') para uint8). Tensores float aplicam scale, mean e stdev; tensores inteiros são escritos diretamente (com um deslocamento para int8).