【YOLO v5 v7 v8 v9小目标改进】辅助超推理SAHI:分而治之,解决高分辨率图像中小物体检测的问题

辅助超推理SAHI:分而治之,解决高分辨率图像中小物体检测的问题

    • 设计思路
    • 结构
    • 小目标涨点
      • YOLO v5 魔改
      • YOLO v7 魔改
      • YOLO v8 魔改
      • YOLO v9 魔改

 


论文:https://arxiv.org/pdf/2202.06934.pdf

代码:https://github.com/obss/sahi

 

设计思路

用一个超高清的相机拍摄一片风景,而你想在这张大照片里找到一些非常小的物体,比如远处的小鸟或花朵。

因为这些物体在整张照片中占的比例非常小,所以直接找它们会很困难,而且需要非常强大的算力。

你有一张大拼图,它由成百上千的小拼图块组成。

如果你试图一次性理解整张图的内容可能会感到困难和压力,特别是如果这张图非常复杂,细节丰富。

但是,如果你将拼图分成几个部分,一块一块地完成,每一块拼好之后再把所有的小块合并起来,最终得到的将是一幅完整的图画。

这种方法不仅使任务变得更加管理和操作上可行,而且每完成一小块就能带来成就感,激励你继续前进。

在科学和工程领域,这种思路同样适用。

例如,在计算机科学中,大型软件项目往往会被分解为多个小模块或组件,每个部分由不同的团队独立开发。

只有当这些独立开发的模块都完成并通过测试后,它们才会被集成在一起,形成完整的软件系统。

这样做的优点包括提高了开发效率,降低了错误和问题的复杂性,使得更容易定位和修复问题。

 
我们提出了一个办法来解决这个问题:

  1. 把大照片切成小块:就像用剪刀把一张大照片切成很多小片一样。这样,每个小块里的小物体相对于这个小块就变得更大了,更容易被找到。

  2. 在每个小块上做“练习”:我们有一些事先训练好的模型,它们擅长找东西,但主要是在比较小的图片中找。我们用这些模型在每个小块上找我们想要的小物体。

  3. 再把找到的东西放回原位:当我们在所有小块中都找完后,就把找到的小物体的位置标记起来,再放回到原来的大照片中相应的位置。

这样做的好处是,我们既没有错过任何小物体,又没有需要非常强大的计算力去一次性处理整张大照片。

这个方法可以用在任何需要找小物体的场景中,比如用监控摄像头监视一片区域,或者用无人机拍摄的大面积地图上寻找特定的小目标。

为了解决高分辨率图像中小物体检测的问题,我们提出了一个基于切片的通用框架,在模型的微调和推理阶段使用。

结构

在这里插入图片描述
这张图是一幅流程图,展示了基于切片的模型微调(Slicing Aided Fine-tuning, SF)和基于切片的高效推理(Slicing Aided Hyper Inference, SAHI)两种方法。

