改进的yolov5

news2024/11/27 8:23:29

图片

The networkstructure of these models is constant, but the modules and con-volution kernels are scaled, which alters the complexity and sizeof each model.(这些模型的网络结构是恒定的,但模块和卷积核被缩放,这改变了每个模型的复杂性和大小。)

YOLOv5

图片

图片

✅backbone:Focus layer, BottleNeckCSP , and SPP module

Focus layer:主要作用是执行图像切片。这减少了下采样期间的信息损失,简化了数值计算并提高了训练速度。

BottleNeckCSP:不仅减少了整体计算负担,而且更有效地从特征中提取信息。

SPP:通过将可变大小特征图转换为固定大小的特征向量来增加网络的感受野

✅neck:PANet、FPN

PANet:用于深层特征的密集定位

FPN :通过上采样提供强大的浅层语义特征,融合各种多尺度特征,增强检测能力

✅head:它使用锚框输出包含向量的类概率、置信度分数、预测角度和边界框信息。

YOLOv5的局限性

✅首先,它主要针对用于通用对象检测任务的 COCO 数据集,并且不一定适用于特定任务和相关数据集。

✅其次,PANet 结构较少关注非相邻层之间的信息流,因为每个聚合过程中信息不断减少。

✅第三,SPP模块中的最大池化操作会导致显著的信息损失,因此无法获得局部和全局信息进行定位。

✅第四,连接 YOLOv5 架构中不同组件的信息路径限制了计算效率,并且对于为小规模对象提取相关特征不是最优的。

YOLOv5的改进

01 SPP模块的改进

图片

随着 CNN 深度的增加,感受野的大小变大。由于输入图像的大小有限,特征提取在大的感受野上重复。因此,SPP模块用于通过融合不同感受野的特征图来添加相应的模块来消除这个问题。该模块结合局部和全局特征来最大化特征图的表达能力,扩展了骨干网络的感受野,并将最重要的上下文特征分离为大小目标检测。为了整合不同尺度感受野的特征,SPP并行使用了几个最大池化操作。这种方法显示出提高整体检测精度的好处。然而,最大池化操作无法捕获空间信息并产生信息丢失,这导致无法单独定位目标,尤其是小对象。

为了解决这个问题,提出了一种改进的SPP模块,将池化函数替换为扩展卷积。虽然这两种操作都扩展了网络的感受野,但池化降低了空间分辨率,导致特征信息丢失。相反,具有不同膨胀率的扩张卷积通过捕获检测小目标所需的多尺度信息而不损失分辨率来丰富提取的特征。然后将输出特征组合在同一级别上以增强特征表示。因此,该模块提高了网络准确定位目标的学习能力,特别是小对象,同时以最小的计算成本增加保持快速检测速度。

02 PANet结构的改进

图片

颈部网络的目的是聚合主干获得的特征,以提高后者预测的准确性。由于深层的抽象级别,这种结构在防止小物体信息的丢失方面起着至关重要的作用。为了实现这一点,再次对特征图进行上采样,以便与主干进行聚合。FPN 为浅层提供深层语义信息,以增强可检测性,但在浅层和深层特征聚合过程中忽略位置信息。虽然PANet结构提供了浅层和深层信息的融合。然而,集成方法依赖于相邻特征的聚合,并且较少关注被赋予非相邻层之间的信息交换。正因为如此,非相邻层中的空间信息通过每次聚合不断减少。

因此,为了解决上述局限性,设计了一种基于原始PANet结构的改进PANet结构。我们添加了两个跨层连接(B1和B2),一个在FPN的自顶向下路径中,另一个在PANet的自底向上路径中,用于集成不相邻和多层次特征。在聚合过程中,这将允许更有效地利用语义和浅层位置信息,在不增加计算复杂度的情况下增强小物体的重要特征。

03 改进的信息路径

图片

图片

