跳转至

切片推理工作原理

问题:大图像中的小目标

标准目标检测器会在推理前将输入图像缩放到固定分辨率,例如 640x640。当源图像的 尺寸大得多时,例如 4K 无人机照片或卫星图像块,小目标会被缩小到只有几个像素, 从而难以检测。

sliced inference

解决方案:切片、检测、合并

SAHI 通过三个步骤解决这一问题:

1. 将图像切分为相互重叠的图块

输入图像会被划分为由较小图块组成的网格。每个图块的尺寸与检测器预期的输入尺寸 匹配,例如 512x512,因此图块中的目标会保留足够的像素细节,以便可靠检测。

相邻图块之间的重叠区域可以确保位于图块边界上的目标,至少会在一个图块中完整 显示。

+--------+--------+--------+
|        | 重叠区 |        |
| 图块 1 |<------>| 图块 2 |
|        |        |        |
+--------+--------+--------+
| 重叠区 |        | 重叠区 |
| 图块 3 | 图块 4 | 图块 5 |
|        |        |        |
+--------+--------+--------+

关键参数:

参数 控制内容
slice_height / slice_width 每个图块的像素尺寸
overlap_height_ratio / overlap_width_ratio 相邻图块之间的重叠比例(0.0 -- 1.0)
auto_slice_resolution 由 SAHI 根据图像分辨率选择图块尺寸

2. 在每个图块上运行检测器

每个图块都会独立传入目标检测模型。由于图块尺寸较小,原本在完整图像中很小的目标 会占据更大比例,因此能够可靠检测。

SAHI 还可以选择在完整图像上以原始分辨率运行检测器 (perform_standard_pred=True,默认启用)。这样可以检测可能被多个图块切开的 大型目标。

3. 将预测结果映射并合并回完整图像

图块级预测结果会映射回完整图像的坐标系。由于图块之间存在重叠,同一个目标通常会 在多个图块中被检测到。SAHI 会执行后处理步骤,合并或抑制这些重复结果:

  • GreedyNMM(默认)-- 通过平均坐标和分数,以贪心方式合并重叠边界框。 适用于大多数场景。
  • NMM -- 非最大合并。与 GreedyNMM 类似,但会同时处理所有重叠结果。
  • NMS -- 非最大抑制。保留分数最高的边界框并丢弃重叠框。适用于需要严格保留 独立检测结果的场景。
  • LSNMS -- 位置敏感非最大抑制。计算时还会考虑空间位置。

合并步骤可以使用不同的重叠指标:

  • IOS(Intersection over Smaller)-- 交集与较小面积之比。合并更积极,适用于 目标尺寸差异较大的场景。
  • IOU(Intersection over Union)-- 交并比。标准指标,合并相对保守。

何时使用切片推理

切片推理在以下场景中最有帮助:

  • 图像尺寸显著大于模型输入分辨率
  • 需要检测小目标,例如卫星图像中的车辆、广角监控画面中的人员、高分辨率 检查照片中的缺陷
  • 标准检测遗漏目标或置信度较低

以下场景可能不需要切片推理:

  • 图像尺寸已经接近模型输入尺寸
  • 只关心较大、较明显的目标
  • 推理速度比召回率更重要

调优建议

图块尺寸:与检测器的训练分辨率匹配。对于使用 640x640 图像训练的 YOLO 模型, 512--640 的切片尺寸通常效果较好。

重叠比例:建议从 0.2(20%)开始。如果图块边界附近出现漏检,可以提高到 0.3--0.4。重叠比例越高,图块越多,推理速度也越慢。

标准预测:除非可以确定所有目标都很小,否则建议保持 perform_standard_pred=True。完整图像推理可以检测可能被图块切开的大型目标。

后处理阈值postprocess_match_threshold 控制合并重复结果的积极程度。值越小, 合并越多;值越大,保留的独立边界框越多。默认值 0.5 适用于大多数场景。

下一步