你提供的这段代码是 SAHI (Slicing Aided Hyper Inference) 库中核心函数 get_sliced_prediction 的参数说明。这个函数专门用于提升大图像或小目标的检测效果。下面我为你详细解释这些参数。
参数分类 参数名称 类型/默认值 核心作用说明
核心输入 image str / np.ndarray 待检测图像的路径或矩阵数据。
detection_model model.DetectionModel 承载目标检测模型(如YOLOv8)的对象。
切片控制 slice_height / slice_width int / None 定义切片窗口的高和宽。若为None且auto_slice_resolution=True,则自动计算。
overlap_height_ratio / overlap_width_ratio float / 0.2 切片在高度和宽度上的重叠比例,防止目标被切碎,对小物体检测至关重要。
auto_slice_resolution bool / True 自动根据图像分辨率确定切片尺寸。
后处理(核心) postprocess_type str / ‘GREEDYNMM’ 选择后处理算法:‘NMS’(非极大抑制)、‘NMM’(非极大合并)、‘GREEDYNMM’(贪婪非极大合并,默认)。
postprocess_match_metric str / ‘IOS’ 重叠度量标准:‘IOU’(交并比)或’IOS’(交小比),后者对小目标更敏感。
postprocess_match_threshold float / 0.5 重叠阈值。框体重叠度高于此值则触发后处理(合并或抑制)。
postprocess_class_agnostic bool / False 后处理是否忽略类别,True时只根据位置重叠判断。
功能增强 perform_standard_pred bool / True 是否在切片预测基础上,额外对原图做一次标准预测,以兼顾大目标检测。
merge_buffer_length int / None 缓存切片数量以控制内存消耗,数值越接近切片总数,结果越精确。
输出与调试 verbose int / 1 信息打印级别:0(静默)、1(打印切片数,默认)、2(打印切片数及耗时)。
slice_export_prefix / slice_dir str / None 设置切片图像的导出路径和前缀,用于调试或保存中间结果。
exclude_classes_by_name / by_id List / None 按类别名称或ID排除特定类别的检测结果。
💡 核心参数深度解析
-
切片尺寸与重叠 (slice_height/width, overlap_ratio)
◦ 尺寸选择:切片并非越小越好。过小的切片会失去上下文信息,过大的切片则可能无法有效放大目标。通常需要根据图像中目标的最小尺寸和密度来实验确定。当你不确定时,可以依赖 auto_slice_resolution=True 功能。◦ 重叠必要性:重叠是为了确保没有一个目标(尤其是位于切片边缘的目标)因为被“切碎”而导致任何一个小切片中都缺乏足够特征供模型识别。重叠区域为边缘目标提供了“第二次机会”。
-
后处理类型 (postprocess_type)
这是消除因切片而产生的重复框的关键步骤。
◦ NMS:“胜者为王”。直接保留置信度最高的框,删除与其高度重叠的其他框。优点是速度快,缺点是可能误删真实目标。◦ NMM:“合作共赢”。将所有高度重叠的框视为一个群体,通过加权平均等方式合并成一个新的、更精确的框。优点是能综合利用信息,对拥挤目标友好,缺点是计算更复杂。
◦ GREEDYNMM (默认值):“渐进合并”。可以看作是NMS和NMM的折中方案。它从最高置信度的框开始,贪婪地、逐对地将其与重叠框合并。这是一个在精度和效率之间取得较好平衡的选择,因此在SAHI中被设为默认。
-
标准预测开关 (perform_standard_pred)
这个参数非常实用。当设置为 True 时,SAHI 会在完成所有切片预测后,额外对原始完整图像进行一次标准检测。这样做的好处是:
◦ 兼顾大目标:对于图像中的大型目标,在完整图上检测通常比在多个切片上检测更准确。◦ 结果融合:最终的结果是切片预测和全局标准预测的合并,从而实现对大小目标的同时优化。
⚙️ 参数配置策略
• 小目标检测:建议使用较小的切片尺寸(如256x256或320x320)和适当的重叠率(如0.2-0.3)。后处理可选用 GREEDYNMM 或 NMM,匹配度量可尝试对小目标更敏感的 IOS。
• 大尺寸图像中的大小目标混合:保持 perform_standard_pred=True 是明智的选择。可以设置较大的切片尺寸(如640x640)来处理中等目标,并依靠全局预测来捕获大目标。
• 平衡速度与精度:可以适当增大 postprocess_match_threshold(如0.6-0.7)来更激进地合并/抑制重叠框,减少输出框数量以提升速度。如果内存紧张,可以设置 merge_buffer_length。
1255

被折叠的 条评论
为什么被折叠?



