【YOLOv7/v5系列算法改进NO.46】融合DLinkNet模型中协同双注意力机制CDAM2

news2024/11/18 22:55:29

文章目录

  • 前言
  • 一、解决问题
  • 二、基本原理
  • 三、改进办法


前言

作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考。由于出到YOLOv7,YOLOv5算法2020年至今已经涌现出大量改进论文,这个不论对于搞科研的同学或者已经工作的朋友来说,研究的价值和新颖度都不太够了,为与时俱进,以后改进算法以YOLOv7为基础,此前YOLOv5改进方法在YOLOv7同样适用,所以继续YOLOv5系列改进的序号。另外改进方法在YOLOv5等其他算法同样可以适用进行改进。希望能够对大家有帮助。
具体改进办法请关注后私信留言!关注免费领取深度学习算法学习资料!


一、解决问题

本文尝试引入一种结合道路上下文信息与全阶段特征融合的RCFSNet算法中的协同双注意力模块,能够在遮挡场景中表现出色,尝试解决目标检测中的遮挡问题。

二、基本原理

原文链接
在这里插入图片描述
协同双注意力机制由协同通道注意力机制和协同空间注意力机制组成。在协同通道注意力中,融合特征图首先经过池化核大小为(1,W)与(H,1)的池化操作处理,随后采用reshape操作将特征图变形为H×320与W×320的特征图,特征图被输出通道数为1的1D卷积核学习相邻通道的依赖关系,随后采用变形操作将特征图变形为320×1×1的特征图。分别采用sigmoid函数获取特征图结合宽度、高度信息的通道权重,输入特征图结合权重生成两个通道特征加权的特征图。
在协同空间注意力机制中,首先采用通道平均池化和最大池化操作压缩通道特征信息,随后采用拼接与卷积操作融合特征图。分别采用卷积核大小为(1,W)与(H,1)的卷积操作压缩特征图的空间信息,随后采用expand操作恢复特征图尺寸到1×H×W。采用sigmoid函数获取特征图在宽度和高度维度的空间权重,输入特征图结合权重生成两个空间特征加权的特征图。
将协同双注意力机制生成的融合特征图采用拼接操作进行融合,随后采用输出通道数为128的1×1卷据核生成补充的道路特征图,其中128对应编码器特征图E3的通道数。
在这里插入图片描述

三、改进办法

部分代码如下:

class CDAM2(nn.Module):
    """Constructs a ECA module.
    Args:
        channel: Number of channels of the input feature map
        k_size: Adaptive selection of kernel size
    """

    def __init__(self, k_size=9):
        super(CDAM2, self).__init__()
        self.h = 256
        self.w = 256

        self.relu1 = nn.ReLU()
        self.avg_pool_x = nn.AdaptiveAvgPool2d((self.h, 1))
        self.avg_pool_y = nn.AdaptiveAvgPool2d((1, self.w))
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.conv1 = nn.Conv1d(256, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False)
        self.conv2 = nn.Conv1d(256, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False)
        self.conv11 = nn.Conv1d(1, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False)
        self.conv22 = nn.Conv1d(1, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False)
        self.sigmoid = nn.Sigmoid()
        self.convout = nn.Conv2d(64 * 5 * 4, 64*5, kernel_size=3, padding=1, bias=False)
        self.conv111 = nn.Conv2d(in_channels=64*5*2, out_channels=64*5*2, kernel_size=1, padding=0, stride=1)
        self.conv222 = nn.Conv2d(in_channels=64*5*2, out_channels=64*5*2, kernel_size=1, padding=0, stride=1)

        # 横卷
        self.conv1h = nn.Conv2d(in_channels=2, out_channels=1, kernel_size=(self.h, 1), padding=(0, 0), stride=1)
        # 竖卷
        self.conv1s = nn.Conv2d(in_channels=2, out_channels=1, kernel_size=(1, self.w), padding=(0, 0), stride=1)

        for m in self.modules():
            if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d) or isinstance(m, nn.Conv1d):
                if m.bias is not None:
                    m.bias.data.zero_()

    def forward(self, x):
        # x: input features with shape [b, c, h, w]
        n, c, h, w = x.size()
        y1 = self.avg_pool_x(x)
        y1 = y1.reshape(n, c, h)
        y1 = self.sigmoid(self.conv11(self.relu1(self.conv1(y1.transpose(-1, -2)))).transpose(-1, -2).reshape(n, c, 1, 1))

        y2 = self.avg_pool_y(x)
        y2 = y2.reshape(n, c, w)

        # Two different branches of ECA module
        y2 = self.sigmoid(self.conv22(self.relu1(self.conv2(y2.transpose(-1, -2)))).transpose(-1, -2).reshape(n, c, 1, 1))

        yac = self.conv111(torch.cat([x * y1.expand_as(x), x * y2.expand_as(x)],dim=1))

        avg_mean = torch.mean(x, dim=1, keepdim=True)
        avg_max,_ = torch.max(x, dim=1, keepdim=True)
        avg_out = torch.cat([avg_max, avg_mean], dim=1)
        y3 = self.sigmoid(self.conv1h(avg_out))
        y4 = self.sigmoid(self.conv1s(avg_out))
        yap = self.conv222(torch.cat([x * y3.expand_as(x), x * y4.expand_as(x)],dim=1))

        out = self.convout(torch.cat([yac, yap], dim=1))

        return out

