ml.utils — ML 工具集

ml.utils 模块包含用于机器学习的工具类和函数。

class NMS - 软非最大抑制 (Soft-Non-Maximum Suppression)

NMS 对象用于收集一组边界框及其关联的分数,然后筛选出重叠且分数较低的边界框。此外,它还将子窗口中检测到的边界框重新映射回原始图像坐标。

构造

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

创建一个 NMS 对象,指定给定的窗口大小和感兴趣区域(ROI)。窗口的宽度/高度与图像模型的输入张量相同。ROI 是由 Normalization() 对象返回的感兴趣区域,它对应于模型运行时图像的区域。这允许 NMS 对象将子窗口中检测到的边界框重新映射回原始图像坐标。

方法

add_bounding_boxes(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int) None

NMS 对象添加一个边界框,包含给定的坐标、分数和标签索引。

xminyminxmaxymax 是边界框的坐标,范围为 0.0 到 1.0,其中 (0.0, 0.0) 是图像的左上角,(1.0, 1.0) 是图像的右下角。

score 是边界框的置信度分数(0.0-1.0)。

label_index 是与边界框相关联的标签索引。

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

返回一个已被 NMS 对象过滤并重新映射到原始图像坐标的边界框列表。边界框元组为 (x, y, w, h, score, label_index)。调用此方法后,如果您希望处理一组新的边界框,应创建一个新的 NMS 对象。

边界框的分数必须高于 threshold 才会被保留。

sigma 控制用于通过软非最大抑制算法对重叠边界框应用分数惩罚的高斯函数。较高的 sigma 值将导致对重叠边界框进行更强烈的抑制。