ml.utils — Utilitare ML¶
Modulul ml.utils conține clase și funcții utilitare pentru învățarea automată.
Funcții¶
- ml.utils.sigmoid(x: ndarray) ndarray¶
Returnează sigmoida tuturor valorilor din
ndarray-ul transmis.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Aplică un prag asupra
scores(unndarraycuantizat de tip int8, uint8, int16 sau uint16) folosind unthresholdcuantizat și returnează unndarraycu toți indicii care trec de prag.scaleeste testat pentru a determina dacă valorile decuantizate sunt pozitive sau negative. Cândscale > 0se returnează indicii pentru carescores > threshold; în caz contrar se returnează indicii pentru carescores < threshold.find_maxdacă este True, înlocuiește internscorescu unndarrayal valorilor maxime (sau minime, în funcție descale) de-a lungulfind_max_axis.find_max_axiseste axa de-a lungul căreia se calculează reducerea max/min atunci cândfind_maxeste True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convertește
ndarray-ul transmis împărțind la factorul de scalare și adăugând punctul zero al modelului. Returneazăvalueneschimbat atunci când tipul de date al ieșirii modelului laindexeste float.modeleste modelul ai cărui parametri de cuantizare a ieșirii sunt folosiți.valueestendarray-ul care urmează să fie cuantizat.indexselectează față de care ieșire tensorială amodel-ului se face cuantizarea.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convertește
ndarray-ul transmis scăzând punctul zero și apoi înmulțind cu factorul de scalare al modelului. Returneazăvalueneschimbat atunci când tipul de date al ieșirii modelului laindexeste float.modeleste modelul ai cărui parametri de cuantizare a ieșirii sunt folosiți.valueestendarray-ul care urmează să fie decuantizat.indexselectează față de care ieșire tensorială amodel-ului se face decuantizarea.
- 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¶
Desenează casete de încadrare (sau marcaje de punct central) cu etichete text pe
image.boxeseste o listă de tupluri(x, y, w, h).labelseste o listă de șiruri de etichete, câte una pentru fiecare casetă.colorseste o listă de tupluri(r, g, b), câte unul pentru fiecare casetă.scoresdacă nu esteNone, o listă de scoruri de încredere pentru fiecare casetă. Când este furnizată, fiecare etichetă redată este sufixată cu scorul formatat ca" %.2f".formatcontrolează modul în care sunt interpretate coordonatele casetei:"pascal_voc"– normalizat(xmin, ymin, xmax, ymax)în intervalul0.0până la1.0."point"– pixeli absoluți(x, y, w, h); un marcaj sub formă de cerc plin este desenat în centrul casetei în loc de un dreptunghi (util pentru detectoare bazate pe puncte centrale).orice altă valoare – pixeli absoluți
(x, y, w, h); desenat ca un dreptunghi.
font_widtheste lățimea în pixeli a fiecărui caracter din etichetă.font_heighteste înălțimea în pixeli a fundalului etichetei.text_coloreste culoarea(r, g, b)folosită pentru textul etichetei.
- 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¶
Desenează un
ndarrayde valori de puncte-cheie(x, y, ...)peimage.radiuseste raza cercului punctului-cheie. Cândradius == 0punctele-cheie sunt desenate ca pixeli individuali.coloreste culoarea(r, g, b)a punctelor-cheie.thicknesseste grosimea conturului cercului.filldacă este True umple cercurile punctelor-cheie.
- 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¶
Desenează un
ndarrayde valori de puncte-cheie(x, y, ...)peimageși apoi le conectează cu segmente de linie.lineseste o listă de tupluri(kp0_idx, kp1_idx)care specifică ce perechi de puncte-cheie să fie conectate.kp_radiuseste raza cercului punctului-cheie (transmisă mai departe cătredraw_keypoints).kp_coloreste culoarea(r, g, b)a punctelor-cheie.kp_thicknesseste grosimea conturului cercului punctului-cheie.kp_filldacă este True umple cercurile punctelor-cheie.line_coloreste culoarea(r, g, b)a liniilor.line_thicknesseste grosimea liniei.
class NMS – Suprimare slabă a non-maximelor (Soft-Non-Maximum Suppression)¶
Obiectul NMS colectează o listă de casete de încadrare cu scorurile asociate, filtrează casetele suprapuse cu scoruri mai mici prin Soft-NMS și remapează casetele detectate într-o sub-fereastră înapoi în coordonatele imaginii originale.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Creează un obiect
NMS.window_wșiwindow_hsunt lățimea și înălțimea tensorului / ferestrei de intrare a modelului.roieste regiunea de interes(x, y, w, h)din imaginea originală pe care a fost rulat modelul (de obicei returnată de obiectulNormalization()). Folosită pentru a remapa casetele detectate înapoi în spațiul de coordonate al imaginii originale.roi[2]șiroi[3]trebuie să fie >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Adaugă o casetă de încadrare la obiectul
NMS. Casetele cuscoreîn afara intervalului[0.0, 1.0]sau cu lățime ori înălțime zero/negativă după decupare sunt eliminate.xmin,ymin,xmax,ymaxsunt coordonatele casetei de încadrare în spațiul de pixeli al ferestrei, decupate la[0, window_w]/[0, window_h].scoreeste scorul de încredere al casetei de încadrare (0.0-1.0).label_indexeste indicele etichetei de clasă asociate casetei de încadrare.keypointseste unndarrayopțional de valori de puncte-cheie(x, y, ...)asociate acestei casete de încadrare.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Efectuează Soft-NMS asupra tuturor casetelor adăugate și returnează o listă de liste pentru fiecare clasă, indexate după
label_index. Fiecare listă internă conține tupluri de forma((x, y, w, h), score)mapate înapoi în coordonatele imaginii originale. Dacăkeypointsa fost furnizat la adăugare, tuplul este extins cundarray-ulkeypointsremapat.După apelarea acestei metode, creați un nou obiect
NMSpentru a procesa un nou set de casete de încadrare.thresholdeste scorul minim pe care o casetă trebuie să îl păstreze după suprimarea Soft-NMS pentru a fi reținută.sigmacontrolează funcția gaussiană folosită pentru a penaliza scorurile casetelor de încadrare suprapuse. Unsigmamai mic duce la o suprimare mai agresivă.sigma <= 0.0dezactivează penalizarea gaussiană (scorurile casetelor suprapuse nu sunt diminuate).