ml.utils — Narzędzia ML¶
Moduł ml.utils zawiera klasy i funkcje pomocnicze dla uczenia maszynowego.
Funkcje¶
- ml.utils.sigmoid(x: ndarray) ndarray¶
Zwraca sigmoidę wszystkich wartości w przekazanej tablicy
ndarray.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Progowanie
scores(skwantyzowana tablicandarraytypu int8, uint8, int16 lub uint16) względem skwantyzowanego proguthresholdi zwraca tablicęndarraywszystkich indeksów przekraczających próg.Wartość
scalejest sprawdzana, aby ustalić, czy zdekwantyzowane wartości są dodatnie czy ujemne. Gdyscale > 0, zwracane są indeksy, dla którychscores > threshold; w przeciwnym razie zwracane są indeksy, dla którychscores < threshold.find_maxjeśli ma wartość True, wewnętrznie zastępujescorestablicąndarrayzawierającą maksimum (lub minimum, w zależności odscale) wzdłużfind_max_axis.find_max_axisto oś, wzdłuż której obliczana jest redukcja max/min, gdyfind_maxma wartość True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Konwertuje przekazaną tablicę
ndarraypoprzez podzielenie przez skalę i dodanie punktu zerowego modelu. Zwracavaluebez zmian, gdy typ wyjściowy modelu o indeksieindexjest zmiennoprzecinkowy.modelto model, którego parametry kwantyzacji wyjścia są wykorzystywane.valueto tablicandarraydo skwantyzowania.indexwybiera, względem którego wyjścia tensorowegomodelma być przeprowadzona kwantyzacja.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Konwertuje przekazaną tablicę
ndarraypoprzez odjęcie punktu zerowego, a następnie pomnożenie przez skalę modelu. Zwracavaluebez zmian, gdy typ wyjściowy modelu o indeksieindexjest zmiennoprzecinkowy.modelto model, którego parametry kwantyzacji wyjścia są wykorzystywane.valueto tablicandarraydo zdekwantyzowania.indexwybiera, względem którego wyjścia tensorowegomodelma być przeprowadzona dekwantyzacja.
- 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¶
Rysuje ramki ograniczające (lub znaczniki punktu środkowego) wraz z etykietami tekstowymi na obrazie
image.boxesto lista krotek(x, y, w, h).labelsto lista ciągów etykiet, po jednym na ramkę.colorsto lista krotek(r, g, b), po jednej na ramkę.scoresjeśli nie ma wartościNone, to lista wyników pewności dla poszczególnych ramek. Gdy zostanie podana, każda renderowana etykieta jest uzupełniana o wynik sformatowany jako" %.2f".formatkontroluje sposób interpretacji współrzędnych ramki:"pascal_voc"– znormalizowane(xmin, ymin, xmax, ymax)w zakresie od0.0do1.0."point"– bezwzględne piksele(x, y, w, h); w środku ramki rysowany jest wypełniony znacznik kołowy zamiast prostokąta (przydatne dla detektorów punktów środkowych).dowolna inna wartość – bezwzględne piksele
(x, y, w, h); rysowane jako prostokąt.
font_widthto szerokość każdego znaku etykiety w pikselach.font_heightto wysokość tła etykiety w pikselach.text_colorto kolor(r, g, b)używany do tekstu etykiety.
- 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¶
Rysuje tablicę
ndarraywartości punktów kluczowych(x, y, ...)na obrazieimage.radiusto promień koła punktu kluczowego. Gdyradius == 0, punkty kluczowe są rysowane jako pojedyncze piksele.colorto kolor(r, g, b)punktu kluczowego.thicknessto grubość obrysu koła.filljeśli ma wartość True, wypełnia koła punktów kluczowych.
- 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¶
Rysuje tablicę
ndarraywartości punktów kluczowych(x, y, ...)na obrazieimage, a następnie łączy je odcinkami linii.linesto lista krotek(kp0_idx, kp1_idx)określających, które pary punktów kluczowych należy połączyć.kp_radiusto promień koła punktu kluczowego (przekazywany dodraw_keypoints).kp_colorto kolor(r, g, b)punktu kluczowego.kp_thicknessto grubość obrysu koła punktu kluczowego.kp_filljeśli ma wartość True, wypełnia koła punktów kluczowych.line_colorto kolor(r, g, b)linii.line_thicknessto grubość linii.
klasa NMS – Soft-Non-Maximum Suppression¶
Obiekt NMS gromadzi listę ramek ograniczających z powiązanymi wynikami, filtruje nakładające się ramki o niższych wynikach za pomocą Soft-NMS oraz przemapowuje ramki wykryte w podoknie z powrotem na współrzędne oryginalnego obrazu.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Tworzy obiekt
NMS.window_wiwindow_hto szerokość i wysokość tensora wejściowego / okna modelu.roito obszar zainteresowania(x, y, w, h)oryginalnego obrazu, na którym uruchomiono model (zwykle zwracany przez obiektNormalization()). Używany do przemapowania wykrytych ramek z powrotem na przestrzeń współrzędnych oryginalnego obrazu.roi[2]iroi[3]muszą być >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Dodaje ramkę ograniczającą do obiektu
NMS. Ramki z wynikiemscorepoza zakresem[0.0, 1.0]lub z zerową/ujemną szerokością bądź wysokością po przycięciu są odrzucane.xmin,ymin,xmax,ymaxto współrzędne ramki ograniczającej w przestrzeni pikseli okna, przycięte do[0, window_w]/[0, window_h].scoreto wynik pewności ramki ograniczającej (0.0-1.0).label_indexto indeks etykiety klasy powiązanej z ramką ograniczającą.keypointsto opcjonalna tablicandarraywartości punktów kluczowych(x, y, ...)powiązanych z tą ramką ograniczającą.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Wykonuje Soft-NMS na wszystkich dodanych ramkach i zwraca listę list dla poszczególnych klas, indeksowaną przez
label_index. Każda wewnętrzna lista zawiera krotki((x, y, w, h), score)przemapowane z powrotem na współrzędne oryginalnego obrazu. Jeśli przy dodawaniu podanokeypoints, krotka jest rozszerzana o przemapowaną tablicęndarraykeypoints.Po wywołaniu tej metody utwórz nowy obiekt
NMS, aby przetworzyć nowy zestaw ramek ograniczających.thresholdto minimalny wynik, jaki ramka musi zachować po tłumieniu Soft-NMS, aby została zachowana.sigmakontroluje funkcję Gaussa używaną do karania wyników nakładających się ramek ograniczających. Mniejsza wartośćsigmaskutkuje bardziej agresywnym tłumieniem.sigma <= 0.0wyłącza karę Gaussa (wyniki nakładających się ramek nie są zmniejszane).