ml.utils — ML alati¶
Modul ml.utils sadrži pomoćne klase i funkcije za strojno učenje.
Funkcije¶
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Primjenjuje prag na
scores(kvantiziranindarraytipa int8, uint8, int16 ili uint16) prema kvantiziranomthresholdi vraćandarraysvih indeksa koji prolaze prag.scalese ispituje kako bi se utvrdilo jesu li dekvantizirane vrijednosti pozitivne ili negativne. Kada jescale > 0vraćaju se indeksi gdje jescores > threshold; u suprotnom se vraćaju indeksi gdje jescores < threshold.find_maxako je True, interno zamjenjujescoressndarraymaksimuma (ili minimuma, ovisno oscale) dužfind_max_axis.find_max_axisje os duž koje se računa redukcija maksimuma/minimuma kada jefind_maxTrue.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Pretvara proslijeđeni
ndarraydijeljenjem sa skalom i dodavanjem nulte točke modela. Vraćavaluenepromijenjen kada je izlazni dtype modela naindexfloat.modelje model čiji se parametri kvantizacije izlaza koriste.valuejendarraykoji se kvantizira.indexodabire koji se izlazni tenzormodelkoristi za kvantizaciju.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Pretvara proslijeđeni
ndarrayoduzimanjem nulte točke i zatim množenjem sa skalom modela. Vraćavaluenepromijenjen kada je izlazni dtype modela naindexfloat.modelje model čiji se parametri kvantizacije izlaza koriste.valuejendarraykoji se dekvantizira.indexodabire koji se izlazni tenzormodelkoristi 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.boxesje popis n-torki(x, y, w, h).labelsje popis nizova oznaka, jedan po okviru.colorsje popis n-torki(r, g, b), jedan po okviru.scoresako nijeNone, popis pouzdanosti po okviru. Kada je naveden, svakoj iscrtanoj oznaci dodaje se sufiks s rezultatom oblikovanim kao" %.2f".formatupravlja načinom na koji se tumače koordinate okvira:"pascal_voc"– normalizirano(xmin, ymin, xmax, ymax)u rasponu od0.0do1.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_widthje širina u pikselima svakog znaka u oznaci.font_heightje visina u pikselima pozadine oznake.text_colorje(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
ndarrayvrijednosti ključnih točaka(x, y, ...)naimage.radiusje polumjer kružnice ključne točke. Kada jeradius == 0ključne točke se crtaju kao pojedinačni pikseli.colorje(r, g, b)boja ključne točke.thicknessje debljina obrisa kružnice.fillako 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
ndarrayvrijednosti ključnih točaka(x, y, ...)naimagei zatim ih povezuje linijskim segmentima.linesje popis n-torki(kp0_idx, kp1_idx)koje određuju koje parove ključnih točaka treba povezati.kp_radiusje polumjer kružnice ključne točke (prosljeđuje se funkcijidraw_keypoints).kp_colorje(r, g, b)boja ključne točke.kp_thicknessje debljina obrisa kružnice ključne točke.kp_fillako je True, ispunjava kružnice ključnih točaka.line_colorje(r, g, b)boja linije.line_thicknessje 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_wiwindow_hsu širina i visina ulaznog tenzora / prozora modela.roije(x, y, w, h)područje interesa izvorne slike na kojem je model pokrenut (obično ga vraća objektNormalization()). Koristi se za preslikavanje otkrivenih okvira natrag u koordinatni prostor izvorne slike.roi[2]iroi[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 sascoreizvan[0.0, 1.0]ili s nultom/negativnom širinom ili visinom nakon odsijecanja se odbacuju.xmin,ymin,xmax,ymaxsu koordinate graničnog okvira u pikselskom prostoru prozora, odsječene na[0, window_w]/[0, window_h].scoreje pouzdanost graničnog okvira (0.0-1.0).label_indexje indeks oznake klase pridružene graničnom okviru.keypointsje opcijskindarrayvrijednosti 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 navedenekeypoints, n-torka se proširuje preslikanimndarraykeypoints.Nakon poziva ove metode stvorite novi objekt
NMSza obradu novog skupa graničnih okvira.thresholdje najmanji rezultat koji okvir mora zadržati nakon Soft-NMS potiskivanja da bi bio zadržan.sigmaupravlja Gaussovom funkcijom koja se koristi za kažnjavanje rezultata preklapajućih graničnih okvira. Manjasigmarezultira agresivnijim potiskivanjem.sigma <= 0.0onemogućuje Gaussovu kaznu (rezultati preklapajućih okvira se ne smanjuju).