ml.utils — ML Utils

Модуль ml.utils містить допоміжні класи та функції для машинного навчання.

Функції

ml.utils.logit(x: ndarray) ndarray

Повертає логіт усіх значень переданого ndarray.

ml.utils.sigmoid(x: ndarray) ndarray

Повертає сигмоїду всіх значень переданого ndarray.

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

Порогує scores (квантований ndarray типу int8, uint8, int16 або uint16) за допомогою квантованого threshold і повертає ndarray усіх індексів, що перевищують поріг.

scale перевіряється, щоб визначити, чи є деквантовані значення позитивними чи негативними. Коли scale > 0, повертаються індекси, де scores > threshold; інакше — індекси, де scores < threshold.

find_max якщо True, внутрішньо замінює scores на ndarray максимуму (або мінімуму, залежно від scale) вздовж find_max_axis.

find_max_axis — це вісь, вздовж якої обчислюється редукція max/min, коли find_max має значення True.

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

Перетворює переданий ndarray, ділячи на масштаб і додаючи нульову точку моделі (МН). Повертає value незмінним, коли тип даних виходу моделі (МН) за index є float.

model — модель (МН), чиї параметри квантування виходу використовуються.

valuendarray для квантування.

index визначає, відносно якого тензорного виходу model виконується квантування.

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

Перетворює переданий ndarray, віднімаючи нульову точку, а потім множачи на масштаб моделі (МН). Повертає value незмінним, коли тип даних виходу моделі (МН) за index є float.

model — модель (МН), чиї параметри квантування виходу використовуються.

valuendarray для деквантування.

index визначає, відносно якого тензорного виходу model виконується деквантування.

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

Малює обмежувальні прямокутники (або маркери центральної точки) з текстовими мітками на image.

boxes — список кортежів (x, y, w, h).

labels — список рядків міток, по одному на кожний прямокутник.

colors — список кортежів (r, g, b), по одному на кожний прямокутник.

scores якщо не None, список показників довіри для кожного прямокутника. Якщо вказано, до кожної відображуваної мітки додається суфікс у форматі " %.2f".

format визначає спосіб інтерпретації координат прямокутника:

  • "pascal_voc" – нормалізовані (xmin, ymin, xmax, ymax) в діапазоні від 0.0 до 1.0.

  • "point" – абсолютні піксельні (x, y, w, h); у центрі прямокутника малюється заповнений круговий маркер замість прямокутника (корисно для детекторів центральних точок).

  • будь-яке інше значення – абсолютні піксельні (x, y, w, h); малюється як прямокутник.

font_width — ширина в пікселях кожного символу мітки.

font_height — висота в пікселях фону мітки.

text_color — колір (r, g, b), що використовується для тексту мітки.

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

Малює ndarray значень ключових точок (x, y, ...) на image.

radius — радіус кола ключової точки. Коли radius == 0, ключові точки малюються як окремі пікселі.

color — колір ключової точки (r, g, b).

thickness — товщина контуру кола.

fill якщо 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

Малює ndarray значень ключових точок (x, y, ...) на image, а потім з’єднує їх відрізками ліній.

lines — список кортежів (kp0_idx, kp1_idx), що визначають, які пари ключових точок потрібно з’єднати.

kp_radius — радіус кола ключової точки (передається до draw_keypoints).

kp_color — колір ключової точки (r, g, b).

kp_thickness — товщина контуру кола ключової точки.

kp_fill якщо True, заповнює кола ключових точок.

line_color — колір лінії (r, g, b).

line_thickness — товщина лінії.

class NMS – Soft-Non-Maximum Suppression

Об’єкт NMS збирає список обмежувальних прямокутників з відповідними показниками, фільтрує прямокутники, що перекриваються, з нижчими показниками за допомогою Soft-NMS, і перетворює координати прямокутників, виявлених у підвікні, назад до координат оригінального зображення.

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

Створює об’єкт NMS.

window_w та window_h — ширина та висота вхідного тензора моделі (МН) / вікна.

roi — область інтересу (ROI) (x, y, w, h) оригінального зображення, на якому запускалася модель (МН) (зазвичай повертається об’єктом Normalization()). Використовується для перетворення виявлених прямокутників назад до координатного простору оригінального зображення. roi[2] та roi[3] мають бути >= 1.

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

Додає обмежувальний прямокутник до об’єкта NMS. Прямокутники, у яких score виходить за межі [0.0, 1.0], або з нульовою чи від’ємною шириною або висотою після обрізання, відкидаються.

xmin, ymin, xmax, ymax — координати обмежувального прямокутника в піксельному просторі вікна, обрізані до [0, window_w] / [0, window_h].

score — показник довіри обмежувального прямокутника (0.0-1.0).

label_index — індекс мітки класу, пов’язаної з обмежувальним прямокутником.

keypoints — необов’язковий ndarray значень ключових точок (x, y, ...) , пов’язаних з цим обмежувальним прямокутником.

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

Виконує Soft-NMS над усіма доданими прямокутниками та повертає список списків за класами, індексованих за label_index. Кожен внутрішній список містить кортежі ((x, y, w, h), score), відображені назад у координати оригінального зображення. Якщо при додаванні були надані keypoints, кортеж доповнюється перетвореним ndarray keypoints.

Після виклику цього методу створіть новий об’єкт NMS для обробки нового набору обмежувальних прямокутників.

threshold — мінімальний показник, який прямокутник повинен зберегти після пригнічення Soft-NMS, щоб бути збереженим.

sigma керує функцією Гауса, яка використовується для штрафування показників прямокутників, що перекриваються. Менше значення sigma призводить до більш агресивного пригнічення. sigma <= 0.0 вимикає штраф Гауса (показники прямокутників, що перекриваються, не зменшуються).