ml.utils — ML segédeszközök

A ml.utils modul a gépi tanuláshoz használható segédosztályokat és -függvényeket tartalmaz.

Függvények

ml.utils.logit(x: ndarray) ndarray

Visszaadja az átadott ndarray összes értékének logitját.

ml.utils.sigmoid(x: ndarray) ndarray

Visszaadja az átadott ndarray összes értékének szigmoid értékét.

ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray

Küszöböli a scores értékeit (int8, uint8, int16 vagy uint16 típusú kvantált ndarray) egy kvantált threshold segítségével, és visszaad egy ndarray tömböt a küszöbértéket meghaladó összes indexszel.

A scale alapján dől el, hogy a dekvantált értékek pozitívak vagy negatívak. Ha scale > 0, akkor azok az indexek kerülnek visszaadásra, ahol scores > threshold; egyébként azok, ahol scores < threshold.

A find_max ha True, akkor a scores tömböt belsőleg lecseréli egy ndarray tömbre, amely a find_max_axis mentén vett maximumokat (vagy minimumokat, a scale függvényében) tartalmazza.

A find_max_axis az a tengely, amely mentén a maximum/minimum redukció kiszámításra kerül, amikor a find_max True.

ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray

Az átadott ndarray tömböt a skálával való osztással és a modell nullpontjának hozzáadásával konvertálja. A value változatlanul kerül visszaadásra, ha a modell kimeneti dtype-ja az index helyen float.

A model az a modell, amelynek kimeneti kvantálási paraméterei kerülnek felhasználásra.

A value a kvantálandó ndarray.

Az index választja ki, hogy a model melyik tenzorkimenetéhez képest történjen a kvantálás.

ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray

Az átadott ndarray tömböt a nullpont kivonásával, majd a modell skálájával való szorzással konvertálja. A value változatlanul kerül visszaadásra, ha a modell kimeneti dtype-ja az index helyen float.

A model az a modell, amelynek kimeneti kvantálási paraméterei kerülnek felhasználásra.

A value a dekvantálandó ndarray.

Az index választja ki, hogy a model melyik tenzorkimenetéhez képest történjen a dekvantálás.

ml.utils.draw_predictions(image: image.Image, boxes: list[tuple[float, float, float, float]], labels: list[str], colors: list[tuple[int, int, int]], scores: list[float] | None = None, format: str = 'pascal_voc', font_width: int = 8, font_height: int = 10, text_color: tuple[int, int, int] = (255, 255, 255)) None

Határoló dobozokat (vagy középpontjelölőket) rajzol szöveges címkékkel az image képre.

A boxes (x, y, w, h) tuple-ök listája.

A labels címkesztringek listája, dobozonként egy.

A colors (r, g, b) tuple-ök listája, dobozonként egy.

A scores ha nem None, akkor a dobozonkénti megbízhatósági pontszámok listája. Megadása esetén minden megjelenített címke ki lesz egészítve a " %.2f" formátumban formázott pontszámmal.

A format szabályozza, hogyan kerülnek értelmezésre a doboz koordinátái:

  • "pascal_voc" – normalizált (xmin, ymin, xmax, ymax) a 0.0 és 1.0 közötti tartományban.

  • "point" – abszolút képpont (x, y, w, h); téglalap helyett egy kitöltött kör jelölő kerül rajzolásra a doboz közepén (középpont-detektorokhoz hasznos).

  • bármely más érték – abszolút képpont (x, y, w, h); téglalapként kerül rajzolásra.

A font_width a címke minden egyes karakterének szélessége képpontban.

A font_height a címke hátterének magassága képpontban.

A text_color a címke szövegéhez használt (r, g, b) szín.

ml.utils.draw_keypoints(image: image.Image, keypoints: ndarray, radius: int = 4, color: tuple[int, int, int] = (255, 0, 0), thickness: int = 1, fill: bool = False) None

