ml.preprocessing — ML előfeldolgozás

A ml.preprocessing modul a képek gépi tanulási modellekkel való használatra történő előfeldolgozásához tartalmaz osztályokat.

class Normalization – Kép-normalizálás

A Normalization objektum az image.Image objektumokat ndarray bemeneti tenzorokká alakítja a ml.Model.predict() használatához. A ml.Model objektum automatikusan létrehozza, amikor egy kép kerül átadásra a ml.Model.predict() függvénynek, de manuálisan is példányosítható a konverzió (skála, átlag/szórás, ROI) vezérléséhez.

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)

Létrehoz egy Normalization objektumot.

A scale az értékek azon (min, max) tartománya, amelyet a lebegőpontos bemeneti tenzorok a normalizálás után elvárnak (pl. (0.0, 1.0) vagy (-1.0, 1.0)). A uint8 és int8 bemeneti tenzorok esetén figyelmen kívül marad.

A mean a csatornánkénti átlag (R, G, B), amelyet a skálázás után kivonunk a képből. A szürkeárnyalatos tenzorok esetén az átlag egyetlen luma értékre csökken a 0.299*R + 0.587*G + 0.114*B képlettel. A uint8 és int8 bemeneti tenzorok esetén figyelmen kívül marad.

A stdev a csatornánkénti szórás (R, G, B), amellyel a képet az átlag kivonása után elosztjuk. A szürkeárnyalatos tenzorok esetén a szórás egyetlen luma értékre csökken a 0.299*R + 0.587*G + 0.114*B képlettel. A uint8 és int8 bemeneti tenzorok esetén figyelmen kívül marad.

A roi egy opcionális (x, y, w, h) érdeklődési terület a bemeneti képen belül, amelyet ki kell vágni. Ha None, a teljes kép kerül felhasználásra. A kivágott terület középre igazítva, bilineárisan skálázva (a képarányt megőrizve fekete kitöltéssel) a modell bemeneti tenzorának méreteihez igazodik.

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

Ha egyetlen image.Image argumentummal hívják meg, egy új, az adott képhez kötött Normalization objektumot ad vissza. A kötött objektumot hívja meg belsőleg a ml.Model.predict() a bemeneti tenzor feltöltéséhez. Ha az eredeti példányon nem volt beállítva a roi, az a teljes képméretre inicializálódik.

Ha (buffer, shape, dtype) paraméterekkel hívják meg, helyben feltölti a buffer-t a korábban kötött kép normalizált bemeneti tenzorával. A shape értékének (1, H, W, C) alakúnak kell lennie, ahol a C értéke 1 (szürkeárnyalatos) vagy 3 (RGB). A dtype az ulab numpy típuskódja (pl. ord('f') a float32-höz, ord('b') az int8-hoz, ord('B') a uint8-hoz). A lebegőpontos tenzorok alkalmazzák a scale, mean és stdev értékeket; az egész számú tenzorok közvetlenül kerülnek beírásra (az int8 esetén egy eltolással).