切片推理工作原理¶
问题:大图像中的小目标¶
标准目标检测器会在推理前将输入图像缩放到固定分辨率,例如 640x640。当源图像的 尺寸大得多时,例如 4K 无人机照片或卫星图像块,小目标会被缩小到只有几个像素, 从而难以检测。
解决方案:切片、检测、合并¶
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 适用于大多数场景。