ml.preprocessing — Předzpracování ML

Modul ml.preprocessing obsahuje třídy pro předzpracování obrazů pro použití s modely strojového učení.

class Normalization – Normalizace obrazu

Objekt Normalization převádí objekty image.Image na vstupní tenzory ndarray pro použití s ml.Model.predict(). Je automaticky vytvořen objektem ml.Model, když je do ml.Model.predict() předán obraz, ale lze jej vytvořit i ručně pro řízení převodu (měřítko, průměr/směrodatná odchylka, 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)

Vytvoří objekt Normalization.

scale je rozsah (min, max) hodnot, které vstupní tenzory s plovoucí desetinnou čárkou očekávají po normalizaci (např. (0.0, 1.0) nebo (-1.0, 1.0)). Pro vstupní tenzory typu uint8 a int8 se ignoruje.

mean je průměr po jednotlivých kanálech (R, G, B) odečtený od obrazu po škálování. U tenzorů ve stupních šedi je průměr zredukován na jedinou jasovou hodnotu pomocí 0.299*R + 0.587*G + 0.114*B. Pro vstupní tenzory typu uint8 a int8 se ignoruje.

stdev je směrodatná odchylka po jednotlivých kanálech (R, G, B), kterou se obraz dělí po odečtení průměru. U tenzorů ve stupních šedi je směrodatná odchylka zredukována na jedinou jasovou hodnotu pomocí 0.299*R + 0.587*G + 0.114*B. Pro vstupní tenzory typu uint8 a int8 se ignoruje.

roi je volitelná oblast zájmu (x, y, w, h) ve vstupním obrazu, která se má oříznout. Je-li None, použije se celý obraz. Oříznutá oblast je vystředěna a bilineárně škálována (se zachováním poměru stran a černým doplněním) na rozměry vstupního tenzoru modelu.

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

Při volání s jediným argumentem image.Image vrací nový objekt Normalization navázaný na tento obraz. Navázaný objekt je to, co ml.Model.predict() interně vyvolává k naplnění vstupního tenzoru. Pokud roi nebylo na původní instanci nastaveno, je inicializováno na plnou velikost obrazu.

Při volání s (buffer, shape, dtype) naplní buffer na místě normalizovaným vstupním tenzorem pro dříve navázaný obraz. shape musí být (1, H, W, C), kde C je rovno 1 (stupně šedi) nebo 3 (RGB). dtype je kód typu ulab numpy (např. ord('f') pro float32, ord('b') pro int8, ord('B') pro uint8). Tenzory typu float uplatňují scale, mean a stdev; celočíselné tenzory se zapisují přímo (s posunem pro int8).