ml.utils — ML Utils¶
Модуль ml.utils містить допоміжні класи та функції для машинного навчання.
Функції¶
- 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— модель (МН), чиї параметри квантування виходу використовуються.value—ndarrayдля квантування.indexвизначає, відносно якого тензорного виходуmodelвиконується квантування.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Перетворює переданий
ndarray, віднімаючи нульову точку, а потім множачи на масштаб моделі (МН). Повертаєvalueнезмінним, коли тип даних виходу моделі (МН) заindexє float.model— модель (МН), чиї параметри квантування виходу використовуються.value—ndarrayдля деквантування.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, кортеж доповнюється перетворенимndarraykeypoints.Після виклику цього методу створіть новий об’єкт
NMSдля обробки нового набору обмежувальних прямокутників.threshold— мінімальний показник, який прямокутник повинен зберегти після пригнічення Soft-NMS, щоб бути збереженим.sigmaкерує функцією Гауса, яка використовується для штрафування показників прямокутників, що перекриваються. Менше значенняsigmaпризводить до більш агресивного пригнічення.sigma <= 0.0вимикає штраф Гауса (показники прямокутників, що перекриваються, не зменшуються).