YOLO改进系列之SKNet注意力机制

news2024/11/22 17:04:31

摘要

视皮层神经元的感受野大小受刺激的调节即对于不同的刺激,卷积核的大小应该不同,但在构建CNN时一般在同一层只采用一种卷积核,很少考虑因采用不同卷积核。于是SKNet被提出,在SKNet中,不同大小的感受视野(卷积核)对于不同尺度的目标会有不同的效果。尽管在Inception中使用多个卷积核来适应不同尺度图像,但是卷积核权重相同,也就是参数就是被计算好的了。而SKNet 对不同输入使用的卷积核感受野不同,参数权重也不同,可以根据输入大小自适应地进行处理。SKNet提出一种动态选择机制,允许每个神经元根据输入信息的多个尺度自适应调整其接受野的大小。设计了一种称为选择性内核(Selective Kernel)单元的构建模块,在该模块中,由不同内核大小的多个分支的信息引导,使用Softmax的注意力进行融合,从而对这些分支的不同关注导致融合层神经元有效感受野的大小不同。
论文地址:https://arxiv.org/pdf/1903.06586.pdf
代码地址:https://github.com/implus/SKNet

模型结构

在这里插入图片描述

SKNet网络主要由三个部分组成:Split、Fuse、Select。其中,Split部分将输入信息分别输入不同的核大小(这里是2个卷积核,卷积核大小分别为:33 和 55);Fuse部分进行特征融合;Select部分根据计算得到的权重对相应的特征进行选择操作。
Split部分
对于输入信息X,在Split中分别输入两个卷积层(默认为2个,根据需要可以设计多个),两个卷积核的尺寸分别为33和55。其中,每个卷积层都是由高效的分组/深度卷积、批处理归一化和ReLU函数依次组成的。另外,为了进一步提高效率,将具有5*5核的传统卷积替换为具有3×3核和膨胀大小为2的扩展卷积。最终得到中间层输出特征图。
Fuse部分
基本思想是使用门来控制来自多个分支的信息流,这些分支携带不同尺度的信息到下一层的神经元中。为实现这一目标,门需要整合来自所有分支的信息。该模块首先通过Element-wise Summation操作来融合来自多个分支的结果,再使用全局平均池化以生成Channel-wise统计信息来生成全局信息,此外还创建一个紧凑的特征z以便为精确和自适应选择提供指导,这是通过一个简单的全连接层实现的,降低了维度同时提高效率。
Select部分
Select操作使用a和b两个权重矩阵分别对中间层输入特征图进行加权操作,然后求和得到最终的输出向量。

实现代码

在这里插入图片描述

YOLOv5模型改进

本文在YOLOv5目标检测算法的Backbone和Head部分分别加入SKAttention来增强目标提取能力,以下分别是在Backbone以及Head中改进的模型结构和参数(以YOLOv5s为例)。
在Backbone部分
在这里插入图片描述
在这里插入图片描述

在Head部分
在这里插入图片描述
在这里插入图片描述

总结

SKNet中使用了不同的卷积核,且卷积核权重是不同的,这有助于模型学习不同尺寸目标的特征信息,其被广泛应用于图像分类、目标检测、语义分割等计算机视觉任务。本文在YOLOv5目标检测算法基础上引入SKAttention来进一步增强模型对多尺寸目标的特征提取能力,并输出改进后模型每层的输出与模型参数、梯度和计算量。此外,SKAttention可进一步应用于YOLOv7、YOLOv8等模型中,欢迎大家关注本博主的微信公众号 BestSongC,后续更多的资源如模型改进、可视化界面等都会在此发布。另外,本博主最近也在MS COCO数据集上跑了一些YOLOv5的改进模型,实验表明改进后的模型能在MS COCO 2017验证集上分别涨点1-3%,感兴趣的朋友关注后回复YOLOv5改进

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

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

相关文章

智安网络|探索云安全合规要求:等保2.0时代的新趋势解析

随着信息技术的不断发展和应用的广泛普及,信息安全问题日益凸显,特别是在云计算时代,企业对于云平台的安全保障需求更为迫切。等级保护(等保)作为我国信息安全的基本要求,已经进入了2.0时代,对于…

【古月居《ros入门21讲》学习笔记】17_launch启动文件的使用方法

目录 说明: 1. launch文件作用 2. launch文件语法 根元素 参数设置 重映射、嵌套 3. 示例 创建功能包 1_simple.launch 编译 运行 2_turtlesim_parameter_config.launch 启动运行 启动运行显示说明 3_start_tf_demo_c.launch 启动运行 4_start_tf_d…

大地测量乙级资质申请条件

整理一期关于测绘资质大地测量乙级资质的申请要求 测绘资质是由测绘资质主管部门自然资源部制定的 想要了解标准、正规的申请条件,可以到当地省份的政务网搜索测绘资质办理相关标准(例如下图) 1、通用标准 http://gi.mnr.gov.cn/202106/P02…

1120:最值交换

题目描述 有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。 int MinIndex(int a[], int n); //函数返…

