SF-YOLOv5——基于改进的特征融合模式的轻量级小目标检测算法

概述

提出了一种改进的YOLOv5模型,名为Small-Fast-YOLOv5 (SF-YOLOv5),专门用于小目标检测。通过合理裁剪大目标检测层的特征图输出,显著减少了模型所需的计算资源,使模型变得更加轻量级。
还提出了一种改进的特征融合方法(PB-FPN),该方法基于PANet和BiFPN(EfficientDet),有效地提高了算法对小目标的检测能力。
引入了空间金字塔池化(SPP)的快速版本,即SPPF,用于将特征融合网络与模型预测头部连接起来,以提升性能。

论文地址:SF-YOLOv5: A Lightweight Small Object Detection Algorithm Based on Improved Feature Fusion Mode

1.Yolov5

1.1 简介

在这里插入图片描述

  • 图像首先通过输入层(input)进行处理,然后被发送到主干网络进行特征提取。
  • 主干网络获取不同尺寸的特征图,并通过特征融合网络(neck)将这些特征进行融合,最终生成三个特征图P3、P4和P5(在YOLOv5中,这些尺寸分别表示为80×80、40×40和20×20),用于分别检测图像中的小型、中型和大型物体。
  • 这三个特征图随后被发送到预测头(head),利用预设的先验锚点(prior anchor),对特征图中的每个像素执行置信度计算和边界框回归,从而获得一个包含目标类别、类别置信度、框坐标、宽度和高度信息的多维数组(BBoxes)。
  • 通过设置相应的阈值(confthreshold, objthreshold)来过滤数组中的无效信息,并执行非最大值抑制(NMS)过程,最终可以输出检测结果。

1.2 Backbone

在这里插入图片描述

  • 主干网络是CSPDarknet53。
  • 主要结构是多个CBS(卷积 + 批量归一化 + SiLU激活函数)模块和C3模块的堆叠,最后连接一个SPPF模块。
  • CBS模块用于辅助C3模块进行特征提取,而SPPF模块增强了主干网络的特征表达能力。
    在这里插入图片描述
    SPPF通过对之前已经进行过最大池化的特征进行最大池化操作,避免了像SPPNet中SPP那样的重复操作。
    这样可以显著提高模块的运行速度。

1.3 Neck

在这里插入图片描述
YOLOv5 使用了特征金字塔网络(FPN)和路径聚合网络(PAN)的方法。
FPN 的基本思想是将特征提取网络通过多次卷积下采样操作生成的输出特征图(C3、C4 和 C5)进行上采样,以生成多个新的不同尺度的特征图(P3、P4 和 P5),用于检测不同尺寸的目标。

1.4 Head

在这里插入图片描述

特征图左上角的坐标值被设置为(0, 0)。
( rx ) 和 ( ry ) 是未经调整的预测中心点坐标。
( gx )、( gy )、( gw )、( gh ) 表示调整后的预测框的信息。
( pw ) 和 ( ph ) 是先验锚点的信息。
( sx ) 和 ( sy ) 是模型计算出的偏移量。
这个过程涉及将预设的先验锚点的中心坐标和大小调整为目标预测框的中心坐标和大小。

1.5 Model Variants

在这里插入图片描述
YOLOv5是一个流行的目标检测模型,它有多个版本,每个版本针对不同的应用场景和性能需求进行了优化。以下是YOLOv5的五个主要版本,以及它们对应的更大尺寸版本:

  1. YOLOv5s:这是YOLOv5系列中的小型模型,具有较小的尺寸和较少的参数,适用于需要快速推理和较低资源消耗的场景。

  2. YOLOv5m:中型模型,比YOLOv5s稍大,提供更好的性能,适用于需要平衡速度和准确性的应用。

  3. YOLOv5l:大型模型,比YOLOv5m更大,拥有更多的参数和更高的准确度,但相应的,它需要更多的计算资源。

  4. YOLOv5x:超大型模型,是YOLOv5系列中最大的标准版本,提供最高的准确度,适用于对准确度要求极高的场景。

  5. YOLOv5n:通常代表YOLOv5的“nano”版本,比YOLOv5s更小,适用于极端资源受限的环境。

