通道注意力CA

class ChannelAttention(nn.Module):def __init__(self, in_planes, ratio=16):super(ChannelAttention, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)self.fc1 = nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False)self.relu1 = nn.ReLU()self.fc2 = nn.Conv2d(in_planes // ratio, in_planes, 1, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x))))max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x))))out = avg_out + max_outreturn self.sigmoid(out)

空间注意力SA

class SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super(SpatialAttention, self).__init__()assert  kernel_size in (3,7), 'kernel size must be 3 or 7'padding = 3 if kernel_size == 7 else 1self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):avg_out = torch.mean(x, dim=1, keepdim=True)max_out,_ = torch.max(x, dim=1, keepdim=True)x = torch.cat([avg_out, max_out], dim=1)x = self.conv1(x)return self.sigmoid(x)

CBAM

class CBAM(nn.Module):def __init__(self, inplanes, ratio=16, kernel_size=7):super(CBAM, self).__init__()self.ca = ChannelAttention(inplanes, ratio)self.sa = SpatialAttention(kernel_size)def forward(self, x):out = x*self.ca(x)result = out*self.sa(out)return result

SE模块

class SeModule(nn.Module):def __init__(self, in_size, reduction=4):super(SeModule, self).__init__()self.se = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(in_size, in_size // reduction, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(in_size // reduction),nn.PReLU(in_size//reduction),nn.Conv2d(in_size // reduction, in_size, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(in_size),nn.PReLU(in_size))def forward(self, x):return x * self.se(x)

Pytorch实现CA,SA,SE注意力机制相关推荐

  1. yolov7+SE注意力机制(个人备忘录)

    目录 学习视频: yolov7各网络模型的结构图详解: 首先要了解网络结构对应部分 1.添加注意力机制在卷积里面 添加注意力机制代码链接: 添加SE注意力机制为例 步骤: 2.添加注意力机制在Conc ...

  2. YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统

    本文紧接前文: <基于yolov5s实践国际象棋目标检测模型开发> <yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别> 首先来看下最终 ...

  3. yolov5-5.0加入CBAM,SE,CA,ECA注意力机制

    CBAM注意力 yolo.py和yaml文件中相应的CBAMC3也要换成CBAM,下面的SE同理 class ChannelAttention(nn.Module):def __init__(self ...

  4. CVPR 2021 | 即插即用! CA:新注意力机制,助力分类/检测/分割涨点!

    摘要 最近关于移动网络设计的研究已经证明了通道注意(例如,挤压和激发注意)对于提升模型性能的显著效果,但是它们通常忽略位置信息,而位置信息对于生成空间选择性注意图是重要的.本文提出了一种新的移动网络注 ...

  5. PyTorch中文教程 | (14) 基于注意力机制的seq2seq神经网络翻译

    Github地址 在这个项目中,我们将编写一个把法语翻译成英语的神经网络. [KEY: > input, = target, < output]> il est en train d ...

  6. YOLOv5改进系列(1)——添加SE注意力机制

    前言 从这篇开始我们进入YOLOv5改进系列.那就先从最简单的添加注意力机制开始吧!( ̄︶ ̄)↗ [YOLOv5改进系列]前期回顾: YOLOv5改进系列(0)--重要性能指标与训练结果评价及分析 目 ...

  7. 注意力机制(SE, ECA, CBAM, SKNet, scSE, Non-Local, GCNet, ASFF) Pytorch代码

    注意力机制 1 SENet 2 ECANet 3 CBAM 3.1 通道注意力 3.2 空间注意力 3.3 CBAM 4 展示网络层具体信息 5 SKNet 6 scSE 7 Non-Local Ne ...

  8. 深度学习中的注意力机制(SENet、ECA、CBAM)pytorch验证

    先验证 SENet 介绍一下:SE注意力机制(Squeeze-and-Excitation Networks),它是一种通道类型的注意力机制,就是在通道维度上增加注意力机制,主要内容是是squeeze ...

  9. 收藏 | PyTorch实现各种注意力机制

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 P ...

最新文章

  1. web.py下获取get参数
  2. Django学习(一)
  3. notepad++添加插件管理器
  4. ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
  5. Ubuntu11.04更新源(转)
  6. 编程书籍阅读随谈(第一篇)
  7. Android——TextView属性XML详解
  8. 推荐系统回顾,FFM引入特征域进一步增强了模型的表达能力。大规模分段线性模型LS-PLM
  9. android字体和可免费商用的字体
  10. FDDB人脸库评价人脸检测模型超详细步骤
  11. 在线旅游网站技术讲解
  12. 递归算法php,PHP递归算法(二)
  13. 国内外RTI产品调查情况
  14. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0
  15. 80年代的Mac好用吗?
  16. 南京 徐小刚 计算机,基于混合粒子PHD滤波的多目标视频跟踪
  17. 应用提交 App Store 上架被拒的原因都有哪些
  18. Java学习路线(完整详细版)超详细
  19. Hyper-V导出虚拟机/导入虚拟机步骤(克隆),以及克隆之后设置静态IP无效的解决办法
  20. 怎样才是理想的程序员

热门文章

  1. 通向自由的钥匙(key)hgoi0407
  2. 五步教你制作漂亮精致的HTML时钟
  3. zzulioj:1127: 矩阵乘积
  4. 现在APP开发都用什么技术?
  5. 517. Super Washing Machines(超级洗衣机)
  6. c语言自定义bool类型,C语言_Bool 类型(布尔类型)介绍
  7. ATT格式汇编—— mov与lea的区别
  8. mDNS故障排查(译)
  9. WordXP冷僻功能的应用(转)
  10. 2018-01-18 Maven知识点-面试