sahi密集检测的推理技巧

news2024/11/27 23:53:40

最近在做一些计数的项目,样本中存在一些非常密集的目标,如果混杂一起训练指标很难达到要求,所以考虑在训练时不加入密集目标,训练使用正常的样本,在推理时使用密集检测方案。

在高分辨率图像中检测小目标一直是一个技术挑战,尤其是在无人机监控和卫星图像分析等领域。最近,一个名为 Slicing Aided Hyper Inference (SAHI) 的新技术为我们提供了一种解决方案。这项技术由土耳其安卡拉的OBSS AI和中东技术大学的研究人员共同开发,并在论文 "SLICING AIDED HYPER INFERENCE AND FINE-TUNING FOR SMALL OBJECT DETECTION" 中进行了详细描述。

论文与代码链接

  • 论文链接:arXiv
  • GitHub代码:SAHI GitHub

技术方案详解

SAHI技术的核心在于通过图像切片辅助的推理和微调来提高小目标的检测精度。这种方法不仅提高了检测的准确性,而且具有很好的通用性和可扩展性。

方案概述

  1. 切片辅助微调 (Slicing Aided Fine-tuning - SAF)

    • 在微调阶段,通过从图像中提取重叠的小块(切片),并将这些切片调整到更大的尺寸,从而使得原本在图像中像素覆盖较小的目标在调整后的图像中占据更多的像素。
    • 这种方法使得模型能够更好地学习和识别小目标的特征。
  2. 切片辅助超推理 (Slicing Aided Hyper Inference - SAHI)

    • 在推理阶段,将输入图像分割成多个重叠的小块,并对每个块进行调整大小和独立的目标检测。
    • 通过这种方式,即使是小目标也能在调整后的图像块中占据较大的像素区域,从而提高检测的准确性。
实现步骤
  1. 图像切片:将输入图像分割成多个小块,每个小块的尺寸在预定义的范围内随机选择。
  2. 调整尺寸:将每个切片调整到更大的尺寸,以便于目标检测模型更好地识别小目标。
  3. 目标检测:对每个调整后的切片进行目标检测。
  4. 结果合并:使用非极大值抑制(NMS)将所有切片的检测结果合并回原始图像的坐标系中。

拓展性和应用场景

SAHI技术的通用性和可扩展性使其不仅适用于小目标检测,还可以应用于多种场景:

  1. 无人机监控:在无人机拍摄的高分辨率图像中检测地面上的小型物体。
  2. 卫星图像分析:在卫星图像中检测地面设施或其他小型目标。
  3. 医学图像处理:在医学图像中检测微小的异常区域。
  4. 视频监控:在视频流中实时检测小目标,如人流监控或交通监控。

结论

SAHI技术为小目标检测提供了一种有效的解决方案,并且具有很好的通用性和可扩展性。通过简单的集成,现有的目标检测模型可以在不牺牲内存效率的情况下提高检测精度,这对于资源受限的环境尤其有价值。

这项技术的成功实施不仅展示了深度学习在图像处理领域的潜力,也为未来在更复杂场景下的应用提供了新的思路。

实际使用上耗时会成倍增加,不过使用了初筛后密集样本才会使用sahi所以整体耗时并没有增加,搭配yolov8无缝上线,召回几乎打满

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt+Python项目构建】- 02 Qt creator 14.0 + PySide6 如何让图像控件的尺寸变化和窗口一致

前言:【这是个AI不会回答的问题】 Qt Creator 新的版本又发出了,Pyside6 有很多新功能。但是,一些传统的方法要被淘汰了。 一个经典的例子是: 我有个一个图像要显示在Form里面的图像控件上,OK, 我现在拖…

Unity实现自定义图集(一)

以下内容是根据Unity 2020.1.0f1版本进行编写的   Unity自带有图集工具,包括旧版的图集(设置PackingTag),以及新版的图集(生成SpriteAtlas)。一般来说,unity自带的图集系统已经够用了,但是实际使用上还是存在一些可优化的地方,例如加载到Canvas上的资源,打图集不能…

JVM(学习预热 - 走进Java)(持续更新迭代)

目录 一、彻底认识Java虚拟机 开创世纪:Sun Classic 开创世纪:Exact VM 武林霸主:HotSpot VM 移动端虚拟机:Mobile/Embedded VM “三大”其二:BEA JRockit/IBM J9 VM 软硬结合:BEA Liquid VM/Azul VM…

更新子节点的优化策略1:目标old节点的位置预测

更新子节点的优化策略1:目标old节点的位置预测: 如果 oldStartVnode 和 newStartVnode 是同一个节点,直接 patchVnode,同时 oldStartIdx、newStartIdx 索引都加 1(向右移动)如果 oldEndVnode 和 newEndVno…

PE结构之 重定位表

