ml.preprocessing — Pré-processamento ML

O módulo ml.preprocessing contém classes para pré-processar imagens para uso com modelos de machine learning.

class Normalization – Normalização de Imagem

O objeto Normalization converte objetos image.Image em tensores de entrada ndarray para uso com ml.Model.predict(). É criado automaticamente pelo objeto ml.Model quando uma imagem é passada a 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 é o intervalo (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 a escala. Para tensores em escala de cinzentos, a média é reduzida a um único valor de luminância 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 cinzentos, o desvio padrão é reduzido a um único valor de luminância usando 0.299*R + 0.587*G + 0.114*B. Ignorado para tensores de entrada uint8 e int8.

roi é uma região de interesse opcional (x, y, w, h) dentro da imagem de entrada para recortar. Se None, a imagem completa é utilizada. A região recortada é centrada e redimensionada bilinearmente (preservando a proporção com preenchimento a 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, devolve 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, é inicializado com o tamanho completo da imagem.

Quando chamado com (buffer, shape, dtype), preenche buffer no próprio lugar 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 cinzentos) 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). Os tensores float aplicam scale, mean e stdev; os tensores inteiros são escritos diretamente (com um deslocamento para int8).