ml.preprocessing — ML predobrada

Modul ml.preprocessing sadrži klase za predobradu slika za korištenje s modelima strojnog učenja.

klasa Normalization – Normalizacija slike

Objekt Normalization pretvara objekte image.Image u ndarray ulazne tenzore za korištenje s ml.Model.predict(). Automatski ga stvara objekt ml.Model kada se slika preda metodi ml.Model.predict(), ali se može instancirati i ručno radi kontrole pretvorbe (skala, srednja vrijednost/standardna devijacija, 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)

Stvara objekt Normalization.

scale je raspon vrijednosti (min, max) koje ulazni tenzori s pomičnim zarezom očekuju nakon normalizacije (npr. (0.0, 1.0) ili (-1.0, 1.0)). Zanemaruje se za uint8 i int8 ulazne tenzore.

mean je srednja vrijednost po kanalu (R, G, B) koja se oduzima od slike nakon skaliranja. Za tenzore sivih tonova srednja se vrijednost svodi na jednu vrijednost luminancije pomoću 0.299*R + 0.587*G + 0.114*B. Zanemaruje se za uint8 i int8 ulazne tenzore.

stdev je standardna devijacija po kanalu (R, G, B) kojom se slika dijeli nakon oduzimanja srednje vrijednosti. Za tenzore sivih tonova standardna se devijacija svodi na jednu vrijednost luminancije pomoću 0.299*R + 0.587*G + 0.114*B. Zanemaruje se za uint8 i int8 ulazne tenzore.

roi je opcionalno područje interesa (x, y, w, h) unutar ulazne slike koje se izrezuje. Ako je None, koristi se cijela slika. Izrezano područje centrira se i bilinearno skalira (uz očuvanje omjera stranica s crnim ispunom) na dimenzije ulaznog tenzora modela.

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

Kada se pozove s jednim argumentom image.Image, vraća novi objekt Normalization vezan uz tu sliku. Vezani objekt je ono što ml.Model.predict() interno poziva radi popunjavanja ulaznog tenzora. Ako roi nije bio postavljen na izvornoj instanci, inicijalizira se na punu veličinu slike.

Kada se pozove s (buffer, shape, dtype), popunjava buffer na mjestu normaliziranim ulaznim tenzorom za prethodno vezanu sliku. shape mora biti (1, H, W, C) s C jednakim 1 (sivi tonovi) ili 3 (RGB). dtype je ulab numpy kod tipa (npr. ord('f') za float32, ord('b') za int8, ord('B') za uint8). Float tenzori primjenjuju scale, mean i stdev; cjelobrojni tenzori zapisuju se izravno (uz pomak za int8).