YOLOv5改进:CA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码)

news2024/11/13 8:01:27

如果实验环境尚未搭建成功,可以参考这篇文章 ->【YOLOv5超详细环境搭建以及模型训练(GPU版本)】

文章链接为:http://t.csdnimg.cn/Ke0bb

---------------------------------------------------------------------------​

1.基本原理简介

Abstract:Recent studies on mobile network design have demonstrated the remarkable effectiveness of channel attention (e.g., the Squeeze-and-Excitation attention) for lifting model performance, but they generally neglect the positional information, which is important for generating spatially selective attention maps. In this paper, we propose a novel attention mechanism for mobile networks by embedding positional information into channel attention, which we call “coordinate attention”. Unlike channel attention that transforms a feature tensor to a single feature vector via 2D global pooling, the coordinate attention factorizes channel attention into two 1D feature encoding processes that aggregate features along the two spatial directions, respectively. In this way, long-range dependencies can be captured along one spatial direction and meanwhile precise positional information can be preserved along the other spatial direction. The resulting feature maps are then encoded separately into a pair of direction-aware and position-sensitive attention maps that can be complementarily applied to the input feature map to augment the representations of the objects of interest. Our coordinate attention is simple and can be flexibly plugged into classic mobile networks, such as MobileNetV2, MobileNeXt, and EfficientNet with nearly no computational overhead. Extensive experiments demonstrate that our coordinate attention is not only beneficial to ImageNet classification but more interestingly, behaves better in down-stream tasks, such as object detection and semantic segmentation.

摘要:最近关于移动网络设计的研究表明了通道注意力(例如,挤压与激励注意力)对提升模型性能的显著效果,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图至关重要。在本文中,我们提出了一种新颖的用于移动网络的注意机制,通过将位置信息嵌入通道注意力中,我们称之为“坐标注意力”。与通道注意力通过2D全局池化将特征张量转换为单个特征向量不同,坐标注意力将通道注意力分解为两个沿着两个空间方向分别聚合特征的1D特征编码过程。通过这种方式,可以沿着一个空间方向捕捉长距离依赖关系,同时可以保留另一个空间方向的精确位置信息。然后,生成的特征图分别编码为一对方向感知和位置敏感的注意力图,可以互补地应用于输入特征图,以增强感兴趣对象的表示。我们的坐标注意力简单易用,可以灵活地插入经典移动网络,如MobileNetV2、MobileNeXt和EfficientNet,几乎没有计算开销。大量实验表明,我们的坐标注意力不仅有益于ImageNet分类,而且更有趣的是,在下游任务,如目标检测和语义分割中表现更好。

实验对比:

论文地址:https://arxiv.org/pdf/2103.02907.pdf

代码地址:GitHub - houqb/CoordAttention: Code for our CVPR2021 paper coordinate attention

2.将CA模块加入到YOLOv5中

注意:CA 模块是一种即插即用的模块,可以在许多位置添加。不同的数据集可能需要在不同的位置添加 CA 模块,其效果也会有所不同。建议在不同位置进行多次实验以便比较效果。以下是我选择添加CA模块的位置,供大家参考,但不一定要完全按照这种方式添加。

2.1 方法一:在YOLOv5的主干网络(Backbone)中添加CA模块

2.1.1 步骤一

在【modules】目录下新建一个ca.py的文件,添加CA模块代码。代码获取链接:https://mbd.pub/o/bread/mbd-ZpuUmJlx

最后在【moduels/_init_.py】文件里面导入CA模块。

2.1.2 步骤二

打开【moduels/yolo.py】文件,在文件的开头导入CA模块。

然后找到parse_model这个方法(可以通过搜索parse_model)。

最后在parse_model方法中找到for语句(for i, (f, n, m, args) in enumerate(d["backbone"] + d["head"])),在for语句中再添加一个elif语句,将CA模块添加进去。

elif m in {CA}:
    args = [ch[f],  ch[f]]

添加的位置截图如下:

2.1.3 步骤三

修改模型。在【models】目录下新建一个yolov5-ca.yaml文件网络结构配置文件。将CA模块添加到YOLOv5结构中(这里我将CA模块添加到主干网络的倒数第二层)。 代码获取链接:https://mbd.pub/o/bread/mbd-ZpuUmJlx

