sahi+yolov8实现图像切片推理

前言
本文记录项目中涉及到了无人机正射图像的推理(通常8000像素*8000像素以上),由于模型推理尺寸是640*640的,如果直接整图送入模型推理,推理效果极差,可以考虑采用多个切片进行分别进行推理,最后合并推理结果的方式。如何增强小目标检测?SAHI与Yolov8完美结合

一、SAHI介绍

SAHI(Slicing Aided Hyper Inference,切片辅助超推理)是一种专为优化小目标检测设计的通用框架,其核心思想是通过图像切片和分层推理提升检测效果,尤其适用于处理大尺寸图像中的小目标。

切片推理
SAHI通过滑动窗口将原始图像分割为多个重叠的子图(切片),并对每个子图和整张原图分别进行推理。切片后的小目标在子图中占据更大比例,从而增强模型对细节特征的捕捉能力。所有子图的检测结果会与原图的检测结果合并,最终通过非极大值抑制(NMS)过滤重复框,得到全局最优结果。

兼容性设计
SAHI无需修改现有检测器的结构,支持与YOLOv8、YOLOv5、MMDetection等主流框架无缝集成。用户只需加载预训练模型并调用SAHI的接口即可实现推理优化。

二、使用步骤
图像切片
参数配置:需定义切片尺寸(slice_height、slice_width)和重叠率(overlap_height_ratio、overlap_width_ratio)。例如,设置切片为640×640像素,重叠率0.2(即相邻切片重叠20%的区域)。
滑动窗口逻辑:切片时从左上角开始,按行列顺序移动窗口。若图像边缘无法完整切片,则反向调整窗口位置以确保覆盖全图。
推理与结果融合
对每个切片和原图分别进行目标检测,生成候选框。
将所有候选框映射回原图坐标系,合并后通过NMS(如IoU阈值0.45)过滤冗余框。
代码示例
此处选用支持分割的项目进行调试,项目代码地址:https://github.com/sweetlhare/sahi-yolov8-instance-segmentation

新建test.py

from sahi import AutoDetectionModel
from sahi.predict import get_sliced_prediction

# 加载模型
detection_model = AutoDetectionModel.from_pretrained(
    model_type='yolov8',
    model_path='yolov8-seg.pt',
    confidence_threshold=0.45,
    device='cuda:0'
)

# 切片推理
result = get_sliced_prediction(
    'small-vehicles.jpeg',
    detection_model,
    slice_height=640,
    slice_width=640,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2
)

# 保存可视化结果
result.export_visuals(export_dir='output/')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
结果对比

此效果为整图推理的效果;

此图为sahi方式后的推理效果;

可以看出对小目标的检测提升很大。

总结
SAHI可以提高大图中小目标的检测精度,SAHI 的主要优势在于它与模型无关,可以搭配各种模型。但是检测精度的提升是基于切片的多次推理实现的,切片数量与计算时间成正比,需权衡检测精度与实时性要求。

参考文档:
https://github.com/obss/sahi/tree/main
https://github.com/sweetlhare/sahi-yolov8-instance-segmentation
https://blog.youkuaiyun.com/demm868/article/details/143160318

如果阅读本文对你有用,欢迎一键三连呀!!!
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.youkuaiyun.com/JulyLi2019/article/details/146062570

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值