ml.preprocessing — Pre-elaborazione ML

Il modulo ml.preprocessing contiene classi per la pre-elaborazione delle immagini da utilizzare con i modelli di machine learning.

class Normalization – Normalizzazione dell’immagine

L’oggetto Normalization converte gli oggetti image.Image in tensori di input ndarray da utilizzare con ml.Model.predict(). Viene creato automaticamente dall’oggetto ml.Model quando un’immagine viene passata a ml.Model.predict(), ma può essere istanziato manualmente per controllare la conversione (scala, media/dev.std, 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)

Crea un oggetto Normalization.

scale è l’intervallo (min, max) di valori che i tensori di input in virgola mobile prevedono dopo la normalizzazione (ad es. (0.0, 1.0) o (-1.0, 1.0)). Ignorato per i tensori di input uint8 e int8.

mean è la media per canale (R, G, B) sottratta dall’immagine dopo la scalatura. Per i tensori in scala di grigi la media viene ridotta a un singolo valore di luminanza utilizzando 0.299*R + 0.587*G + 0.114*B. Ignorato per i tensori di input uint8 e int8.

stdev è la deviazione standard per canale (R, G, B) per cui l’immagine viene divisa dopo la sottrazione della media. Per i tensori in scala di grigi la dev.std viene ridotta a un singolo valore di luminanza utilizzando 0.299*R + 0.587*G + 0.114*B. Ignorato per i tensori di input uint8 e int8.

roi è una regione di interesse (x, y, w, h) opzionale all’interno dell’immagine di input da ritagliare. Se None, viene utilizzata l’intera immagine. La regione ritagliata viene centrata e scalata bilinearmente (preservando il rapporto d’aspetto con riempimento nero) alle dimensioni del tensore di input del modello.

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

Quando chiamato con un singolo argomento image.Image, restituisce un nuovo oggetto Normalization associato a quell’immagine. L’oggetto associato è ciò che ml.Model.predict() invoca internamente per riempire il tensore di input. Se roi non era stato impostato sull’istanza originale, viene inizializzato alla dimensione dell’intera immagine.

Quando chiamato con (buffer, shape, dtype), riempie buffer in loco con il tensore di input normalizzato per l’immagine precedentemente associata. shape deve essere (1, H, W, C) con C uguale a 1 (scala di grigi) o 3 (RGB). dtype è il codice di tipo numpy di ulab (ad es. ord('f') per float32, ord('b') per int8, ord('B') per uint8). I tensori float applicano scale, mean e stdev; i tensori interi vengono scritti direttamente (con un offset per int8).