最后,有需要的请关注私信我吧。关注免费领取深度学习算法学习资料!


YOLO系列算法改进方法 | 目录一览表
💡🎈☁️1. 添加SE注意力机制
💡🎈☁️2.添加CBAM注意力机制
💡🎈☁️3. 添加CoordAtt注意力机制
💡🎈☁️4. 添加ECA通道注意力机制
💡🎈☁️5. 改进特征融合网络PANET为BIFPN
💡🎈☁️6. 增加小目标检测层
💡🎈☁️7. 损失函数改进
💡🎈☁️8. 非极大值抑制NMS算法改进Soft-nms
💡🎈☁️9. 锚框K-Means算法改进K-Means++
💡🎈☁️10. 损失函数改进为SIOU
💡🎈☁️11. 主干网络C3替换为轻量化网络MobileNetV3
💡🎈☁️12. 主干网络C3替换为轻量化网络ShuffleNetV2
💡🎈☁️13. 主干网络C3替换为轻量化网络EfficientNetv2
💡🎈☁️14. 主干网络C3替换为轻量化网络Ghostnet
💡🎈☁️15. 网络轻量化方法深度可分离卷积
💡🎈☁️16. 主干网络C3替换为轻量化网络PP-LCNet
💡🎈☁️17. CNN+Transformer——融合Bottleneck Transformers
💡🎈☁️18. 损失函数改进为Alpha-IoU损失函数
💡🎈☁️19. 非极大值抑制NMS算法改进DIoU NMS
💡🎈☁️20. Involution新神经网络算子引入网络
💡🎈☁️21. CNN+Transformer——主干网络替换为又快又强的轻量化主干EfficientFormer
💡🎈☁️22. 涨点神器——引入递归门控卷积(gnConv)
💡🎈☁️23. 引入SimAM无参数注意力
💡🎈☁️24. 引入量子启发的新型视觉主干模型WaveMLP(可尝试发SCI)
💡🎈☁️25. 引入Swin Transformer
💡🎈☁️26. 改进特征融合网络PANet为ASFF自适应特征融合网络
💡🎈☁️27. 解决小目标问题——校正卷积取代特征提取网络中的常规卷积
💡🎈☁️28. ICLR 2022涨点神器——即插即用的动态卷积ODConv
💡🎈☁️29. 引入Swin Transformer v2.0版本
💡🎈☁️30. 引入10月4号发表最新的Transformer视觉模型MOAT结构
💡🎈☁️31. CrissCrossAttention注意力机制
💡🎈☁️32. 引入SKAttention注意力机制
💡🎈☁️33. 引入GAMAttention注意力机制
💡🎈☁️34. 更换激活函数为FReLU
💡🎈☁️35. 引入S2-MLPv2注意力机制
💡🎈☁️36. 融入NAM注意力机制
💡🎈☁️37. 结合CVPR2022新作ConvNeXt网络
💡🎈☁️38. 引入RepVGG模型结构
💡🎈☁️39. 引入改进遮挡检测的Tri-Layer插件 | BMVC 2022
💡🎈☁️40. 轻量化mobileone主干网络引入
💡🎈☁️41. 引入SPD-Conv处理低分辨率图像和小对象问题
💡🎈☁️42. 引入V7中的ELAN网络
💡🎈☁️43. 结合最新Non-local Networks and Attention结构
💡🎈☁️44. 融入适配GPU的轻量级 G-GhostNet
💡🎈☁️45.首发最新特征融合技术RepGFPN(DAMO-YOLO)

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

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

相关文章

[附源码]Python计算机毕业设计-哈尔滨旅游项目推荐平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

[CCS12.1][CC2340] 环境搭建

环境搭建一、 CCS 安装二、打补丁包三、环境修改一、 CCS 安装 CCS12.0 安装并设置中文 CCS12.1.0.00007 下载 注:cc2340只能使用CCS12.1.0.00007以上版本。 其他准备: cc23xx_device_support_0.01.10.284_win64.zip FreeRTOSv202104.00.zip simplel…

WPF聚光灯光源学习

聚光灯,Spotlight;其照亮方式与 PointLight 类似,但是它既有位置又有方向; 它们在 InnerConeAngle 和 OuterConeAngle 属性所设置的锥形区域(以度为单位指定)中投射光; 此光源在一个圆锥形区域…

使用ChatGPT帮我们写一篇论文,最后查重的重复率会是多少?