鼎捷副总裁谢丽霞:从四大趋势来看,数智时代企业如何加速研发创新

目录 导读 01 研发创新 势不可挡 ① 从逆向设计走向正向设计 ② 从专业协助走向全面协同 ③ 从单点场景走向业务闭环 ④ 从知识管理走向知识工程 02 鼎捷雅典娜 数智驱动企业新未来 03 鼎捷PLM 赋能企业研发创新 导读 研发,企业长青的必备源动能。如何在…

为什么HR和猎头说招不到人:原本base薪资标25k~40k的岗位,面试通过后却只开出16K的薪资...

* 你好,我是前端队长,在职场,玩副业,文末有福利! 精彩回顾:国企央企降薪20%,年终奖也没了。 现在的就业市场太激烈了,对于在找工作的人来说,太不友好了。有的朋友辛辛苦苦…

[记录]-共享gpu和专用gpu的区别

如图 据说共享gpu是从系统内存中划分一半出来的,模型训练时要想真的加速训练,只有专用gpu那部分才是起作用的。只有在专用gpu不够用时才会用到共享gpu,共享gpu的速度很慢。

【问题解决!】OSError: [WinError 1455] 页面文件太小,无法完成操作。Error loading “c:\Anaconda3\lib

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 问题描述问题原因二、解决方法 问题描述 在使用pytorch跑深度学习的时候报错OSError: [WinError 1455] 页面文件太小,无法完成操作。Error loading “c…

Head、Neck、Backbone介绍

在深度学习中,通常将模型分为三个部分:backbone、neck 和 head。 Backbone:backbone 是模型的主要组成部分,通常是一个卷积神经网络(CNN)或残差神经网络(ResNet)等。backbone 负责…

Echarts-使用渐变色填充

垂直方向的渐变 color: {type: linear,// x0,y1,柱子的颜色在垂直方向渐变x: 0,y: 1,colorStops: [// 0%处的颜色{offset: 0,color: #12c2e9,},// 50%处的颜色{offset: 0.5,color: #c471ed,},// 100%处的颜色{offset: 1,color: #f64f59,},],global: false // 缺省为 false} 水…

Tableau连接到mysql数据库,配置驱动

Tableau想要连接mysql数据库进行数据的可视化,但是没有ODBC驱动,看了几篇文章写的,不是很清楚,顺便写下自己的思路。 1、下载mysql对应的ODBC驱动 首先要知道自己mysql的版本,然后下载对应的ODBC驱动。 MySQL :: Dow…

ground truth 在深度学习任务中代表的是什么意思?

1、概念 在深度学习领域,ground truth (中文意思是“地面真实值”或“基准真实值”,简单理解就是真实值) 是指用于训练和评估模型的准确标签或数据。它是机器学习算法的参考标准,用于衡量模型的性的和判断模型的准确性,本文将介绍…

汽车内饰灯不亮问题修复

车内饰灯不亮问题修复 最近换后座阅读灯火光闪了一下,保险丝短路,导致车内所有灯光,包括前后座阅读灯、后备箱灯都不亮了。 因为是所有灯都不亮,所以排除灯泡问题,网上查了下大概率是保险丝烧了。于是查了自己更换保…

github新建项目

参考链接:Github上建立新项目超详细方法过程 在这里新建一个repositories 接下来就选择相关的信息: 然后create a new就行了 接下来需要创建文件:(同时通过upload上传文件) 每次最多上传100个文件,然后保…

命令模式 rust和java实现

文章目录 命令模式介绍javarustrust仓库 命令模式 命令模式(Command Pattern)是一种数据驱动的设计模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象&…

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…

全网日志智能聚合及问题根因分析

1 日志关联分析的挑战 随着各行各业数字化转型的不断深入,网络承载了人们日常生活所需的政务、金融、娱乐等多方面的业务系统,已经成为影响社会稳定运行、关系国计民生的重要基础设施资源。哪怕网络发生及其微小的故障,也可能带来难以估量的…

腾讯云轻量服务器通过Docker搭建外网可访问连接的redis5.x集群

原创/朱季谦 最近买了一台4核16的腾讯云轻量应用服务器,花了我快四百的大洋,打算搭建一堆docker组件集群,最先开始是通过docker搭建redis集群,计划使用三个端口,分别是7001,7002,7003。 腾讯云服务器有防火墙限制,故…

Java程序连接 nacos集群

我们在bootstrap.yml文件里可以直接连一个nacos集群的. 架构如下 没错,我们程序直连的是通过Nginx的,利用nginx的反向代理来做到连接nacos集群. 我们先把nginx的配置贴上来 upstream cluster{server 127.0.0.1:8848;server 127.0.0.1:8849;server 127.0.0.1:8850; }server{l…

高压放大器驱动换能器可以做什么

高压放大器可以用于驱动各种类型的换能器,以实现不同应用的功能和需求。以下是一些常见的应用: 声波传感器:高压放大器可以驱动声波传感器,如压电传感器或麦克风。这些传感器将声音转换为电信号,并通过高压放大器进行放…