ml.utils — ML-hulpprogramma’s¶
De ml.utils-module bevat hulpklassen en -functies voor machine vision.
Functies¶
- ml.utils.logit(x: ndarray) ndarray¶
Geeft de logit terug van alle waarden in de doorgegeven
ndarray.
- ml.utils.sigmoid(x: ndarray) ndarray¶
Geeft de sigmoid terug van alle waarden in de doorgegeven
ndarray.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Past een drempelwaarde toe op
scores(een gekwantiseerdendarrayvan int8, uint8, int16 of uint16) met een gekwantiseerdethresholden geeft eenndarrayterug van alle indices die de drempelwaarde passeren.scalewordt getest om te bepalen of de gedekwantiseerde waarden positief of negatief zijn. Wanneerscale > 0worden de indices teruggegeven waarscores > threshold; anders worden de indices teruggegeven waarscores < threshold.find_maxvervangt, indien True,scoresintern door eenndarrayvan het maximum (of minimum, afhankelijk vanscale) langsfind_max_axis.find_max_axisis de as waarlangs de max/min-reductie wordt berekend wanneerfind_maxTrue is.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Converteert de doorgegeven
ndarraydoor te delen door de schaal en het nulpunt van het model op te tellen. Geeftvalueongewijzigd terug wanneer het dtype van de modeluitvoer bijindexfloat is.modelis het model waarvan de kwantisatieparameters van de uitvoer worden gebruikt.valueis dendarraydie gekwantiseerd moet worden.indexselecteert tegen welke tensoruitvoer van hetmodelgekwantiseerd moet worden.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Converteert de doorgegeven
ndarraydoor het nulpunt af te trekken en vervolgens te vermenigvuldigen met de schaal van het model. Geeftvalueongewijzigd terug wanneer het dtype van de modeluitvoer bijindexfloat is.modelis het model waarvan de kwantisatieparameters van de uitvoer worden gebruikt.valueis dendarraydie gedekwantiseerd moet worden.indexselecteert tegen welke tensoruitvoer van hetmodelgedekwantiseerd moet worden.
- 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¶
Tekent begrenzingsvakken (of middelpuntmarkeringen) met tekstlabels op
image.boxesis een lijst van(x, y, w, h)-tuples.labelsis een lijst van labelstrings, één per vak.colorsis een lijst van(r, g, b)-tuples, één per vak.scoresis, indien nietNone, een lijst met betrouwbaarheidsscores per vak. Wanneer deze wordt opgegeven, krijgt elk weergegeven label de score als achtervoegsel, opgemaakt als" %.2f".formatbepaalt hoe de vakcoördinaten worden geïnterpreteerd:"pascal_voc"– genormaliseerde(xmin, ymin, xmax, ymax)in het bereik0.0tot1.0."point"– absolute pixel(x, y, w, h); in plaats van een rechthoek wordt een gevulde cirkelmarkering in het midden van het vak getekend (handig voor middelpuntdetectoren).elke andere waarde – absolute pixel
(x, y, w, h); getekend als een rechthoek.
font_widthis de breedte in pixels van elk teken in het label.font_heightis de hoogte in pixels van de labelachtergrond.text_coloris de(r, g, b)-kleur die voor de labeltekst wordt gebruikt.
- 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¶
Tekent een
ndarrayvan sleutelpunt(x, y, ...)-waarden opimage.radiusis de straal van de sleutelpuntcirkel. Wanneerradius == 0worden de sleutelpunten als losse pixels getekend.coloris de(r, g, b)-kleur van het sleutelpunt.thicknessis de dikte van de cirkelomtrek.fillvult, indien True, de sleutelpuntcirkels.
- 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¶
Tekent een
ndarrayvan sleutelpunt(x, y, ...)-waarden opimageen verbindt ze vervolgens met lijnsegmenten.linesis een lijst van(kp0_idx, kp1_idx)-tuples die aangeven welke sleutelpuntparen verbonden moeten worden.kp_radiusis de straal van de sleutelpuntcirkel (doorgegeven aandraw_keypoints).kp_coloris de(r, g, b)-kleur van het sleutelpunt.kp_thicknessis de dikte van de omtrek van de sleutelpuntcirkel.kp_fillvult, indien True, de sleutelpuntcirkels.line_coloris de(r, g, b)-kleur van de lijn.line_thicknessis de dikte van de lijn.
class NMS – Soft-Non-Maximum Suppression¶
Het NMS-object verzamelt een lijst van begrenzingsvakken met bijbehorende scores, filtert overlappende vakken met lagere scores via Soft-NMS, en zet vakken die in een deelvenster zijn gedetecteerd terug naar de coördinaten van de originele afbeelding.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Maakt een
NMS-object aan.window_wenwindow_hzijn de breedte en hoogte van de invoertensor / het venster van het model.roiis het(x, y, w, h)-aandachtsgebied (ROI) van de originele afbeelding waarop het model is uitgevoerd (doorgaans teruggegeven door hetNormalization()-object). Wordt gebruikt om gedetecteerde vakken terug te zetten naar de coördinatenruimte van de originele afbeelding.roi[2]enroi[3]moeten >= 1 zijn.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Voegt een begrenzingsvak toe aan het
NMS-object. Vakken met eenscorebuiten[0.0, 1.0]of met een nulle/negatieve breedte of hoogte na clipping worden verwijderd.xmin,ymin,xmax,ymaxzijn de coördinaten van het begrenzingsvak in vensterpixelruimte, geclipt tot[0, window_w]/[0, window_h].scoreis de betrouwbaarheidsscore van het begrenzingsvak (0.0-1.0).label_indexis de index van het klasselabel dat aan het begrenzingsvak is gekoppeld.keypointsis een optionelendarrayvan sleutelpunt(x, y, ...)-waarden die aan dit begrenzingsvak zijn gekoppeld.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Voert Soft-NMS uit over alle toegevoegde vakken en geeft een lijst van lijsten per klasse terug, geïndexeerd op
label_index. Elke binnenste lijst bevat tuples van((x, y, w, h), score)teruggezet naar de coördinaten van de originele afbeelding. Alskeypointswerd opgegeven bij het toevoegen, wordt de tuple uitgebreid met de teruggezettekeypoints-ndarray.Maak na het aanroepen van deze methode een nieuw
NMS-object aan om een nieuwe set begrenzingsvakken te verwerken.thresholdis de minimale score die een vak na Soft-NMS-onderdrukking moet behouden om bewaard te blijven.sigmabepaalt de Gaussische functie die wordt gebruikt om de scores van overlappende begrenzingsvakken te bestraffen. Een kleineresigmaresulteert in agressievere onderdrukking.sigma <= 0.0schakelt de Gaussische bestraffing uit (scores van overlappende vakken worden niet verlaagd).