对于每个标准版本,都有一个相应的更大尺寸版本,这些版本通过增加网络的深度和宽度来提高性能,但同样会增加模型的计算需求:

  1. YOLOv5x6:YOLOv5x的更大版本。
  2. YOLOv5l6:YOLOv5l的更大版本。
  3. YOLOv5m6:YOLOv5m的更大版本。
  4. YOLOv5s6:YOLOv5s的更大版本。
  5. YOLOv5n6:YOLOv5n的更大版本。

这些更大的版本通常用于需要极高准确度的场景,尽管它们在速度上可能不如标准版本快。选择哪个版本的YOLOv5取决于具体的应用需求,包括目标检测任务的复杂性、可用的计算资源以及对速度和准确性的具体要求。
在这里插入图片描述

1.6 大模型检测结果

在这里插入图片描述

1.7 小模型检测结果

在这里插入图片描述
在目标检测领域,YOLOv5和EfficientDet都是性能出色的模型,但它们在设计理念、结构和优化方面有所不同。YOLOv5的小型模型在保持较小的模型尺寸和快速的推理速度的同时,通常也能提供与EfficientDet相竞争甚至更好的性能。

2.SF-YOLOv5

2.1. 特征图

在这里插入图片描述

  • 主干网络是CSPDarknet53。
  • 主要结构是多个CBS(卷积 + 批量归一化 + SiLU激活函数)模块和C3模块的堆叠,最后连接一个SPPF模块。
  • CBS模块用于辅助C3模块进行特征提取,而SPPF模块增强了主干网络的特征表达能力。

在这里插入图片描述

C7和C8层对应于输出C5特征图。然而,在主干网络中,C7和C8层的参数占据了大量的参数。
为了使模型更轻量化,传统YOLOv5中的默认C5特征图被删除了,如图4所示。

2.2 PB-FPN

在这里插入图片描述
为了进一步提升算法对小目标的检测能力,额外引入了一条新的特征融合路径,将高层的特征进一步整合到底层。新设置的水平分支参与到底层的融合过程中,这进一步提升了算法对小目标的检测效果。

2.3 SPPF

在这里插入图片描述
YOLOv5 使用了 SPPF(空间金字塔池化快速版,SPP-Fast)模块。
通过简化池化过程,SPPF 避免了像 SPPNet 中的 SPP 那样的重复操作,并显著提高了模块的运行速度。
在本文中,SF-YOLOv5 在特征融合网络与模型预测头之间的连接处引入了几个 SPPF 模块,目的是为了进一步挖掘最终由 neck 输出并送往 head 的特征图的特征表达潜力,并进一步提升模型的性能。

4.实验结果

4.1 WIDER FACE Dataset

在这里插入图片描述

这个数据集包含了393,703张人脸的标注信息。数据集在尺度、姿态、角度、光照和遮挡方面具有很高的变化性。数据集复杂,并且包含了大量的密集小目标。
总共使用了4441张图像来训练算法,并使用了1123张图像来验证算法。
在这里插入图片描述
在这里插入图片描述
与传统算法YOLOv5s相比,SF-YOLOv5在mAP@0.5和mAP@0.5:0.95上分别提高了1.6和0.8,这证明了SF-YOLOv5在综合检测性能上的提升。

同时,SF-YOLOv5的参数(M)值和浮点运算次数(FLOPs,G)值分别减少了68.2%和12.7%,表明SF-YOLOv5可以进一步减少模型运算所需的参数数量和计算能力。

总体而言,SF-YOLOv5在性能上优于YOLOv3和ResNeXt-CSP,并且其性能接近最新的YOLOv7。