2.1.4 训练过程

修改train.py文件训练模型,这里只修改YOLO模型对象,改为自己刚刚创建的文件,其余这里选择默认。

成功运行的网络结构截图如下:

开始训练模型的部分截图如下:

训练结果保存在【runs/tain】目录下。

注:如果训练过程出现如下错误,需要打开train.py文件,在scaler.scale(loss).backward()前添加torch.use_deterministic_algorithms(False)即可解决问题

错误提示:

2.2 方法二:在C3模块的残差结构中添加CA模块

2.2.1 步骤一

在【modules】目录下新建一个c3_ca.py的文件.将CA模块添加到C3模块的残差结构中。 代码获取链接:https://mbd.pub/o/bread/mbd-ZpuUmJlx

然后在【moduels/_init_.py】文件里面导入Bottleneck_CA,C3_CA模块。

2.2.2 步骤二

打开【models/yolo.py】文件,在文件的开头导入C3_CA模块。

找到parse_model这个方法(可以通过搜索parse_model)。

然后在parse_model方法中找到for语句(for i, (f, n, m, args) in enumerate(d["backbone"] + d["head"])),在for语句中的两个位置添加C3_CA模块。

2.2.3 步骤三

修改模型。在【models】目录下新建一个yolov5-c3-ca.yaml文件网络结构配置文件。(这里我将主干中的C3模块替换为C3_CA模块,除此之外,也可以将Neck的C3模块替换为C3_CA模块)【代码在购买后可获取】

2.2.4 训练过程

在train.py文件中修改模型的配置文件路径,使用yolov5-c3-ca.yaml文件,然后运行train.py。

成功运行的网络结构截图如下:

开始训练模型的部分截图如下:

训练结果保存在【runs/train】"目录下。

3.完整的项目文件下载路径

我们提供完整的项目文件,你也可以直接下载到本地,然后打开项目,修改数据集配置文件【NEU-DET.yaml】的数据集路径即可训练模型。项目完整代码获取链接:https://mbd.pub/o/bread/mbd-ZpuUmJlx

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

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

相关文章

09-排序1 排序(C)

