【目标检测】SAHI: 切片辅助推理和微调小目标检测

这篇具有很好参考价值的文章主要介绍了【目标检测】SAHI: 切片辅助推理和微调小目标检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在我之前的文章中,写过一种对于微小目标的检测策略,即将大图裁成多个小图,每个小图分别进行检测,最后将所有的检测结果进行叠加,统一使用NMS进行滤除。但是经过实验,该方法的效果并不是非常明显。

SAHI也采用了类似切片检测的思路,不同的是其采用了更多策略,并将其封装成了一个检测框架,支持 Detectron2,MMDetection和YOLOv5。

论文标题:Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection
论文地址:https://arxiv.org/abs/2202.06934
仓库地址:https://github.com/obss/sahi

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习

效果概览

首先看论文里给出的这张图片,左图是原始预测效果,中间是经过SAHI预测效果,右图是经过SAHI再微调的检测效果。
密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
可以看到,对小目标检测增强的效果还是比较明显的。

再来看数据

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习

如表所示,经过SAHI之后,整体AP均有所提升。不过同样需要注意的是对于大目标(AP50l),经过SAHI之后,AP反而有所下降。个人猜测可能是因为切片太小导致大目标被分割。
注:这里小目标的定义是宽度小于图像宽度的1%。

原理简析

论文很短,原理也并不复杂,整体原理可以由这幅图来囊括。

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
上图表示切片辅助微调的过程,在原始图片提取出一些补丁块,然后将里面的部分进行放大(如图中红框所示),相当于一种数据增强。

下图表示切片辅助推断的过程,将图片裁成一块块,分别进行预测,然后用NMS统一进行过滤。

隐藏标签

由于小目标密集时,标签会发生重叠和遮挡。因此最佳方式是不显示标签,仅显示检测框。
Sahi没有像YOLOv5-6.x版本那样,预留了两个接口hide-labelhide-conf隐藏标签和置信度。看到有人在官方仓库提了这个issue,但作者直接回复不支持。。

其实改起来也很简单,无非是需要修改库源码。
首先如果是采用setup.py安装的方式,会发现安装的库文件是一个不可修改的egg文件,首先需要将其解压,提取出其中的sahi文件夹,放置在相应site-packages中。

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
通过阅读源码可以发现,绘图函数放在了utils/cv.py文件中。

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
因此,只需要将cv.py中的add bunding box text下面的内容注释掉即可。

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习

测试效果

下面就来实际测试一下,测试代码根据官方的示例进行修改,加载本地模型。

from sahi.model import Yolov5DetectionModel
from sahi.predict import get_sliced_prediction

model_path = 'dota_best.pt'

# 使用的YOLOv5检测模型,使用gpu加速,置信度0.25
detection_model = Yolov5DetectionModel(
    model_path=model_path,
    confidence_threshold=0.25,
    device="cuda:0"
)

# slice_height/slice_width 切片高宽
# overlap_height_ratio/overlap_width_ratio 切片间重合度
result = get_sliced_prediction(
    "data/dota_img/P2826.png",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2
)

# 保存检测图片
result.export_visuals(export_dir="result/")

测试图片我选择了Dota-test数据集中的一张,模型选择训练好的YOLOv5l6.pt.

直接预测结果:
密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
经过SAHI的效果:
密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
乍一看区别并不大,原始的模型就已经取得了可观的结果。

那么再放大来看看细节对比,这里选取右上角的一块局部区域,如下图所示,左侧为直接检测结果,右侧为经SAHI之后的结果。

密集小目标切片检测,目标检测,目标检测,计算机视觉,深度学习
可以看到,原始检测结果中,处于房子阴影部分的车辆,以及被树枝遮挡的车辆并无法被检测出来;而经过SAHI处理之后,这部分也能够被检测出来,说明SAHI确实是有效的算法。文章来源地址https://www.toymoban.com/news/detail-628879.html