这段描述概述了SF-YOLOv5在目标检测任务上相对于其他几个算法的性能提升。mAP(mean Average Precision)是一个衡量目标检测算法性能的指标,它计算在不同阈值下的平均精度均值。mAP@0.5指的是在IoU(交并比)为0.5时的平均精度,而mAP@0.5:0.95则是在IoU从0.5到0.95的范围内计算的平均精度,这反映了算法在不同IoU阈值下的性能。

参数数量和FLOPs的减少意味着SF-YOLOv5在保持或提升性能的同时,能够以更少的计算资源实现更快的推理速度,这对于需要在资源受限的设备上部署模型的应用场景非常有用。

3.2 Other Datasets

在这里插入图片描述
在这里插入图片描述
总而言之,SF-YOLOv5在TinyPerson、VisDrone和VOC2012数据集上仍然实现了检测精度和综合性能的提升。

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

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

相关文章

CV每日论文--2024.6.24

1、Whiteboard-of-Thought: Thinking Step-by-Step Across Modalities 中文标题:思维白板:跨模式逐步思考 简介:这段话描述了一种利用思维白板提示来增强大型语言模型在视觉推理任务中的性能的方法。 人类在解决需要视觉思考的问题时,通常会…

英语口语练习评测的开发实现

英语口语评测是一个复杂的系统,需要综合考虑语音识别、语音评测、自然语言处理等多种技术。以下是一些常见的英语口语评测开发框架。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 基于语音识别的口语评测框架这种框架主要…

第28课 绘制原理图——绘制导线

概述 放置完元器件之后,接着就要用导线将元器件的管脚一个一个连起来了。 绘制导线的方法 点击快速工具条上的“线”命令,进入绘制导线的过程。 点击选择某个管脚或电源端口,作为导线的起始端。 再点击选择另一个管脚或电源端口&#xff0c…

React@16.x(40)路由v5.x(5)常见应用场景(2)- 实现类似 vue 的路由模式

目录 1,vue-router2,React 模拟实现 1,vue-router vue 的路由配置文件, // src/router/index.ts const routes [{path: "/news",children: [{ path: "", component: NewsView },{ path: "detail"…

瞄准Windows的新兴僵尸网络:Kraken

2021 年 10 月,ZeroFox Intelligence 披露了名为 Kraken 的僵尸网络。Kraken 通过 SmokeLoader 进行传播,每次更新攻击基础设施时都会扩大规模。尽管与 2008 年发现的 Kraken 僵尸网络同名,但二者并没有其他共同点。 功能 自从 2021 年 10 …

养殖自动化通风系统:未来畜牧业的智能守护者

在现代畜牧业中,养殖环境的控制对于动物的健康成长和养殖业者的成功至关重要。养殖自动化通风系统凭借其先进技术和精密设备,实现了对养殖场内环境条件的精准调控,显著提升了养殖效率和动物福利。本文将深入探讨养殖自动化通风系统的必要性、…

Unity3D 有限状态机(FSM)的架构与实现详解

一、引言 在游戏开发中,特别是使用Unity3D这样的游戏引擎时,控制游戏对象的行为往往是一个复杂且关键的任务。有限状态机(Finite State Machine,FSM)作为一种强大的工具,被广泛用于管理游戏对象的状态转换…

CompletableFuture 场景DEMO代码展示

自定义线程池 自定义线程池好处参考: 线程是稀缺资源,如果被无限制的创建,不 仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、 调优和监控的框架。 自定义线程池ThreadPoolExecutor_…

Talking Web

1. curl 1.1 http curl http://127.0.0.1:80 向目标主机端口发送http请求 1.2 httphead curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80 1.3 httppath curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80 1.4 URL编码路径 &#xff0…

LeetCode 2732. 找到矩阵中的好子集