那么,我们找到了某个 需要修改的绝对地址 的RVA, 将这个RVA转换成FOA后,这个绝对地址是读DWORD ,还是QWORD? 就是说,32位和64位是否有区别? 实验: 找到重定位表的数据,并观察在内存中和文件中的区别 将引用dll的exe文件,设置一下基址 同时DLL文件的基址和EXE文件设置一样,并…

肝了4天,我用ChatTTS和LLM让deeplearning.ai课程说上流畅中文

以下是「 豆包MarsCode 体验官」优秀文章,作者X2046。 我们都知道外网上有很多优秀的视频教程平台,比如 Coursera 和 deeplearning.ai。尤其是后者,由吴恩达老师与OpenAI、Langchain、LlamaIndex、AutoGen等公司和作者合作,推出了…

Spring Cloud Netflix Hystrix 熔断器讲解和案例示范

在分布式微服务架构中,每个服务之间相互依赖,当某个服务出现故障或延迟时,如果没有有效的故障隔离机制,可能导致整个系统雪崩式的失败。Netflix Hystrix 作为一种熔断器模式,旨在通过隔离服务之间的调用,提…

通过移动访问控制增强数据中心安全性

在当今数据驱动的世界里,信息是新的黄金标准,数据中心安全已成为每个 IT 部门的首要任务。数据隐私和道德管理不再仅仅是最佳实践,而是法律要求。因此,风险比以往任何时候都要高。 然后是内部威胁问题。根据 IBM 的 《2024 年数据…

Python案例--copy复制

在Python编程中,数据的复制是一个常见且重要的操作,它涉及到赋值、浅拷贝和深拷贝三种不同的概念。正确理解这三种操作对于编写高效且正确的程序至关重要。本文将通过一个简单的Python示例,探讨这三种数据复制方式的区别及其应用场景&#xf…

数据结构 ——— 单链表oj题:环状链表(求出环的入口节点)

目录 题目要求 手搓一个简易带环链表 代码实现 题目要求 给定一个链表的头节点 head,返回链表开始入环的第一个节点,如果链表无环,则返回NULL 手搓一个简易带环链表 代码演示: struct ListNode* n1 (struct ListNode*)mal…

深度学习:循环神经网络—RNN的原理

传统神经网络存在的问题? 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。 RNN神经网络 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络。在处理序列输入时具有记忆性…

Mac上强大的菜单栏管理工具

想要Mac用的好,各种工具少不了,一款好用的软件对于提高使用效率和使用舒适度来说非常必要,iBar-强大的菜单栏图标管理工具 随着 Mac 运行的软件增加,状态栏中的图标也越来越多,不仅看得眼花缭乱,而且刘海屏…

基于SpringBoot+Vue的农场管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

ORM框架简介

什么是ORM? ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,用于在关系数据库和对象程序语言之间转换数据。ORM框架允许开发者以面向对象的方式来操作数据库,而不需要编写复杂的SQL语句。简单…

CMake 属性之目录属性

【写在前面】 CMake 的目录属性是指在特定目录(及其子目录)范围内有效的设置。 这些属性不同于全局变量或目标(Target)属性,它们提供了一种机制,允许开发者为项目中的不同部分定义不同的构建行为。 通过目录…

HarmonyOS NEXT应用开发实战(二、封装比UniApp和小程序更简单好用的网络库)

网络访问接口,使用频次最高。之前习惯了uniapp下的网络接口风格,使用起来贼简单方便。转战到鸿蒙上后,原始网络接口写着真累啊!目标让鸿蒙上网络接口使用,简单程度比肩uniapp,比Axios更轻量级。源码量也不多…

Spring Cloud全解析:链路追踪之springCloudSleuth简介

文章目录 springCloudSleuth简介链路追踪?SpringCloudSleuth术语链路示意图zipkin依赖配置 springCloudSleuth简介 链路追踪? 什么是链路追踪?就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示&#xff…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(多数据源配置)

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(多数据源配置) 前言多数据源配置引入aop依赖1. properties配置多数据源2. 创建数据源枚举类3. 线程参数配置类4. 数据源动态切换类5. 多数据源配置类HikariCP 版本…

【JS】用哈希法得到四数相加元组数

思路 根据题目这里是四个数组abcd的数相加,将数组两两分组,A大组为ab,B大组为cd由abcd0可得AB0,即B0-A遍历数组分别计算出AB大组所有sum值,先将A组sum值存进map里,再从map里面寻找有count个合适的B值&#…

Python in Excel 正式发布!

Excel 中的 Python 现已正式发布,适用于 Microsoft 365 商业版和企业版的 Windows 用户。去年 8 月,微软与 Anaconda 合作,通过集成 Python 为 Excel 引入了一个令人兴奋的新增功能,从而可以将 Python 和 Excel 分析无缝结合到同一…