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 gekwantiseerde ndarray van int8, uint8, int16 of uint16) met een gekwantiseerde threshold en geeft een ndarray terug van alle indices die de drempelwaarde passeren.

scale wordt getest om te bepalen of de gedekwantiseerde waarden positief of negatief zijn. Wanneer scale > 0 worden de indices teruggegeven waar scores > threshold; anders worden de indices teruggegeven waar scores < threshold.

find_max vervangt, indien True, scores intern door een ndarray van het maximum (of minimum, afhankelijk van scale) langs find_max_axis.

find_max_axis is de as waarlangs de max/min-reductie wordt berekend wanneer find_max True is.

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

Converteert de doorgegeven ndarray door te delen door de schaal en het nulpunt van het model op te tellen. Geeft value ongewijzigd terug wanneer het dtype van de modeluitvoer bij index float is.

model is het model waarvan de kwantisatieparameters van de uitvoer worden gebruikt.

value is de ndarray die gekwantiseerd moet worden.

index selecteert tegen welke tensoruitvoer van het model gekwantiseerd moet worden.

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

Converteert de doorgegeven ndarray door het nulpunt af te trekken en vervolgens te vermenigvuldigen met de schaal van het model. Geeft value ongewijzigd terug wanneer het dtype van de modeluitvoer bij index float is.

model is het model waarvan de kwantisatieparameters van de uitvoer worden gebruikt.

value is de ndarray die gedekwantiseerd moet worden.

index selecteert tegen welke tensoruitvoer van het model gedekwantiseerd 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.

boxes is een lijst van (x, y, w, h)-tuples.

labels is een lijst van labelstrings, één per vak.

colors is een lijst van (r, g, b)-tuples, één per vak.

scores is, indien niet None, een lijst met betrouwbaarheidsscores per vak. Wanneer deze wordt opgegeven, krijgt elk weergegeven label de score als achtervoegsel, opgemaakt als " %.2f".

format bepaalt hoe de vakcoördinaten worden geïnterpreteerd:

  • "pascal_voc" – genormaliseerde (xmin, ymin, xmax, ymax) in het bereik 0.0 tot 1.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_width is de breedte in pixels van elk teken in het label.

font_height is de hoogte in pixels van de labelachtergrond.

text_color is 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 ndarray van sleutelpunt (x, y, ...)-waarden op image.

radius is de straal van de sleutelpuntcirkel. Wanneer radius == 0 worden de sleutelpunten als losse pixels getekend.

color is de (r, g, b)-kleur van het sleutelpunt.

thickness is de dikte van de cirkelomtrek.

fill vult, 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 ndarray van sleutelpunt (x, y, ...)-waarden op image en verbindt ze vervolgens met lijnsegmenten.

lines is een lijst van (kp0_idx, kp1_idx)-tuples die aangeven welke sleutelpuntparen verbonden moeten worden.

kp_radius is de straal van de sleutelpuntcirkel (doorgegeven aan draw_keypoints).

kp_color is de (r, g, b)-kleur van het sleutelpunt.

kp_thickness is de dikte van de omtrek van de sleutelpuntcirkel.

kp_fill vult, indien True, de sleutelpuntcirkels.

line_color is de (r, g, b)-kleur van de lijn.

line_thickness is 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_w en window_h zijn de breedte en hoogte van de invoertensor / het venster van het model.

roi is het (x, y, w, h)-aandachtsgebied (ROI) van de originele afbeelding waarop het model is uitgevoerd (doorgaans teruggegeven door het Normalization()-object). Wordt gebruikt om gedetecteerde vakken terug te zetten naar de coördinatenruimte van de originele afbeelding. roi[2] en roi[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 een score buiten [0.0, 1.0] of met een nulle/negatieve breedte of hoogte na clipping worden verwijderd.

xmin, ymin, xmax, ymax zijn de coördinaten van het begrenzingsvak in vensterpixelruimte, geclipt tot [0, window_w] / [0, window_h].

score is de betrouwbaarheidsscore van het begrenzingsvak (0.0-1.0).

label_index is de index van het klasselabel dat aan het begrenzingsvak is gekoppeld.

keypoints is een optionele ndarray van 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. Als keypoints werd opgegeven bij het toevoegen, wordt de tuple uitgebreid met de teruggezette keypoints-ndarray.

Maak na het aanroepen van deze methode een nieuw NMS-object aan om een nieuwe set begrenzingsvakken te verwerken.

threshold is de minimale score die een vak na Soft-NMS-onderdrukking moet behouden om bewaard te blijven.

sigma bepaalt de Gaussische functie die wordt gebruikt om de scores van overlappende begrenzingsvakken te bestraffen. Een kleinere sigma resulteert in agressievere onderdrukking. sigma <= 0.0 schakelt de Gaussische bestraffing uit (scores van overlappende vakken worden niet verlaagd).