Kulcspont (x, y, ...) értékek ndarray tömbjét rajzolja az image képre.

A radius a kulcspont köre sugara. Ha radius == 0, a kulcspontok egyetlen képpontként kerülnek kirajzolásra.

A color a kulcspont (r, g, b) színe.

A thickness a kör körvonalának vastagsága.

A fill ha True, kitölti a kulcspont köröket.

ml.utils.draw_skeleton(image: image.Image, keypoints: ndarray, lines: list[tuple[int, int]], kp_radius: int = 4, kp_color: tuple[int, int, int] = (255, 0, 0), kp_thickness: int = 1, kp_fill: bool = False, line_color: tuple[int, int, int] = (0, 255, 0), line_thickness: int = 1) None

Kulcspont (x, y, ...) értékek ndarray tömbjét rajzolja az image képre, majd vonalszakaszokkal összeköti őket.

A lines (kp0_idx, kp1_idx) tuple-ök listája, amely megadja, mely kulcspontpárokat kell összekötni.

A kp_radius a kulcspont köre sugara (továbbadva a draw_keypoints függvénynek).

A kp_color a kulcspont (r, g, b) színe.

A kp_thickness a kulcspont köre körvonalának vastagsága.

A kp_fill ha True, kitölti a kulcspont köröket.

A line_color a vonal (r, g, b) színe.

A line_thickness a vonal vastagsága.

class NMS – Soft-Non-Maximum Suppression

Az NMS objektum összegyűjt egy listát határoló dobozokról a hozzájuk tartozó pontszámokkal, Soft-NMS segítségével kiszűri az alacsonyabb pontszámú átfedő dobozokat, és visszaképezi az al-ablakban észlelt dobozokat az eredeti kép koordinátáira.

class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])

Létrehoz egy NMS objektumot.

A window_w és window_h a modell bemeneti tenzorjának / ablakának szélessége és magassága.

A roi az eredeti kép (x, y, w, h) érdeklődési területe, amelyen a modell futott (jellemzően a Normalization() objektum adja vissza). Arra szolgál, hogy az észlelt dobozokat visszaképezze az eredeti kép koordináta-rendszerébe. A roi[2] és roi[3] értékének >= 1-nek kell lennie.

add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None

Hozzáad egy határoló dobozt az NMS objektumhoz. A [0.0, 1.0] tartományon kívüli score értékkel rendelkező, vagy a vágás után nulla/negatív szélességű vagy magasságú dobozok eldobásra kerülnek.

Az xmin, ymin, xmax, ymax a határoló doboz koordinátái az ablak képpont-terében, a [0, window_w] / [0, window_h] tartományra vágva.

A score a határoló doboz megbízhatósági pontszáma (0.0-1.0).

A label_index a határoló dobozhoz tartozó osztálycímke indexe.

A keypoints egy opcionális ndarray a kulcspont (x, y, ...) értékekkel, amelyek ehhez a határoló dobozhoz tartoznak.

get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]

Soft-NMS-t végez az összes hozzáadott dobozon, és visszaad egy label_index szerint indexelt, osztályonkénti listákból álló listát. Minden belső lista ((x, y, w, h), score) tuple-öket tartalmaz, amelyek vissza vannak képezve az eredeti kép koordinátáira. Ha a hozzáadáskor keypoints is meg lett adva, a tuple kibővül a visszaképezett keypoints ndarray tömbbel.

A metódus meghívása után hozzon létre egy új NMS objektumot egy új határoló doboz halmaz feldolgozásához.

A threshold az a minimális pontszám, amelyet egy doboznak a Soft-NMS elnyomás után meg kell tartania ahhoz, hogy megmaradjon.

A sigma szabályozza az átfedő határoló dobozok pontszámának büntetésére használt Gauss-függvényt. A kisebb sigma agresszívabb elnyomást eredményez. A sigma <= 0.0 letiltja a Gauss-büntetést (az átfedő dobozok pontszámai nem csökkennek).