这一节,测试各类排序算法的运行速度(没有基数排序(桶) 其实在实际学习中,还是有意义的 给定 n 个(长整型范围内的)整数,要求输出从小到大排序后的结果。 本题旨在测试各种不同的排序…

Unity Addressables 使用说明(三)构建内容(Build Content)

Build Content 【概述】Build Content 内容构建会处理 Addressables 组,生成内容目录(content catalog)、运行时设置以及包含你的资源的 AssetBundles。Addressables 使用这些文件在运行时加载内容。 你可以配置 Addressables 系统将 Addr…

重磅!OpenAI正式发布博士水平的推理模型o1!附详细说明

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

【android10】【binder】【2.servicemanager启动——全源码分析】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

登山第九梯:稀疏点云实例分割——又快又准

文章:Fast Range Image-Based Segmentation of Sparse 3D Laser Scans for Online Operation 代码:https://github.com/PRBonn/depth_clustering 1)摘要 从 3D 距离数据中分割对象是移动机器人领域的一个重要主题。在动态环境中导航的机器人需…

C51单片机-单按键输入识别,键盘消抖

【实验目的】 独立按键的识别方法、键盘消抖等。 【实验现象】 每按一次独立键盘的S2键,与P1口相连的八个发光二极管中点亮的一个往下移动一位。 【实验说明】 关于按键去抖动的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因…

NR PDSCH/PUSCH支持的maxMIMO layers

这里不考虑UE支持的具体MIMO能力,仅仅讨论协议上定的maxMIMO layers。 PDSCH 根据上面38.331中的结构,PDSCH max MIMO layers 为8 layers,进行8 layers传输时 要enable two codewords,因为 one codeword只能支持4 layers传输&…

【信创】Linux系统如何配置USB存储禁用及例外 _ 统信 _ 麒麟 _ 方德

原文链接:【信创】Linux系统如何配置USB存储禁用及例外 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于如何在Linux系统中配置USB存储禁用及例外的文章。禁用USB存储可以有效防止未经授权的人员从系统中复制数据或注入恶意软件…

CSS——盒子模型

首先CSS将所有的元素都看成一个盒子 盒子的组成: content —— 内容区域padding —— 内边距(边框与内容间的距离)border —— 边框线margin —— 外边距(盒子盒子间的距离) 这里着重说一下margin: 水平方向&#xff…

Kafka 基础与架构理解

目录 前言 Kafka 基础概念 消息队列简介:Kafka 与传统消息队列(如 RabbitMQ、ActiveMQ)的对比 Kafka 的组件 Kafka 的工作原理:消息的生产、分发、消费流程 Kafka 系统架构 Kafka 的分布式架构设计 Leader-Follower 机制与…

新品|瑞芯微RK3588工控机IPC8801适用AI算力、边缘计算、工业视觉

深圳触觉智能重磅推出旗舰级工控机IPC8801,搭载瑞芯微RK3588 ⼋核处理器;全铝紧凑机身、支持无风扇被动散热低噪音,确保设备在恶劣工业环境下稳定运行。 作为AI算力、边缘计算及工业视觉领域的高性能工控机,在国产化智能硬件与系统…

Axure PR 9 标签 设计交互

大家好,我是大明同学。 这期内容,我们将深入探讨Axure中可编辑标签元件设计与交互技巧。 可移除标签元件 创建可移除标签所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个文本框元件。 3.选中文本框元件&#xff0c…

视频服务器:GB28181网络视频协议

一、前言 某项目中需要集成视频管理平台,实现分布在各省公司的摄像及接入,对视频进行统一管理。本项目中视频管理平台采用GB/T28181实现的监控设备接入管理平台,支持在开放互联网和局域网对监控设备进行远程接入、远程管理、远程调阅、录像回…

【文件包含】——日志文件注入

改变的确很难,但结果值得冒险 本文主要根据做题内容的总结,如有错误之处,还请各位师傅指正 一.伪协议的失效 当我们做到关于文件包含的题目时,常用思路其实就是使用伪协议(php:filter,data,inpput等等)执行…

【NOI-题解】1407. 图像相似度1330. 求最大梯形的面积1384. 靶心数1398. 奇偶统计

文章目录 一、前言二、问题问题:1407. 图像相似度问题:1330. 求最大梯形的面积问题:1384. 靶心数问题:1398. 奇偶统计 三、感谢 一、前言 欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 本章节主要对…

优秀的安防视频监控平台应该具备怎样的视频编解码能力?

随着安防技术的飞速发展,监控平台作为保障公共安全、维护社会秩序的重要工具,其性能与效率日益成为行业关注的焦点。其中,监控平台的视频编码能力在视频监控系统中扮演着至关重要的角色,视频编码技术作为监控系统的核心组成部分&a…

200美元/月的ChatGPT Pro版上线?OpenAI草莓模型曝两周内发布,但模型表现要打个问号?

夕小瑶科技说 原创 作者 | 海野 现在看到“草莓”两个字,我已经条件反射了,已经不再是之前单纯的香香甜甜的草莓了。 一早醒来,又发生了两件“大事”: 一个是OpenAI的草莓(strawberry)被曝要提前了&#xf…

Xorbits Inference(Xinference):一款性能强大且功能全面的大模型部署与分布式推理框架

大模型部署与分布式推理框架Xinference Xinference的基本使用概述安装启动服务模型部署模型参数配置说明 API接口概述对话接口模型列表嵌入模型Rerank模型使用Xinference SDK使用OpenAI SDK 命令行工具概述启动模型引擎参数其他操作 集成LoRA启动时集成LoRA应用时集成LoRA 部署…

Stable Diffusion绘画 | ControlNet应用-Tile(分块)—tile_resample(分块-重采样)

要想使用 SD 生成高品质图片,放大增加分辨率是必不可少的环节。 tile_resample(分块-重采样) 主要是将图片切分成很多个分块,并识别每个分块的信息,最终通过特定算法把分块的信息重组起来。 能有效避免直接对一整张图片统一处理&#xff0c…

TensorFlow深度学习框架改进K-means聚类、SOM自组织映射算法及上海招生政策影响分析研究...

全文链接:https://tecdat.cn/?p37652 分析师:Chen Zhang 在教育政策研究领域,准确评估政策对不同区域和学生群体的影响至关重要。2021 年上海市出台的《上海市初中学业水平考试实施办法》对招生政策进行了调整,其中名额分配综合…