当前位置: 首页 > wzjs >正文

酷炫html5网站腾讯企业邮箱域名格式

酷炫html5网站,腾讯企业邮箱域名格式,古风网页设计优秀作品,服务公司名字Day 49 训练 CBAM注意力模块详解与实践:给CNN装上"智能眼镜"一、CBAM是什么?二、CBAM的组成模块1. 通道注意力模块(Channel Attention Module)2. 空间注意力模块(Spatial Attention Module) 三、…

Day 49 训练

  • CBAM注意力模块详解与实践:给CNN装上"智能眼镜"
    • 一、CBAM是什么?
    • 二、CBAM的组成模块
      • 1. 通道注意力模块(Channel Attention Module)
      • 2. 空间注意力模块(Spatial Attention Module)
    • 三、CBAM的优势
    • 四、CBAM的实际应用


CBAM注意力模块详解与实践:给CNN装上"智能眼镜"

在深度学习的视觉任务中,如何让模型更精准地关注图像中的关键部分一直是研究热点。今天我们就来深入探索CBAM(Convolutional Block Attention Module)注意力模块,它就像给卷积神经网络(CNN)装上了"智能眼镜",能让模型同时学会"关注什么"和"关注哪里"。

一、CBAM是什么?

CBAM是一种即插即用的注意力模块,可以无缝集成到任何CNN架构中。它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整——增强重要特征,抑制不重要特征,从而提升模型的特征表达能力和性能。

与之前介绍的SE通道注意力相比,CBAM的突破在于:

  • SE仅关注"哪些通道重要"
  • CBAM不仅关注通道重要性,还定位关键特征在图像中的具体位置

这种双重注意力机制让模型能同时回答两个关键问题:"我应该关注图像中的哪些特征?(通道注意力)“和"我在图像的哪个位置找到这些关键特征?(空间注意力)”。

二、CBAM的组成模块

CBAM由两个主要部分组成,二者顺序连接,共同作用于输入特征图:

1. 通道注意力模块(Channel Attention Module)

通道注意力模块的作用是分析"哪些通道的特征更关键"。以图像中的颜色、纹理通道为例,不同通道可能包含不同的重要信息。

实现原理:

  • 使用全局平均池化和全局最大池化,将每个通道的特征图压缩为1×1,保留通道间的统计信息
  • 通过共享的全连接层学习通道间的关系
  • 使用Sigmoid函数将输出映射到0-1之间,作为各通道的权重
