ml.utils — ML Utils

Modulen ml.utils innehåller hjälpklasser och hjälpfunktioner för maskininlärning.

Funktioner

ml.utils.logit(x: ndarray) ndarray

Returnerar logit för alla värden i den angivna ndarray.

ml.utils.sigmoid(x: ndarray) ndarray

Returnerar sigmoid för alla värden i den angivna ndarray.

ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray

Tröskelvärderar scores (en kvantiserad ndarray av int8, uint8, int16 eller uint16) med ett kvantiserat threshold och returnerar en ndarray med alla index som passerar tröskelvärdet.

scale testas för att avgöra om de dekvantiserade värdena är positiva eller negativa. När scale > 0 returneras index där scores > threshold; annars returneras index där scores < threshold.

find_max ersätter, om True, internt scores med en ndarray med max (eller min, beroende på scale) längs find_max_axis.

find_max_axis är den axel längs vilken max/min-reduktionen beräknas när find_max är True.

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

Konverterar den angivna ndarray genom att dividera med skalan och addera modellens nollpunkt. Returnerar value oförändrat när modellens utdatatyp vid index är float.

model är modellen vars kvantiseringsparametrar för utdata används.

value är den ndarray som ska kvantiseras.

index väljer vilken tensorutgång hos model som ska kvantiseras mot.

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

Konverterar den angivna ndarray genom att subtrahera nollpunkten och sedan multiplicera med modellens skala. Returnerar value oförändrat när modellens utdatatyp vid index är float.

model är modellen vars kvantiseringsparametrar för utdata används.

value är den ndarray som ska dekvantiseras.

index väljer vilken tensorutgång hos model som ska dekvantiseras mot.

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

Ritar begränsningsrutor (eller mittpunktsmarkörer) med textetiketter på image.

boxes är en lista med (x, y, w, h)-tupler.

labels är en lista med etikettsträngar, en per ruta.

colors är en lista med (r, g, b)-tupler, en per ruta.

scores är, om inte None, en lista med konfidenspoäng per ruta. När den anges får varje renderad etikett poängen tillagd som suffix, formaterad som " %.2f".

format styr hur rutans koordinater tolkas:

  • "pascal_voc" – normaliserad (xmin, ymin, xmax, ymax) i intervallet 0.0 till 1.0.

  • "point" – absoluta pixlar (x, y, w, h); en ifylld cirkelmarkör ritas i rutans mittpunkt i stället för en rektangel (användbart för mittpunktsdetektorer).

  • vilket annat värde som helst – absoluta pixlar (x, y, w, h); ritas som en rektangel.

font_width är bredden i pixlar för varje tecken i etiketten.

font_height är höjden i pixlar för etikettens bakgrund.

text_color är (r, g, b)-färgen som används för etikettexten.

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

Ritar en ndarray med nyckelpunktsvärden (x, y, ...)image.

radius är nyckelpunktscirkelns radie. När radius == 0 ritas nyckelpunkterna som enstaka pixlar.

color är nyckelpunktens (r, g, b)-färg.

thickness är cirkelkonturens tjocklek.

fill fyller nyckelpunktscirklarna om True.

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

Ritar en ndarray med nyckelpunktsvärden (x, y, ...)image och förbinder dem sedan med linjesegment.

lines är en lista med (kp0_idx, kp1_idx)-tupler som anger vilka nyckelpunktspar som ska förbindas.

kp_radius är nyckelpunktscirkelns radie (skickas vidare till draw_keypoints).

kp_color är nyckelpunktens (r, g, b)-färg.

kp_thickness är tjockleken på nyckelpunktscirkelns kontur.

kp_fill fyller nyckelpunktscirklarna om True.

line_color är linjens (r, g, b)-färg.

line_thickness är linjens tjocklek.

class NMS – Soft-Non-Maximum Suppression

Objektet NMS samlar in en lista med begränsningsrutor med tillhörande poäng, filtrerar bort överlappande rutor med lägre poäng via Soft-NMS och mappar om rutor som detekterats i ett delfönster tillbaka till den ursprungliga bildens koordinater.

class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])

Skapar ett NMS-objekt.

window_w och window_h är bredden och höjden på modellens indatatensor/fönster.

roi är (x, y, w, h)-intresseområdet i den ursprungliga bilden som modellen kördes på (returneras vanligtvis av objektet Normalization()). Används för att mappa om detekterade rutor tillbaka till den ursprungliga bildens koordinatsystem. roi[2] och roi[3] måste vara >= 1.

add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None

Lägger till en begränsningsruta i NMS-objektet. Rutor med score utanför [0.0, 1.0] eller med noll/negativ bredd eller höjd efter beskärning förkastas.

xmin, ymin, xmax, ymax är begränsningsrutans koordinater i fönstrets pixelrymd, beskurna till [0, window_w] / [0, window_h].

score är begränsningsrutans konfidenspoäng (0.0-1.0).

label_index är indexet för klassetiketten som hör till begränsningsrutan.

keypoints är en valfri ndarray med nyckelpunktsvärden (x, y, ...) som hör till denna begränsningsruta.

get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]

Utför Soft-NMS över alla tillagda rutor och returnerar en lista med listor per klass, indexerade efter label_index. Varje inre lista innehåller tupler av ((x, y, w, h), score) som mappats tillbaka till den ursprungliga bildens koordinater. Om keypoints angavs vid tillägget utökas tupeln med den ommappade keypoints-ndarray.

Skapa ett nytt NMS-objekt efter att ha anropat denna metod för att bearbeta en ny uppsättning begränsningsrutor.

threshold är den lägsta poäng en ruta måste behålla efter Soft-NMS-undertryckning för att behållas.

sigma styr den Gaussfunktion som används för att straffa poängen för överlappande begränsningsrutor. Ett mindre sigma ger mer aggressiv undertryckning. sigma <= 0.0 inaktiverar Gauss-straffet (poängen för överlappande rutor minskas inte).