YOLOv5改进算法之添加CA注意力机制模块

2023-10-26

目录

1.CA注意力机制

2.YOLOv5添加注意力机制

送书活动


1.CA注意力机制

CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系。如下图:

1. 输入特征: CA 注意力机制的输入通常是一个特征图,它通常是卷积神经网络(CNN)中的某一层的输出,具有以下形状:[C, H, W],其中:

  • C 是通道数,表示特征图中的不同特征通道。
  • H 是高度,表示特征图的垂直维度。
  • W 是宽度,表示特征图的水平维度。

2. 全局平均池化: CA 注意力机制首先对输入特征图进行两次全局平均池化,一次在宽度方向上,一次在高度方向上。这两次操作分别得到两个特征映射:

  • 在宽度方向上的平均池化得到特征映射 [C, H, 1]
  • 在高度方向上的平均池化得到特征映射 [C, 1, W]

这两个特征映射分别捕捉了在宽度和高度方向上的全局特征。

3. 合并宽高特征: 将上述两个特征映射合并,通常通过简单的堆叠操作,得到一个新的特征层,形状为 [C, 1, H + W],其中 H + W 表示在宽度和高度两个方向上的维度合并在一起。

4. 卷积+标准化+激活函数: 对合并后的特征层进行卷积操作,通常是 1x1 卷积,以捕捉宽度和高度维度之间的关系。然后,通常会应用标准化(如批量标准化)和激活函数(如ReLU)来进一步处理特征,得到一个更加丰富的表示。

5. 再次分开: 分别从上述特征层中分离出宽度和高度方向的特征:

  • 一个分支得到特征层 [C, 1, H]
  • 另一个分支得到特征层 [C, 1, W]

6. 转置: 对分开的两个特征层进行转置操作,以恢复宽度和高度的维度,得到两个特征层分别为 [C, H, 1][C, 1, W]

7. 通道调整和 Sigmoid: 对两个分开的特征层分别应用 1x1 卷积,以调整通道数,使其适应注意力计算。然后,应用 Sigmoid 激活函数,得到在宽度和高度维度上的注意力分数。这些分数用于指示不同位置的重要性。

8. 应用注意力: 将原始输入特征图与宽度和高度方向上的注意力分数相乘,得到 CA 注意力机制的输出。

2.YOLOv5添加注意力机制

在models/common.py文件中增加以下模块:

import torch
import torch.nn as nn
import torch.nn.functional as F


class h_sigmoid(nn.Module):
    def __init__(self, inplace=True):
        super(h_sigmoid, self).__init__()
        self.relu = nn.ReLU6(inplace=inplace)

    def forward(self, x):
        return self.relu(x + 3) / 6


class h_swish(nn.Module):
    def __init__(self, inplace=True):
        super(h_swish, self).__init__()
        self.sigmoid = h_sigmoid(inplace=inplace)

    def forward(self, x):
        return x * self.sigmoid(x)


class CoordAtt(nn.Module):
    def __init__(self, inp, reduction=32):
        super(CoordAtt, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))

        mip = max(8, inp // reduction)

        self.conv1 = nn.Conv2d(inp, mip, kernel_size=1, stride=1, padding=0)
        self.bn1 = nn.BatchNorm2d(mip)
        self.act = h_swish()

        self.conv_h = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0)
        self.conv_w = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0)

    def forward(self, x):
        identity = x

        n, c, h, w = x.size()
        x_h = self.pool_h(x)
        x_w = self.pool_w(x).permute(0, 1, 3, 2)

        y = torch.cat([x_h, x_w], dim=2)
        y = self.conv1(y)
        y = self.bn1(y)
        y = self.act(y)

        x_h, x_w = torch.split(y, [h, w], dim=2)
        x_w = x_w.permute(0, 1, 3, 2)

        a_h = self.conv_h(x_h).sigmoid()
        a_w = self.conv_w(x_w).sigmoid()

        out = identity * a_w * a_h

        return out

在models/yolo.py文件下里的parse_model函数将类名加入进去,如下图:

 创建添加CA模块的YOLOv5的yaml配置文件如下:

# YOLOv5 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv5改进算法之添加CA注意力机制模块 的相关文章