class ChannelAttention(nn.Module):def __init__(self, in_channels, ratio=16):super().__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)self.fc = nn.Sequential(nn.Linear(in_channels, in_channels // ratio, bias=False),nn.ReLU(),nn.Linear(in_channels // ratio, in_channels, bias=False))self.sigmoid = nn.Sigmoid()def forward(self, x):b, c, h, w = x.shapeavg_out = self.fc(self.avg_pool(x).view(b, c))max_out = self.fc(self.max_pool(x).view(b, c))attention = self.sigmoid(avg_out + max_out).view(b, c, 1, 1)return x * attention

2. 空间注意力模块(Spatial Attention Module)

空间注意力模块的作用是定位"关键特征在图像中的具体位置",例如物体所在区域。

实现原理:

  • 对输入特征图进行通道维度的平均池化和最大池化
  • 将两种池化结果拼接后通过卷积层提取空间特征
  • 使用Sigmoid函数得到空间注意力权重
class SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super().__init__()self.conv = nn.Conv2d(2, 1, kernel_size, padding=kernel_size//2, 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)pool_out = torch.cat([avg_out, max_out], dim=1)attention = self.conv(pool_out)return x * self.sigmoid(attention)

CBAM模块就是将这两个注意力模块串联起来,先进行通道注意力调整,再进行空间注意力调整:

class CBAM(nn.Module):def __init__(self, in_channels, ratio=16, kernel_size=7):super().__init__()self.channel_attn = ChannelAttention(in_channels, ratio)self.spatial_attn = SpatialAttention(kernel_size)def forward(self, x):x = self.channel_attn(x)x = self.spatial_attn(x)return x

三、CBAM的优势

  1. 轻量级设计:仅增加少量计算量(全局池化+简单卷积),适合嵌入各种CNN架构(如ResNet、YOLO)
  2. 即插即用:无需修改原有模型主体结构,直接作为模块插入卷积层之间
  3. 双重优化:同时提升通道和空间维度的特征质量,尤其适合复杂场景(如小目标检测、语义分割)

四、CBAM的实际应用

我们通过在CIFAR-10数据集上的实验,展示如何将CBAM模块集成到CNN模型中,并观察其效果。

class CBAM_CNN(nn.Module):def __init__(self):super(CBAM_CNN, self).__init__()# 第一个卷积块(带CBAM)self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)self.bn1 = nn.BatchNorm2d(32)self.relu1 = nn.ReLU()self.pool1 = nn.MaxPool2d(kernel_size=2)self.cbam1 = CBAM(in_channels=32)  # 添加CBAM# 第二个卷积块(带CBAM)self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)self.bn2 = nn.BatchNorm2d(64)self.relu2 = nn.ReLU()self.pool2 = nn.MaxPool2d(kernel_size=2)self.cbam2 = CBAM(in_channels=64)  # 添加CBAM# 第三个卷积块(带CBAM)self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)self.bn3 = nn.BatchNorm2d(128)self.relu3 = nn.ReLU()self.pool3 = nn.MaxPool2d(kernel_size=2)self.cbam3 = CBAM(in_channels=128)  # 添加CBAM# 全连接层self.fc1 = nn.Linear(128 * 4 * 4, 512)self.dropout = nn.Dropout(p=0.5)self.fc2 = nn.Linear(512, 10)def forward(self, x):# 各卷积块均包含CBAM模块x = self.conv1(x)x = self.bn1(x)x = self.relu1(x)x = self.pool1(x)x = self.cbam1(x)  # 应用CBAMx = self.conv2(x)x = self.bn2(x)x = self.relu2(x)x = self.pool2(x)x = self.cbam2(x)  # 应用CBAMx = self.conv3(x)x = self.bn3(x)x = self.relu3(x)x = self.pool3(x)x = self.cbam3(x)  # 应用CBAMx = x.view(-1, 128 * 4 * 4)x = self.fc1(x)x = self.relu3(x)x = self.dropout(x)x = self.fc2(x)return x

通过训练这个集成CBAM的CNN模型,我们在CIFAR-10数据集上观察到明显的性能提升。训练过程中的准确率和损失变化如下图所示:

CBAM注意力模块为CNN模型提供了一种强大的特征增强方式。通过同时关注"通道重要性"和"空间位置",它显著提升了模型对关键特征的捕捉能力。

在实际应用中,我们可以在各种CNN架构中集成CBAM模块:

  • 在目标检测任务中,帮助模型更精准地定位物体
  • 在语义分割任务中,提升对不同区域特征的区分能力
  • 在图像分类任务中,增强对关键判别特征的关注

文章转载自:

http://kAEzNoR4.wjhnx.cn
http://SBmAtR9T.wjhnx.cn
http://V6u4gikV.wjhnx.cn
http://XEYCwyPT.wjhnx.cn
http://o2O9dZnt.wjhnx.cn
http://c6P34HTh.wjhnx.cn
http://RxVoSWO8.wjhnx.cn
http://9C7DZDGh.wjhnx.cn
http://4GOooHUF.wjhnx.cn
http://j3v0NSMN.wjhnx.cn
http://xWk8fMW1.wjhnx.cn
http://OVclGACm.wjhnx.cn
http://x2cJMdbW.wjhnx.cn
http://vTXst1cx.wjhnx.cn
http://10VtY3jv.wjhnx.cn
http://ZIFsUSv5.wjhnx.cn
http://DJeFr2b2.wjhnx.cn
http://RMEGZIpi.wjhnx.cn
http://8DJsMlJh.wjhnx.cn
http://rL7N2Al5.wjhnx.cn
http://Q0puFObq.wjhnx.cn
http://SHB2XIF7.wjhnx.cn
http://ZgbocYFd.wjhnx.cn
http://0C8bp5DI.wjhnx.cn
http://jawneaf3.wjhnx.cn
http://dqah3gTd.wjhnx.cn
http://KAuKmGCa.wjhnx.cn
http://VRXTthQD.wjhnx.cn
http://Fh57ALYX.wjhnx.cn
http://J4Yx1J0m.wjhnx.cn
http://www.dtcms.com/wzjs/724717.html

相关文章:

  • 网站页面怎么算海外站推广
  • 企业营销型网站建设哪家好亿度网络网站建设
  • 网站快照诊断天天联盟没网站怎么做
  • 东莞常平做网站公司大恒建设集团有限公司网站
  • 网站建设与网页设计开题报告公司网站制作平台
  • 内蒙古建设住房与城乡厅官方网站校园官方网站建设
  • 做网站的市场风险分析及对策东莞详细页设计
  • 企业网站建设推广wordpress邮件发送下载
  • wordpress判断浏览器系统优化app
  • 网站没备案网站快速优化排名官网
  • 广州做网站价位优质网站建设的设计要点
  • 网站建设要学哪种计算机语言小程序微信
  • 网站制作用什么语言常州网站推广公司
  • led高端网站建设互联网招商项目
  • 网站设计中遇到的问题网站建设都是需要什么软件
  • 衡水冀县做网站大型局域网组建方案
  • 网站建设论坛首页如何做公司的英文网站
  • 简历怎么制作网站网站正在建设中 htmll
  • 社保官方网站登录入口深圳都信建设监理有限公司网站
  • 团购网站建设网站建设 合作协议
  • 长沙住建信息中心网站面包屑网站导航怎么做
  • 做返利网站能赚钱的礼品做便宜的网站
  • rp做网站连云港网站推广优化
  • 东莞规划局官方网站一个人做网站
  • 中国东凤网站制作微信建设网站
  • 做雷达干扰的网站中国女排赛程时间最新消息
  • 深圳建网站好的公司专业的网站建设费用
  • 如果建立网站wordpress谁看了
  • 全网通网站wordpress 知乎
  • 做小型企业网站多少钱百度大数据分析