ml.utils — Utility ML¶
Il modulo ml.utils contiene classi e funzioni di utilità per il machine learning.
Funzioni¶
- ml.utils.sigmoid(x: ndarray) ndarray¶
Restituisce il sigmoide di tutti i valori nell”
ndarraypassato.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Applica una soglia a
scores(unndarrayquantizzato di tipo int8, uint8, int16 o uint16) usando unathresholdquantizzata e restituisce unndarraydi tutti gli indici che superano la soglia.scaleviene verificato per determinare se i valori dequantizzati sono positivi o negativi. Quandoscale > 0vengono restituiti gli indici dovescores > threshold; altrimenti vengono restituiti gli indici dovescores < threshold.find_maxse True, sostituisce internamentescorescon unndarraydel massimo (o del minimo, a seconda discale) lungofind_max_axis.find_max_axisè l’asse lungo il quale viene calcolata la riduzione max/min quandofind_maxè True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Converte l”
ndarraypassato dividendo per la scala e aggiungendo lo zero point del modello. Restituiscevalueinvariato quando il dtype di output del modello all”indexè float.modelè il modello i cui parametri di quantizzazione dell’output vengono utilizzati.valueè l”ndarrayda quantizzare.indexseleziona quale output tensore delmodelutilizzare per la quantizzazione.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Converte l”
ndarraypassato sottraendo lo zero point e poi moltiplicando per la scala del modello. Restituiscevalueinvariato quando il dtype di output del modello all”indexè float.modelè il modello i cui parametri di quantizzazione dell’output vengono utilizzati.valueè l”ndarrayda dequantizzare.indexseleziona quale output tensore delmodelutilizzare per la dequantizzazione.
- 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¶
Disegna bounding box (o marcatori del punto centrale) con etichette di testo su
image.boxesè una lista di tuple(x, y, w, h).labelsè una lista di stringhe di etichetta, una per box.colorsè una lista di tuple(r, g, b), una per box.scoresse nonNone, una lista di punteggi di confidenza per box. Quando fornita, ogni etichetta disegnata viene completata con il punteggio formattato come" %.2f".formatcontrolla come vengono interpretate le coordinate del box:"pascal_voc"–(xmin, ymin, xmax, ymax)normalizzate nell’intervallo da0.0a1.0."point"– pixel assoluti(x, y, w, h); al centro del box viene disegnato un marcatore a cerchio pieno invece di un rettangolo (utile per i rilevatori basati sul punto centrale).qualsiasi altro valore – pixel assoluti
(x, y, w, h); disegnato come un rettangolo.
font_widthè la larghezza in pixel di ciascun carattere dell’etichetta.font_heightè l’altezza in pixel dello sfondo dell’etichetta.text_colorè il colore(r, g, b)usato per il testo dell’etichetta.
- 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¶
Disegna un
ndarraydi valori keypoint(x, y, ...)suimage.radiusè il raggio del cerchio del keypoint. Quandoradius == 0i keypoint vengono disegnati come singoli pixel.colorè il colore(r, g, b)del keypoint.thicknessè lo spessore del contorno del cerchio.fillse True riempie i cerchi dei keypoint.
- 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¶
Disegna un
ndarraydi valori keypoint(x, y, ...)suimagee poi li collega con segmenti di linea.linesè una lista di tuple(kp0_idx, kp1_idx)che specificano quali coppie di keypoint collegare.kp_radiusè il raggio del cerchio del keypoint (passato adraw_keypoints).kp_colorè il colore(r, g, b)del keypoint.kp_thicknessè lo spessore del contorno del cerchio del keypoint.kp_fillse True riempie i cerchi dei keypoint.line_colorè il colore(r, g, b)della linea.line_thicknessè lo spessore della linea.
class NMS – Soft-Non-Maximum Suppression¶
L’oggetto NMS raccoglie una lista di bounding box con i relativi punteggi, filtra i box sovrapposti con punteggi più bassi tramite Soft-NMS e rimappa i box rilevati in una sotto-finestra alle coordinate dell’immagine originale.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Crea un oggetto
NMS.window_wewindow_hsono la larghezza e l’altezza del tensore di input / finestra del modello.roiè la regione di interesse(x, y, w, h)dell’immagine originale su cui è stato eseguito il modello (tipicamente restituita dall’oggettoNormalization()). Usata per rimappare i box rilevati nello spazio delle coordinate dell’immagine originale.roi[2]eroi[3]devono essere >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Aggiunge un bounding box all’oggetto
NMS. I box conscoreal di fuori di[0.0, 1.0]o con larghezza o altezza nulla/negativa dopo il clipping vengono scartati.xmin,ymin,xmax,ymaxsono le coordinate del bounding box nello spazio dei pixel della finestra, limitate a[0, window_w]/[0, window_h].scoreè il punteggio di confidenza del bounding box (0.0-1.0).label_indexè l’indice dell’etichetta di classe associata al bounding box.keypointsè unndarrayopzionale di valori keypoint(x, y, ...)associati a questo bounding box.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Esegue Soft-NMS su tutti i box aggiunti e restituisce una lista di liste per classe, indicizzate per
label_index. Ogni lista interna contiene tuple((x, y, w, h), score)rimappate nelle coordinate dell’immagine originale. Sekeypointsè stato fornito al momento dell’aggiunta, la tupla viene estesa con l”ndarraydikeypointsrimappato.Dopo aver chiamato questo metodo, crea un nuovo oggetto
NMSper elaborare un nuovo insieme di bounding box.thresholdè il punteggio minimo che un box deve mantenere dopo la soppressione Soft-NMS per essere conservato.sigmacontrolla la gaussiana usata per penalizzare i punteggi dei bounding box sovrapposti. Unsigmapiù piccolo produce una soppressione più aggressiva.sigma <= 0.0disabilita la penalità gaussiana (i punteggi dei box sovrapposti non vengono decaduti).