随机推荐

  • pandas基础入门之数据修改与基本运算

    1 数据复制 直接赋值 直接赋值的话 只是复制的元数据 行列索引 但是元素还是存储在相同内存位置 对元素进行修改会影响另外一个 import pandas as pd import numpy as np df pd DataFrame n
  • 偏微分方程 基础知识(线性偏微分方程+常系数线性偏微分方程)

    偏微分方程 指含有多元未知函数 u u x x
  • python爬虫connection error报错time read out

    TOC python 爬虫 ConnectionError HTTPConnectionPool host port 80 Read timed out python 爬虫 ConnectionError HTTPConnectionPoo
  • RocketMQ 安装和启动

    一 前言 系统环境 CentOS Linux release 7 9 2009 Core RocketMQ版本 4 7 1 我们会部署一套 RocketMQ 最小化的单机环境 包括一个 RocketMQ Namesrv 和 Broker 服
  • 【Transformer系列(1)】encoder(编码器)和decoder(解码器)

    前言 这个专栏我们开始学习transformer 自推出以来transformer在深度学习中占有重要地位 不仅在NLP领域 在CV领域中也被广泛应用 尤其是2021年 transformer在CV领域可谓大杀四方 在论文的学习之前 我们先
  • 第二章:25+ Python 数据操作教程(第十四节PYTHON 中的循环通过示例进行解释)持续更新中

    本教程通过几个实际示例介绍了在 python 中执行循环的各种方法 阅读本教程后 您将熟悉循环的概念 并将能够在现实世界的数据整理任务中应用循环 目录 什么是循环 现实世界中的循环示例 For 循环 Python 语法和示例 带 else
  • user-cf的理解-初衷

    使用user cf的初衷 以前的推荐算法 往往是基于内容标签的推荐 比如 用户喜欢了 数据挖掘导论 这本书 而这本书有 数据挖掘 这个标签 那么就给这个用户推荐 其他的 数据挖掘 类的图书 标签就像媒介一样 即是物品 即item 的属性 又
  • 互联网晚报

    今日看点 哪吒汽车第10万台量产车下线 仅用42个月 2022年首家银行理财子公司 浦银理财正式开业 京东成全国首批支持第三方商家接入数字人民币的企业 亚虹医药在科创板挂牌上市 A股迎来 泌尿生殖肿瘤第一股 刘慈欣 三体 英文版权以125万
  • 骚操作-CSDN浏览器助手已上线(就是个Chrome插件...)

    目录 概述 一 插件安装 1 进入csdn插件官网 2 本地下载csdn插件测试包 3 安装csdn插件测试包 4 解压csdn插件测试包并上传 5 开启csdn插件 6 查看插件信息 7 在新标签页中打开插件 二 功能测试 2 1 功能测
  • 图解!2023年国家社科基金年度项目

    9月4日 全国哲学社会科学工作办公室公示了2023年国家社科基金年度项目 其中重点项目有397项 一般项目有3185项 学术点滴 将重点项目和一般项目合并 利用DIKW软件统计和可视化 在国家社科基金年度项目中华东师范大学 中国人民大学 四
  • TCP/IP详解 卷1:协议 学习笔记 第二十三章 TCP的保活定时器

    一个TCP连接建立 然后经过任意时间 且中间路由器可以崩溃和重启 电话线可以挂断再接通 而连接依然保持 只要两端主机没有被重启 这意味着两端不交换任何信息 然而许多时候一个服务器希望知道客户主机是否崩溃 许多实现提供的保活定时器可提供这种能
  • Arthas监控java程序

    安装 1 解压缩arthas的压缩包 unzip arthas packaging bin zip 2 安装Arthas cd arthas install local sh 启动 以脚本的方式启动as sh 如图为启动成功 监控命令使用
  • 01. Windows基础:Dos命令

    文章目录 本文中的命令示例统一使用 来代表可以替换的内容 在使用时请不要真的输入 谢谢 0 Dos简介 1 目录相关 1 1 进入目录 1 2 进入另一个磁盘分区 1 3 列出当前目录下所有文件及文件夹 2 文件操作 2 1 浏览文件 2
  • 华为OD机试 - 相对开音节(Java)

    题目描述 相对开音节构成的结构为 辅音 元音 aeiou 辅音 r除外 e 常见的单词有bike cake等 给定一个字符串 以空格为分隔符 反转每个单词中的字母 若单词中包含如数字等其他非字母时不进行反转 反转后计算其中含有相对开音节结构
  • 【自然语言处理】潜在语义分析【下】概率潜在语义分析

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成两篇博客 自然语言处理 潜在语义分析 上 潜在语义分析 自然语言处理 潜在语义分析 下 概率潜在语义分析 2 概率潜在语义分析 概率潜在语义分析 probabili
  • FreeRTOS(任务管理的创建、删除、挂起、恢复)

    目录 一 任务的基本概念 二 任务状态的概念 1 Running 运行态 2 Ready 就绪态 3 Blocked 阻塞态 4 Suspended 挂起态 三 任务状态的切换 四 系统启动 1 vTaskStartScheduler 函数
  • IOS数据管理

    在 iOS 中 没有直接与 Android 中的 SharePreference 相对应的概念 而是使用不同的机制来处理应用程序的持久化数据 在 iOS 中 你可以使用以下几种方法来保存和读取应用程序的数据 UserDefaults 用户默
  • Halcon (64位)无法卸载或者卸载不彻底,没法再次安装?

    以管理员身份 切换到cmd 1 删除安装目录 rmdir S HALCONROOT 2 查询安装的Halcon版本 reg query HKLM SOFTWARE Wow6432Node MVTec HALCON Windows x64 3
  • 面试常用算法归纳

    面试常用算法归纳 算法时间复杂度 二叉查找树的时间复杂度 递归和分治 递归思维 汉诺塔问题 排序算法 最长子串 子序列 一维dp 有断层 最长递增子序列 最大子数组和 无重复字符的最长子串 买卖股票的最佳时机 二维dp 组合 子集 和排列
  • YOLOv5改进算法之添加CA注意力机制模块

    目录 1 CA注意力机制 2 YOLOv5添加注意力机制 送书活动 1 CA注意力机制 CA Coordinate Attention 注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制 CA 注意力机制的核心思想是引
Powered by Hwhale