流程图的上半部分(Slicing Aided Fine-tuning, SF)说明了以下步骤:

  1. 从预训练数据集中,选取图片(例如 I F 1 I_{F1} IF1 I F 2 I_{F2} IF2)进行微调。
  2. 图片被切割成较小的重叠片段或补丁(例如 P F 1 P_{F1} PF1 P F 2 P_{F2} PF2),然后这些片段被调整大小到一个更大的尺寸。
  3. 这些增强后的图片片段(例如 I 0 ′ I'_{0} I0)被用于微调预训练好的模型,生成了微调后的模型。

流程图的下半部分(Slicing Aided Hyper Inference, SAHI)描述了推理阶段的以下步骤:

  1. 原始查询图像(例如 ( I ))被切割成多个重叠的小片段(例如 P I 1 P_{I1} PI1 P I l P_{Il} PIl)。
  2. 每个小片段大小调整后,单独进行物体检测推理,并生成预测。
  3. 接着,所有小片段的预测结果通过非极大值抑制(NMS)转换回原始图像的坐标尺度。
  4. 可选地,可以加入从原始图像的全尺寸推理中得到的预测结果。

 

这个框架包含以下两个主要部分:

  1. 切片辅助微调 (SF):使用流行的物体检测框架(如Detectron2、MMDetection和YOLOv5)的预训练权重,我们通过将高分辨率图像切割成重叠的小块(称为切片)来增强数据集。

    这些切片相对于原图中的小物体具有更大的像素面积,使得小物体在网络训练时变得更明显,从而提高了模型对小物体的检测性能。

    • 子特征:选择切片尺寸作为超参数,然后在微调过程中将切片调整大小以保持宽度在800到1333像素之间,从而相对于原始图像扩大了物体的相对尺寸。

     
    之所以采用这种方法,是因为预训练的模型通常在低分辨率图像上表现良好,但对高分辨率图像中的小物体检测效果不佳。

  2. 切片辅助高效推理 (SAHI):在推理步骤中,也采用了切片方法。

    首先,将原始查询图像切割成多个重叠的M×N尺寸的切片,每个切片在保持宽高比的情况下调整大小。

    然后,独立地对每个切片进行物体检测推理。

    此外,可以选择使用原始图像进行完整推理以检测较大的物体。

    最后,将所有重叠切片的检测结果(如果使用了完整推理,还包括完整推理的结果)通过非极大抑制(NMS)合并回原始图像大小。

    在NMS过程中,删除那些IoU比预定义匹配阈值低的检测框。

    • 子特征:通过这种方法,可以优化小物体的检测效率和准确性,同时保留了对大物体检测的能力。
       

    之所以使用切片辅助推理,是因为直接对高分辨率图像进行全图推理对于小物体而言效果不佳,而且计算成本高。

小目标涨点

更新中…

YOLO v5 魔改

YOLO v7 魔改

YOLO v8 魔改

YOLO v9 魔改

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java+SpringBoot+Vue+MySQL:农业管理新篇章

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Git基础知多少

什么是Git Git 是分布式版本控制系统(DVCS)。它可以跟踪文件的更改,并允许你恢复到任何特定版本的更改。与 SVN 等其他版本控制系统(VCS)相比,其分布式架构具有许多优势,一个主要优点是它不依赖…

本地知识库搭建成功后,企业效率真的翻倍了

在如今这个快节奏的信息时代,对企业来说,拥有一套高效的知识管理系统早已不再是选项,而是必要。而本地知识库,它这个集信息存储、管理和查询于一体的平台,不仅改变了公司信息资源共享的方式,还帮助进一步提…

DataLoader

import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter# 准备的测试数据集 数据放在了CIFAR10文件夹下test_data torchvision.datasets.CIFAR10("./CIFAR10",trainFalse, transformtorchvision.transfor…

Flutter性能优化

性能分析工具 (1)performance overlay 开启performance overlay后,Flutter APP上将显示一个展示一个浮层,浮层中会实时展示当前的UI线程及Raster线程的运行情况。如果都是蓝色竖条,说明界面运行流畅,否则则…

Conda快速安装的解决方法(Mamba安装)

如果你的Conda安装了,你可能会发现一个问题,就是使用Conda install 安装某个软件时,会特别慢,这时候呢?你会上网去搜,然后大家解决的方法呢。一是告诉你镜像可以下载快一点,二是,Mam…

华为OD机试 - 疫情扩散时间计算 - 矩阵(Java 2024 C卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷&am…

基于OpenCV的图形分析辨认03

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。 关于OpenCV&…

spring 注解缓存查询方法使用

spring-boot项目启动类上加注解: EnableCaching 查询方法注解: Cacheable

Sodinokibi勒索病毒最新变种,勒索巨额赎金

前言 Sodinokibi勒索病毒在国内首次被发现于2019年4月份,2019年5月24日首次在意大利被发现,在意大利被发现使用RDP攻击的方式进行传播感染,这款病毒被称为GandCrab勒索病毒的接班人,在短短几个月的时间内,已经在全球大…

缺陷检测:使用PatchCore训练自己的数据集

文章目录 前期准备两种方法 演示运行结果 代码详解见缺陷检测–PatchCore的代码解读 前期准备 必须包含有训练图片(无缺陷图片)、测试图片(缺陷图片)和ground_truth,并且ground_truth必须与对应图片的名称相同。 本文…

学习Java的第一天

一、Java简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。 后来 Sun 公司被 Oracle (甲骨文)公司收购,Jav…

AI如何为人力资源服务?

组织的核心都是人力资源。从招聘到员工培养,再到评估员工绩效,人力资源(HR)在公司的持续发展中起着至关重要的作用。表面上看,这似乎是一个简单的任务。然而,实际上,这是世界上最复杂和最具挑战…

[数据结构初阶】栈

各位读者老爷好,鼠鼠我好久没写博客了(太摆烂了),今天就基于C语言浅介绍一下数据结构里面的栈,希望对你有所帮助吧。 目录 1.栈的概念及结构 2.栈的实现 2.1定义栈 2.2.初始化栈 2.3.入栈 2.4.出栈 2.5.获取栈…

【Java EE初阶三十】JVM的简单学习

1. JVM 内存区域划分 一个运行起来的 Java 进程,就是一个 JVM 虚拟机,需要从操作系统申请一大块内存,就会把这个内存,划分成不同的区域,每个区域都有不同的作用. JVM 申请了一大块内存之后,也会划分成不同的内…

Git 基于ED25519、RSA算法生成 SSH 密钥

Git 基于ED25519、RSA算法生成 SSH 密钥 基于ED25519算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t ed25519 -C "邮箱地址"基于RSA算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t rsa -C "<注释内容>"基于ED255…

Day14:信息打点-主机架构蜜罐识别WAF识别端口扫描协议识别服务安全

目录 Web服务器&应用服务器差异性 WAF防火墙&安全防护&识别技术 蜜罐平台&安全防护&识别技术 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应用&#xff1a;APP对象/…

【多模态融合】CRN 多视角相机与Radar融合 实现3D检测、目标跟踪、BEV分割 ICCV2023

前言 本文介绍使用雷达与多视角相机融合&#xff0c;实现3D目标检测、3D目标跟踪、道路环境BEV分割&#xff0c;它是来自ICCV2023的。 会讲解论文整体思路、输入数据分析、模型框架、设计理念、损失函数等。 论文地址&#xff1a;CRN: Camera Radar Net for Accurate, Robus…

如何使用 CSS object-fit 进行图片的缩放和裁剪

简介 在处理图片时&#xff0c;你可能会遇到需要保持原始宽高比的情况。保持宽高比可以防止图片被拉伸或压缩而出现失真。解决这个问题的常见方法是使用 background-image CSS 属性。更现代的方法是使用 object-fit CSS 属性。 在本文中&#xff0c;你将探索 object-fit CSS …

如何在有/没有备份的情况下恢复华为上已删除的视频?6 个推荐选项

“我不小心删除了华为手机上的一堆视频。我怎样才能把它们找回来&#xff1f;我在谷歌上也找不到它们”。——来自知乎 在我们日常生活的喧嚣中&#xff0c;意外时有发生。无论是由于华为手机上的无意删除、恢复出厂设置、病毒感染、数据损坏还是系统故障&#xff0c;这些视频…