YOLOv5 的架构设计很简单,但由于其组件的内部排列,需要优化计算效率和实时应用。因此,我们重定向某些连接,以专注于检测多分辨率特征图。由于输入通过卷积逐层传递,因此特征图被提取。前者卷积层生成的特征图捕获小尺度对象,而后者生成的特征图捕获大尺度对象。BottleNeckCSP 是 YOLOv5 最基本的块,提取大多数上下文特征,但其当前属性对于深度特征的提取效率低下,导致目标检测效果不佳。另一个重要方面是选择适当的激活函数,即使在添加多个卷积和归一化层时也可以限制性能。此外,头部缺乏提取足够浅层特征来定位小物体的能力。

针对上述问题,提出了一种改进的Scaled YOLOv5 (iS-YOLOv5)。为证明BottleNeckCSP 的局限性,通过修改信息路径,引入了一种新的称为 N-CSP 的功能块,减少主干中N-CSP块的数量,调整网络参数,提高计算速度。此外,在网络的特定层中实现了Hard Swish激活,而不是Leaky ReLU。应用多个激活来避免信息丢失,并根据输入大小降低计算成本。在检测方面,为从高分辨率特征图中获得的小规模对象添加了一个检测头。在颈部中,优化调整 N-CSP 块以专注于检测多尺度特征。这将提高不同比例对象(尤其是小目标)的整体检测能力。请注意,集体修改几乎没有改变计算的复杂性,同时显着提高了检测性能以及确保实时要求。

注:本文仅用于学术分享,如有侵权,请联系后台作删文处理。

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

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

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

相关文章

自动驾驶算法(五):基于遗传算法的路径规划(上)

