ml.utils — ML alati

Modul ml.utils sadrži pomoćne klase i funkcije za strojno učenje.

Funkcije

ml.utils.logit(x: ndarray) ndarray

Vraća logit svih vrijednosti u proslijeđenom ndarray.

ml.utils.sigmoid(x: ndarray) ndarray

Vraća sigmoidu svih vrijednosti u proslijeđenom ndarray.

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

Primjenjuje prag na scores (kvantizirani ndarray tipa int8, uint8, int16 ili uint16) prema kvantiziranom threshold i vraća ndarray svih indeksa koji prolaze prag.

scale se ispituje kako bi se utvrdilo jesu li dekvantizirane vrijednosti pozitivne ili negativne. Kada je scale > 0 vraćaju se indeksi gdje je scores > threshold; u suprotnom se vraćaju indeksi gdje je scores < threshold.

find_max ako je True, interno zamjenjuje scores s ndarray maksimuma (ili minimuma, ovisno o scale) duž find_max_axis.

find_max_axis je os duž koje se računa redukcija maksimuma/minimuma kada je find_max True.

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

Pretvara proslijeđeni ndarray dijeljenjem sa skalom i dodavanjem nulte točke modela. Vraća value nepromijenjen kada je izlazni dtype modela na index float.

model je model čiji se parametri kvantizacije izlaza koriste.

value je ndarray koji se kvantizira.

index odabire koji se izlazni tenzor model koristi za kvantizaciju.

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

Pretvara proslijeđeni ndarray oduzimanjem nulte točke i zatim množenjem sa skalom modela. Vraća value nepromijenjen kada je izlazni dtype modela na index float.

model je model čiji se parametri kvantizacije izlaza koriste.

value je ndarray koji se dekvantizira.

index odabire koji se izlazni tenzor model koristi za dekvantizaciju.

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

Crta granične okvire (ili oznake središnje točke) s tekstualnim oznakama na image.

boxes je popis n-torki (x, y, w, h).

labels je popis nizova oznaka, jedan po okviru.

colors je popis n-torki (r, g, b), jedan po okviru.

scores ako nije None, popis pouzdanosti po okviru. Kada je naveden, svakoj iscrtanoj oznaci dodaje se sufiks s rezultatom oblikovanim kao " %.2f".

format upravlja načinom na koji se tumače koordinate okvira:

  • "pascal_voc" – normalizirano (xmin, ymin, xmax, ymax) u rasponu od 0.0 do 1.0.

  • "point" – apsolutni piksel (x, y, w, h); umjesto pravokutnika u središtu okvira crta se ispunjeni kružni marker (korisno za detektore središnjih točaka).

  • bilo koja druga vrijednost – apsolutni piksel (x, y, w, h); crta se kao pravokutnik.

font_width je širina u pikselima svakog znaka u oznaci.

font_height je visina u pikselima pozadine oznake.

text_color je (r, g, b) boja koja se koristi za tekst oznake.

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

Crta ndarray vrijednosti ključnih točaka (x, y, ...) na image.

radius je polumjer kružnice ključne točke. Kada je radius == 0 ključne točke se crtaju kao pojedinačni pikseli.

color je (r, g, b) boja ključne točke.

thickness je debljina obrisa kružnice.

fill ako je True, ispunjava kružnice ključnih točaka.

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

Crta ndarray vrijednosti ključnih točaka (x, y, ...) na image i zatim ih povezuje linijskim segmentima.

lines je popis n-torki (kp0_idx, kp1_idx) koje određuju koje parove ključnih točaka treba povezati.

kp_radius je polumjer kružnice ključne točke (prosljeđuje se funkciji draw_keypoints).

kp_color je (r, g, b) boja ključne točke.

kp_thickness je debljina obrisa kružnice ključne točke.

kp_fill ako je True, ispunjava kružnice ključnih točaka.

line_color je (r, g, b) boja linije.

line_thickness je debljina linije.

klasa NMS – Soft-Non-Maximum Suppression

Objekt NMS prikuplja popis graničnih okvira s pripadajućim rezultatima, filtrira preklapajuće okvire s nižim rezultatima pomoću Soft-NMS i preslikava okvire otkrivene u podprozoru natrag u koordinate izvorne slike.

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

Stvara objekt NMS.

window_w i window_h su širina i visina ulaznog tenzora / prozora modela.

roi je (x, y, w, h) područje interesa izvorne slike na kojem je model pokrenut (obično ga vraća objekt Normalization()). Koristi se za preslikavanje otkrivenih okvira natrag u koordinatni prostor izvorne slike. roi[2] i roi[3] moraju biti >= 1.

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

Dodaje granični okvir objektu NMS. Okviri sa score izvan [0.0, 1.0] ili s nultom/negativnom širinom ili visinom nakon odsijecanja se odbacuju.

xmin, ymin, xmax, ymax su koordinate graničnog okvira u pikselskom prostoru prozora, odsječene na [0, window_w] / [0, window_h].

score je pouzdanost graničnog okvira (0.0-1.0).

label_index je indeks oznake klase pridružene graničnom okviru.

keypoints je opcijski ndarray vrijednosti ključnih točaka (x, y, ...) pridruženih ovom graničnom okviru.

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

Provodi Soft-NMS nad svim dodanim okvirima i vraća popis popisa po klasama, indeksiranih po label_index. Svaki unutarnji popis sadrži n-torke ((x, y, w, h), score) preslikane natrag u koordinate izvorne slike. Ako su pri dodavanju navedene keypoints, n-torka se proširuje preslikanim ndarray keypoints.

Nakon poziva ove metode stvorite novi objekt NMS za obradu novog skupa graničnih okvira.

threshold je najmanji rezultat koji okvir mora zadržati nakon Soft-NMS potiskivanja da bi bio zadržan.

sigma upravlja Gaussovom funkcijom koja se koristi za kažnjavanje rezultata preklapajućih graničnih okvira. Manja sigma rezultira agresivnijim potiskivanjem. sigma <= 0.0 onemogućuje Gaussovu kaznu (rezultati preklapajućih okvira se ne smanjuju).