到了这里,关于【目标检测】SAHI: 切片辅助推理和微调小目标检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法联调篇 | YOLOv8 结合切片辅助超推理算法 | 这才叫让小目标无处遁形!

    原创文章为博主个人所有,未经授权不得转载、摘编、传播、倒卖、洗稿或利用其它方式使用上述作品。违反上述声明者,本站将追求其相关法律责任。 本篇博文收录于《YOLOv8改进实战专栏》算法联调篇, 本专栏是博主精心设计的最新专栏, 紧跟 YOLOv8 官方项目的实时更新

    2024年02月08日
    浏览(42)
  • 改进 YOLO V5 的密集行人检测算法研究(论文研读)——目标检测

    针对在人员密集区或相互拥挤场景下进行的行人目标检测时,因行人遮挡或人像交叠所导致的跟踪目标丢失、检测识别率低的问题,提出了一种融合注意力机制的改进 YOLO V5 算法。 通过引入注意力机制来深入挖掘特征通道间关系和特征图空间信息,进一步增强了对行人目标可

    2024年02月01日
    浏览(49)
  • 【Yolov5】Yolov5添加检测层,四层结构对小目标、密集场景更友好

    🚀🚀🚀 Yolov5增加检测层 🚀🚀🚀 Yolov5的检测速度与精度较为平衡,但是原算法对于小目标的检测效果不佳,根据一些论文,我们可以通过增加检测层来提高对小目标的特征提取能力,以提高算法在密集场景下的表现。 Yolov5原网络结构如下: 增加一层检测层后,网络结构

    2023年04月23日
    浏览(62)
  • YOLOv8改进 | 损失篇 | VarifocalLoss密集目标检测专用损失函数 (VFLoss,原论文一比一复现)

    本文给大家带来的是损失函数改进 VFLoss损失函数 ,VFL是一种为 密集目标检测器 训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上, 其中有很多使用的小细节 (否则按照官方的版本使用根本拟合不了,这也是为啥

    2024年02月02日
    浏览(53)
  • YOLOV9目标检测-训练、验证、推理

    目录 一、模型介绍 1.1摘要 1.2模型概要 1.2.1Programmable Gradient Information (1)Auxiliary Reversible Branch (2)Multi-level Auxiliary Information 1.2.2Generalized ELAN 二、环境配置 三、数据集准备 四、预训练权重下载 五、训练 六、模型评估 ​七、模型推理 论文:yolov9 模型:yolov9 今天的深度学习方法

    2024年04月27日
    浏览(31)
  • 【目标检测】YOLOv5推理加速实验:TensorRT加速

    前两篇博文分别讨论了YOLOv5检测算法的两种加速思路:采用多进程或批量检测,不过效果均收效甚微。本问将讨论使用TensorRT加速以及半精度推理/模型量化等优化策略对检测加速的实际影响。 测试图片分辨率:13400x9528 GPU:RTX4090 Cuda:11.7 YOLOv5版本:最新版(v7.0+) 检测策略:将

    2024年02月05日
    浏览(57)
  • YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)

    目录 前言 一、什么是YOLOX 二、环境搭建 1、部署本项目时所用环境: 2、LabVIEW工具包下载及安装: 三、模型的获取与转化【推荐方式一】 1、方式一:直接在官网下载yolox的onnx模型 2、方式二:将标准模型pth转化为onnx(较为复杂) 3、获取onnx模型总结 四、LabVIEW实现YOLOX ONN

    2024年02月15日
    浏览(40)
  • 【目标检测】YOLOv5多进程/多线程推理加速实验

    最近在研究如何让YOLOv5推理得更快,总体看来,主要有以下这些思路: 使用更快的 GPU,即:P100 - V100 - A100 多卡GPU推理 减小模型尺寸,即YOLOv5x - YOLOv5l - YOLOv5m - YOLOv5s - YOLOv5n 进行半精度FP16推理与 python detect.py --half 减少–img-size,即 1280 - 640 - 320 导出成 ONNX 或 OpenVINO 格式,获

    2023年04月14日
    浏览(44)
  • AI推理实践丨多路极致性能目标检测最佳实践设计解密

    摘要: 基于CANN的多路极致性能目标检测最佳实践设计解密。 本文分享自华为云社区《基于CANN的AI推理最佳实践丨多路极致性能目标检测应用设计解密》,作者: 昇腾CANN 。 当前人工智能领域,最热门的无疑是以ChatGPT为代表的各种“新贵”大模型,它们高高在上,让你无法

    2024年02月12日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包