使用ChatGPT帮我们写一篇论文,最后查重的重复率会是多少? ChatGpt一经发布就大火,迅速应用在各个领域,尤其在程序圈自动帮我们写代码着实是圈了一大波粉。那么它用在科研领域会出现怎样的效果呢,当我们写论文纠结几个…

实战整了一个后台服务,真香!

大家好,HTTP 服务是重中之重,今天分享一下 一个HTTP服务的实现。 项目介绍 本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回给客户端。 HTTP在网络应…

25.自定义层

深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。 例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一个现在在深…

逸佳君:提升电脑使用效率的一些工具和方法论

大家好,我是逸佳君。今天给大家介绍一下我日常使用的可以提升电脑使用效率的工具软件。 先放个写作框架: 一、浏览器篇浏览器首推谷歌。 1、网页收藏夹 曾经,我的浏览器堆满了有用无用的书签,当想要去找某一个书签的时候&#…

这次不找借口了,找不到工作就好好学一下这份 16W 字 Java 面试合集

人生很长,生活不止眼前的苟且,远方也是 倒霉的时候总会想起福祸相依,但你会发现倒霉起来没完没了,就是看不到传说中的“福” 年初被裁了,我会安慰自己,此处不留爷自有留爷处,然后踏入找工作的行…

android studio App Inspection 实时查看SQLite数据库

几年以前查看安卓手机的数据库,是把数据库文件导出到电脑上,然后用数据库查看工具查看的: Android查看手机内部储存目录及数据库文件_Alex老夫子的博客-CSDN博客_android database目录 现在Android Studio 有了新的工具 App Inspection&…

慧都APS解决方案,点亮「照明灯具行业」精益化生产之路

导语: 照明灯具行业正面临着巨大的考验,除了本身的技术门槛、制程复杂外,还面对产业内高度的竞争、原材料价格不断上涨等困境,在内外因素双重夹击下,灯具产业通过数字化变革降低运营成本,提升盈利空间已是…

【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)

文章目录部署环境准备环境修改修改hostname(各修改各的)修改hosts文件(master 和所有node )禁用swap(master 和所有node)修改内核参数(master 和所有node )安装 containerd安装k8s安装组件(master 和所有node )下载镜像(master 和所有node )集群配置(master)集群配置2集群配置3…

C/C++程序的断点调试 - Dev C++

本文以Dev C 5.11为例,简述C/C程序断点调试的基本方法和过程。其它的IDE环境,大同小异。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔 叔";本文不允许…

探花交友_第7章_即时通信(新版)

探花交友_第7章_即时通信 文章目录探花交友_第7章_即时通信1.1 什么是即时通信1.2 功能说明1.3 技术方案2. 环信2.1 开发简介2.2 环信Console2.3 环信API介绍初始化基础API3. 抽取环信组件3.1 编写Properties对象3.2 编写HuanXinTemplate3.3 编写自动配置类3.4 环信集成测试4. …

Windows Defender 绕过(RTO I Lab环境实测)

背景 15号这天我通过了 RTO I 的考试。细想 RTO I 考试的 Lab,好像 Windows Defender(以下简称 WD)的保护做的比 OSEP 考试时还要好,更加严格。 回想起 9 月考 OSEP 的时候,只要你的 Payload 在文件创建(…

这可能是Github 最全的Java面试笔记, 简直把所有 Java 知识面试题写出来了

前言 作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万&#x…

大数据 Hadoop集群配置

配置Hadoop集群 在master虚拟机上配置hadoop 编辑Hadoop环境配置文件 - hadoop-env.sh 命令:cd $HADOOP_HOME/etc/hadoop,进入hadoop配置目录 命令:vim hadoop-env.sh 命令source hadoop-env.sh,让配置生效 编辑Hadoop核心配…

项目的可交付成果

目录 概述 定义 形式 评审与验收 概述 概念来自PMBOK,这书真的要细嚼慢咽,“可交付成果”多次出现,全书总共出现了288次,贯穿全书,绝对是个核心概念。 定义 可交付成果是在某一过程、阶段或项目完成时,必须产出的任何独特并可核实的产品、成果或服务能力。它通常是…

2022吴恩达机器学习课程——第二课(神经网络)

注:参考B站视频教程 视频链接:【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 文章目录第一周一、神经元二、神经网络三、代码实现 & Tensorflow四、前向传播五、强人工智能六、矩阵乘法 (简单,可以跳过)第二周一、用Tensorflow训…

20221217英语学习

今日新词 haul v.(人)拖,拉 herd n.人群;(尤指有蹄的哺乳动物)兽群,牧群 focus v.把注意力集中于,重视;集中;(使)调节焦距 result…

代码随想录刷题记录day44 股票问题3 4

代码随想录刷题记录day44 股票问题3 4 123. 买卖股票的最佳时机 III 思想 dp数组定义 递推公式 dp[i][0] 第i天不操作股票手头最大的现金 i从0开始 dp[i][1] 第i天第一次持有股票的手头最大的现金 dp[i][1] max: i-1天不操作,第i天才买入:dp[i-1][0…