目录 1 遗传算法介绍 2 遗传算法代码详解--绘制地图与种群初始化代码讲解 1 遗传算法介绍 模拟生物进化过程,物竞天择,适者生存。 我们先为栅格地图进行编码:从起点0出发到终点24这个栅格。我们首先有一条路径(0,6&a…

最近面了12个人,发现连这种基础题都答不上来.....

一般面试我都会问一两道很基础的题目,来考察候选人的“地基”是否扎实,有些是操作系统层面的,有些是 python语言方面的,还有些… 深耕IT行业多年,我们发现,对于一个程序员而言,能去到一线互联网…

golang工程中间件——redis常用结构及应用(string, hash, list)

Redis 命令中心 【golang工程中间件——redisxxxxx】这些篇文章专门以应用为主,原理性的后续博主复习到的时候再详细阐述 string结构以及应用 字符数组,redis字符串是二进制安全字符串,可以存储图片等二进制数据,同时也可以存…

ns3入门基础教程

ns3入门基础教程 文章目录 ns3入门基础教程ns环境配置测试ns3环境ns3简单案例 ns环境配置 官方网站:https://www.nsnam.org/releases/ 代码仓库:https://gitlab.com/nsnam/ns-3-dev 如果安装遇到问题,可以参考以下博文: https://…

19、Flink 的Table API 和 SQL 中的内置函数及示例(1)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

吴恩达《机器学习》6-4->6-7:代价函数、简化代价函数与梯度下降、高级优化、多元分类:一对多

一、代价函数 逻辑回归的代价函数是用来度量模型预测与实际结果之间的差异的。与线性回归使用均方误差不同,逻辑回归使用的代价函数在数学上更为复杂。为了理解逻辑回归的代价函数,首先要明白逻辑回归的假设函数: ℎ𝜃(&#x1…

【高德地图API】JS高德地图API实现多边形绘画,高德获取多边形提交数据

目录 前言效果实现引入js 在项目中使用效果图引入htmlCSS具体实现JS调用说明添加的时候修改的时候判断是否在范围内 java绘画和判断是否在范围内pom.xml依赖引入import引入实现 前言 高德地图官方API:https://lbs.amap.com/demo/javascript-api/example/overlayers…

计算机编程软件编程基础知识,中文编程工具下载分享

计算机编程软件编程基础知识,中文编程工具下载分享 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,象如图这个实例…

LangChain+LLM实战---用AI(大模型)重构推荐系统

原文:Reimagining the Recommendation Engine AI助手的崛起 人工智能正在改变我们与在线应用程序互动的方式。目前,我们使用搜索引擎、新闻源和精心设计的菜单来导航,这些菜单引导我们找到所需的信息或服务。然而,我相信目前人工…

【IK分词器安装】

安装IK分词器: 下载链接(如果es版本不同可以修改下版本号):https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip 通常下载是比较慢的:有需要可以从…

OFDM同步--载波频率偏差CFO

参考书籍:《MIMO-OFDM无线通信技术及MATLAB实现》 实验图基本都截取自该本书 一、什么是CFO OFDM解调是采用同步检波的方式,需要在接收机使用与发射机相同的载波信号进行向下变换恢复出基带信号。但在实际使用中无法获得完全相同的载波信号,…

Mybatis-Plus自动填充功能配置和使用 [MyBatis-Plus系列] - 第494篇

历史文章(文章累计490+) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《

测试开发之自动化篇-有效测试数据管理

我们知道在测试设计时,对于一些操作相似的场景,可以采用步骤同数据相分离的方法来描述。这样的用例内容精炼、逻辑清晰,也利于未来自动化测试脚本的复用。 数据驱动测试是一种流行的软件测试方法,用于归纳性、结构化和集中化地描…

Linux开发板移植FTP服务器和OpenSSH时发现的问题

先上结论:如果在linux开发板上移植了OpenSSH,那么不仅可以远程登录Linux开发板,还可以用FileZilla在windows和Linux开发板之间传输文件,这时候就不需要移植vsftpd(移植vsftpd后windows可以用FileZilla跟Linux开发板传输文件)了&am…

【Unity ShaderGraph】| 快速制作一个 表面水纹叠加效果

前言 【Unity ShaderGraph】| 快速制作一个 表面水纹叠加效果一、效果展示二、表面水纹叠加效果三、应用实例 前言 本文将使用ShaderGraph制作一个表面水纹叠加效果,可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity Sh…

CentOS/RHEL7环境下更改网卡名称为CentOS6的传统命名规则

图片 CentOS/RHEL7网卡命名规则介绍 图片 传统的Linux服务器网卡的名称命名方式是从eth0,eth1,eth2....这种方式命名的,但是这个编号往往不一定准确对应网卡接口的物理顺序,常规模式下我们使用的服务器设备可能只有一张网卡,若网卡较多的情…

抖音10月榜单有哪些看点?

10月20日,抖音双11好物节在抖音平台正式开启抢跑,据数据显示,截止10月31日平台多项双11销售增长记录再次被刷新。 *新抖双十一活动也已开启,最高可省30788元,活动详情👉 抖音平台内大促氛围火爆&#xff0…

桶装水订水系统水厂送水小程序开发;

桶装水小程序正式上线,支持多种商品展示形式,会员卡、积分、分销等功能; 开发订水送水小程序系统,基于用户、员工、商品、订单、配送站和售后管理模块,对每个模块进行统计分析,简化了分配过程,提…

虹科教您 | 如何选择超声波储罐液位传感器(一)

在储罐中安装传感器时需要考虑: 1.避开障碍物 - 罐壁或罐内的其他障碍物会导致测距读数不准确。 2.放置会影响读数 - 初始的过滤设置是让传感器优先考虑大目标而不是小目标和噪音源。这有利于储罐液位监测的应用,因为液位往往会产生最大的返回声波。 …

ES 报错问题汇总

报错1: curl -XGET http://192.168.56.115:9200/_license解决方式 在 es/config/elasticsearch.yml文件,把开启密码验证把此处也修改成false xpack.security.enabled: false 报错2: 解决方式: 查看服务器es的license信息,发现 …