ml.utils — ML Utils¶
Modulen ml.utils innehåller hjälpklasser och hjälpfunktioner för maskininlärning.
Funktioner¶
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Tröskelvärderar
scores(en kvantiseradndarrayav int8, uint8, int16 eller uint16) med ett kvantiseratthresholdoch returnerar enndarraymed alla index som passerar tröskelvärdet.scaletestas för att avgöra om de dekvantiserade värdena är positiva eller negativa. Närscale > 0returneras index därscores > threshold; annars returneras index därscores < threshold.find_maxersätter, om True, interntscoresmed enndarraymed max (eller min, beroende påscale) längsfind_max_axis.find_max_axisär den axel längs vilken max/min-reduktionen beräknas närfind_maxär True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Konverterar den angivna
ndarraygenom att dividera med skalan och addera modellens nollpunkt. Returnerarvalueoförändrat när modellens utdatatyp vidindexär float.modelär modellen vars kvantiseringsparametrar för utdata används.valueär denndarraysom ska kvantiseras.indexväljer vilken tensorutgång hosmodelsom ska kvantiseras mot.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Konverterar den angivna
ndarraygenom att subtrahera nollpunkten och sedan multiplicera med modellens skala. Returnerarvalueoförändrat när modellens utdatatyp vidindexär float.modelär modellen vars kvantiseringsparametrar för utdata används.valueär denndarraysom ska dekvantiseras.indexväljer vilken tensorutgång hosmodelsom 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 inteNone, en lista med konfidenspoäng per ruta. När den anges får varje renderad etikett poängen tillagd som suffix, formaterad som" %.2f".formatstyr hur rutans koordinater tolkas:"pascal_voc"– normaliserad(xmin, ymin, xmax, ymax)i intervallet0.0till1.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
ndarraymed nyckelpunktsvärden(x, y, ...)påimage.radiusär nyckelpunktscirkelns radie. Närradius == 0ritas nyckelpunkterna som enstaka pixlar.colorär nyckelpunktens(r, g, b)-färg.thicknessär cirkelkonturens tjocklek.fillfyller 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
ndarraymed nyckelpunktsvärden(x, y, ...)påimageoch 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 tilldraw_keypoints).kp_colorär nyckelpunktens(r, g, b)-färg.kp_thicknessär tjockleken på nyckelpunktscirkelns kontur.kp_fillfyller 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_wochwindow_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 objektetNormalization()). Används för att mappa om detekterade rutor tillbaka till den ursprungliga bildens koordinatsystem.roi[2]ochroi[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 medscoreutanfö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 valfrindarraymed 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. Omkeypointsangavs vid tillägget utökas tupeln med den ommappadekeypoints-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.sigmastyr den Gaussfunktion som används för att straffa poängen för överlappande begränsningsrutor. Ett mindresigmager mer aggressiv undertryckning.sigma <= 0.0inaktiverar Gauss-straffet (poängen för överlappande rutor minskas inte).