一、题目描述 给定一个 m x n 的整数矩阵 mat 和一个整数 k,我们需要找到一个大小为 k 的子集 rows,使得这个子集对应的行在矩阵 mat 中构成的子矩阵中,所有元素之和最大。返回这个子矩阵中所有元素之和的最大值。 注意: 子集 …

天天大爆推文玩法营销号软件下载地址

天天大爆推文玩法营销号软件下载地址 天天大爆推文玩法营销号是一种营销策略,通过在社交媒体上发布频繁的推文来吸引关注和增加品牌曝光度。以下是一些可以用于天天大爆推文玩法营销号的策略: 营销号工具使用教程:https://iimenvrieak.feis…

数据结构之前缀树

写在前面 源码 。 前缀树,又叫做trie树,字典树,是一种多叉的树,一般用于单词前缀匹配的相关场景中,比如: 本文看下使用Java如何来实现这种数据结构。 1:基本介绍 思想:空间换时…

典型传感器简介及驱动安装

双目视觉传感器 Indemind 传感器简介 INDEMIND M1 是专为开发者提供的一款硬件,采用“双目摄像头IMU”多传感器融合架构与 微秒级时间同步机制,为视觉 SLAM 研究提供精准稳定数据源,以满足 SLAM 研究、导航及 避障开发、视觉动作捕捉开发、…

C++基础编程100题-014 OpenJudge-1.3-12 计算球的体积

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/12/ 描述 对于半径为r的球,其体积的计算公式为$ V4/3*πr^3 $,这里取π 3.14。 现给定r,求V。 输入 输入为一个不超过100的非负实数,即球半径&#xff0…

C# 高频面试题

C# 初级面试题及详细解答 1. C#中的值类型和引用类型的区别是什么? 解答: 值类型存储在堆栈上,直接包含数据;引用类型存储在堆上,存储的是对象的引用。值类型包括基本类型如 int、float 和 struct;引用类型包括 clas…

Perl编程探索:深入理解数组变量

Perl语言以其在文本处理和系统管理任务中的强大能力而受到广泛欢迎。在Perl中,数组是处理多个值集合的一种关键数据结构。本文将深入探讨Perl中的数组变量,包括它们的声明、初始化、访问和操作。 Perl数组的基本概念 在Perl中,数组可以用来…

FL Studio 21 集成了音频剪辑和增益控制,你可以更快、更精确地控制音频电平,包括自动交叉淡入淡出及更多功能

以通过控制色调、饱和度、亮度、文本、仪表和步进序列器的颜色来改变你的DAW外观, DAW“情绪主题”控制,水果编曲将变得与众不同。 更快的音频编辑 FL Studio 21 集成了音频剪辑包络和增益控制,你可以更快、更精确地控制音频电平&#xff0c…

代码随想录算法训练营第十四天| 110.平衡二叉树 | 257. 二叉树的所有路径 | 404.左叶子之和 | 222.完全二叉树的节点个数

110.平衡二叉树 (优先掌握递归) 文档讲解:代码随想录 视频讲解:后序遍历求高度,高度判断是否平衡 | LeetCode:110.平衡二叉树_哔哩哔哩_bilibili 1. 不知道咋做。 2. 在求二叉树的高度的代码上改&#xff…

学习面向对象前--Java基础练习题

前言 写给所有一起努力学习Java的朋友们,敲代码本身其实是我们梳理逻辑的一个过程。我们在学习Java代码的过程中,除了需要学习Java的一些基本操作及使用,更重要的是我们需要培养好的逻辑思维。逻辑梳理好之后,我们编写代码实现需要…

aws的alb,多个域名绑定多个网站实践

例如首次创建的alb负载均衡只有www.xxx.com 需要添加 负载 test2.xxx.com aws的Route 53产品解析到负载均衡 www.xxx.com 添加CNAME,到负载均衡的dns字段axx test2.xxx.com 添加CNAME,到负载均衡的dns字段axx 主要介绍目标组和规则 创建alb就不介…