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

[论文阅读]CBAM——代码实现和讲解

CBAM

论文网址:CBAM
论文代码:CBAM

CBAM
本文提出了一种卷积块注意力模块(CBAM),它是卷积神经网络(CNN)的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图,然后将这些注意力图与输入特征图相乘,进行自适应特征细化。CBAM 可以无缝集成到任何 CNN 架构中,开销几乎可以忽略不计,并且可以与基本 CNN 一起进行端到端训练。作者通过在 ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上的大量实验验证了 CBAM,结果表明各种模型在分类和检测性能上都有一致的提高。论文还讨论了网络工程和注意力机制方面的相关工作,并强调了所提出的 CBAM 模块的贡献。

CBAM 模块由两个分支组成:通道注意力分支和空间注意力分支。

Channer Attention Module

通道注意力分支旨在捕捉特征图不同通道之间的相互依存关系。它使用全局平均池化操作来获取通道统计信息,然后应用两个全连接层来生成通道注意图。然后将这些注意力图与原始特征图按要素相乘,以突出重要通道。
Channer Attention Module

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.fc = nn.Sequential(nn.Conv2d(in_planes, in_planes // 16, 1, bias=False),nn.ReLU(),nn.Conv2d(in_planes // 16, in_planes, 1, bias=False))self.sigmoid = nn.Sigmoid()def forward(self, x):avg_out = self.fc(self.avg_pool(x))max_out = self.fc(self.max_pool(x))out = avg_out + max_outreturn self.sigmoid(out)

Spatial Attention Module

另一方面,空间注意力分支侧重于捕捉每个通道内的空间依赖性。它采用挤压-激发操作,首先使用全局平均池化技术对输入特征图进行挤压,以获得通道统计信息。然后,应用两个全连接层生成空间注意力图。这些图随后与原始特征图按元素相乘,以强调重要的空间位置。
Spatial Attention Module

class SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super(SpatialAttention, self).__init__()self.conv1 = 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)x = torch.cat([avg_out, max_out], dim=1)x = self.conv1(x)return self.sigmoid(x)

CBAM 模块通过元素相加的方式将通道和空间注意力图结合起来。这样,该模块就能在网络中学习 "关注什么 "和 “关注哪里”,从而有效改善信息流并增强 CNN 的表示能力。
就是这么简单!!

相关文章:

[论文阅读]CBAM——代码实现和讲解

CBAM 论文网址:CBAM 论文代码:CBAM 本文提出了一种卷积块注意力模块(CBAM),它是卷积神经网络(CNN)的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图&#x…...

蓝桥杯第2119题 特殊时间 C++ 思维暴力

题目 思路和解题方法 1110 代表 1110年11月10号11点10分1110 4*4*4 有0111 1011 1101 1110 可以符合年 月日 时分秒的都有4种例如 1113有1113 1131 1311 3111 年份符合月日只有11 13 时分秒 只有11 13 11 31 13 11 无31 11 c 代码 #include <bits/stdc.h> using…...

Modbus RTU协议及modbus库函数使用

一、与Modbus TCP的区别 在一般工业场景使用modbus RTU的场景还是更多一些&#xff0c;modbus RTU基于串行协议进行收发数据&#xff0c;包括RS232/485等工业总线协议。 与modbus TCP不同的是RTU没有报文头MBAP字段&#xff0c;但是在尾部增加了两个CRC检验字节&#xff08;CRC…...

Linuxfork,写时拷贝

1.prinf隐藏的缓冲区 1.思考:为什么会有缓冲区的存在? 2.演示及思考? 1).演示缓存区没有存在感 那为什么我们感觉不到缓冲区的存在呢?我们要打印东西直接就打印了呢? 我们用代码演示一下: 比如打开一个main.c,输入内容如下: #include <stdio.h> int main() { …...

Android控件全解手册 - 自定义实现水波进度

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列...

Halcon Solution Guide I basics(4.1): Blob Analysis 自主练习

文章目录 文章专栏前言自主练习题目输出电路板焊点个数解决方案:正确率&#xff1a;90 文章专栏 我的Halcon开发 CSDN 专栏 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 随笔分类 - Halcon入门学习教程 前言 为了更加熟练的掌握Halcon的练习&#xff0c;我之…...

视频网站适合租用服务器吗?

视频网站适合租用服务器吗&#xff1f; 谈到服务器租用&#xff0c;在服务器租用市场中&#xff0c;通常比较常见的用户群体有电商、外贸和视频等网站。在这里相信很多用户都有疑问&#xff1a;租用的服务器适不适合用来建立视频网站呢&#xff1f;接下来我们一起来看看吧~ 首…...

2024年度投资策略:AI大模型和半导体国产化加速

今天分享的是AI系列深度研究报告&#xff1a;《2024年度投资策略&#xff1a;AI大模型和半导体国产化加速》。 &#xff08;报告出品方&#xff1a;东方证券&#xff09; 报告共计&#xff1a;48页 前言: 行情回顾与未来展望 电子板块涨幅转正&#xff0c;信心逐渐回归。截至…...

【Amazon】创建Amazon EFS 文件系统并将其挂载到Amazon EC2实例

文章目录 1. Amazon EFS文件系统2. Amazon EFS文件系统工作原理图3. 创建Amazon EFS 文件系统操作步骤3.1 创建安全组3.2 创建 EFS 文件系统3.3 启动 EC2 实例并挂载文件系统 4.清理资源4.1 终止 EC2 实例4.2 删除 EFS 文件系统 5.参考链接 1. Amazon EFS文件系统 Amazon EFS …...

微机原理_5

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 8086微处理器CLK引脚输入时钟信号是由(提供。 A. 8284 B. 8288 C.8287 D. 8289 2.下面4个寄存器中,不能作为间接寻址的寄存器是(…...

我的128天创作纪念日

嘿&#xff0c;大家好&#xff01;今天我想和大家聊一聊CSDN创作者128天纪念日的话题。 机缘 首先&#xff0c;让我们来谈谈机缘。作为CSDN创作者&#xff0c;我们都有自己的创作机缘。可能是因为对某个领域感兴趣&#xff0c;可能是因为想要分享自己的知识和经验&#xff0c…...

【高可用架构】Haproxy 和 Keepalived 的区别

Haproxy 和 Keepalived 的区别 1.负载均衡器介绍2.Haproxy 和 Keepalived 的基本概念和特点2.1 Haproxy2.2 Keepalived 3.Haproxy 和 Keepalived 的区别3.1 功能上的区别3.2 架构上的区别3.3 配置上的区别 4.总结 1.负载均衡器介绍 负载均衡器是一种解决高并发和高可用的常用的…...

python-opencv 人脸68点特征点检测

python-opencv 人脸68点特征点检测 不是很难&#xff0c;主要还是掉包&#xff0c;来看一下代码啊&#xff1a; # coding: utf-8 # 导包 import numpy as np import dlib import cv2class face_emotion(object):def __init__(self):# 人脸检测器对象&#xff0c;通过它拿到人…...

无线网络下VMWare+CentOS7使用桥接模式无法联通网络问题

因为最近新配了台带无线网卡的主机&#xff0c;所以准备把所有的内容都转移到新电脑上&#xff0c;其中就包括虚拟机 安装好VMWareCentOS7选择桥接模式 然后我们去修改一下网络配置 cd /etc/sysconfig/network-scripts/进入这个ifcfg-ens33文件 我们修改箭头所示内容&#xff…...

vue2.x中使用JS与路由守卫配置、vue2.x中使用TS与路由守卫的配置和vuex的配置以及TS在vue2.x中的使用说明

vue2.x 事件修饰符 <button click.stop.self"handleDelete(item)"></button>在使用 $confirm 时&#xff0c;使用 await 方式时&#xff0c;需要添加 catch 回调&#xff0c;否则无法获取 $confirm 关闭和取消时的标识值&#xff0c;并且后续代码停止执…...

C语言第三十二弹---打印整数二进制的奇数位和偶数位

使用C语言打印整数二进制的奇数位和偶数位。 思路&#xff1a;分别实现奇数位和偶数位&#xff0c;那么二进制只有0 和 1 那么如何判断一个数的二进制位是0还是1呢?那我们就可以使用位操作符&与1比较&#xff0c;都是1证明该二进制位是1&#xff0c;为0证明该二进制位是0…...

车载电子电器架构 ——电子电气架构设计方案概述

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文1万多字,认证码字,认真看!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…...

《C++PrimePlus》第10章 对象和类

10.1 过程性编程和面向对象编程 10.2 抽象和类 10.3 类的构造函数和析构函数 类的定义和使用&#xff08;买卖股票&#xff09; 头文件stock10.h #ifndef __STOCK00__H__ #define __STOCK00__H__#include <string>class Stock { // pravate的内容只能通过public访问 p…...

实现极坐标图表QPolarChart的角度轴范围是[0,360]时,0度在水平右侧

目录 参考角度轴范围是[0,360]时&#xff0c;0度在水平右侧.h.cpp 参考 Qt数据可视化(QPolarChart雷达图) 默认QPolarChart的范围是[0,360]时&#xff0c;0度在垂直上方 如官方例子QValueAxis角度轴范围是[-100,100] 角度轴范围是[0,360]时&#xff0c;0度在水平右侧 原理&am…...

讲述 什么是鸿蒙 为什么需要鸿蒙 为什么要学习鸿蒙

首先 我们为什么要学习鸿蒙开发&#xff1f; 因为 鸿蒙发展前景巨大 鸿蒙自发布依赖 一直受社会各界关注 强两百的 App厂商 大部分接受了与鸿蒙的合作 硬件也有非常多与鸿蒙合作的厂商 鸿蒙的合作企业基本已经覆盖整个互联网客户的主流需求 所以鸿蒙的崛起不过是早晚的问题 …...

从U-Boot到Kernel:RK3588 GPIO早期初始化的实战与演进

1. 为什么需要在U-Boot阶段初始化GPIO&#xff1f; 最近在调试RK3588开发板时&#xff0c;遇到了一个典型场景&#xff1a;板载的LED需要在系统启动最早阶段就亮起&#xff0c;作为硬件自检指示灯。按照传统做法&#xff0c;这个功能本该在Linux内核启动后由驱动实现&#xff0…...

高光谱成像基础(完)光谱融合(Spectral Fusion)镀

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单&#xff0c;下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try: ks Ks(KS_ARCH_X86, KS_MODE_64) encoding, count ks.…...

职业倦怠解药:软件测试从业者如何保持长期动力

测试工程师的倦怠困局在敏捷开发与持续交付的浪潮中&#xff0c;软件测试工程师长期面临三重压力&#xff1a;技术迭代焦虑&#xff08;AI测试工具每月更新&#xff09;、价值隐形化&#xff08;自动化脚本掩盖人工贡献&#xff09;和责任错配&#xff08;线上事故归咎测试环节…...

工业物联网通信困境:如何用j2mod Java Modbus库构建高效设备通信系统

工业物联网通信困境&#xff1a;如何用j2mod Java Modbus库构建高效设备通信系统 【免费下载链接】j2mod Enhanced Modbus library implemented in the Java programming language 项目地址: https://gitcode.com/gh_mirrors/j2/j2mod 在工业自动化和物联网系统开发中&a…...

AI大模型岗位全解析:小白也能入行的收藏指南!

本文全面解析AI大模型行业岗位&#xff0c;涵盖核心技术岗&#xff08;高薪、高壁垒&#xff09;、工程与平台岗&#xff08;落地关键、需求大&#xff09;、产品与应用岗&#xff08;懂业务、好入行&#xff09;以及入门与服务岗&#xff08;零基础友好&#xff09;。详细介绍…...

GHelper终极指南:华硕笔记本轻量级性能控制工具完全解析

GHelper终极指南&#xff1a;华硕笔记本轻量级性能控制工具完全解析 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...

Lychee Rerank MM免配置教程:绕过HuggingFace下载直启Qwen2.5-VL重排序服务

Lychee Rerank MM免配置教程&#xff1a;绕过HuggingFace下载直启Qwen2.5-VL重排序服务 1. 引言&#xff1a;为什么需要免配置方案 如果你曾经尝试部署多模态AI模型&#xff0c;一定遇到过这样的烦恼&#xff1a;从HuggingFace下载几个GB的模型文件&#xff0c;网络不稳定导致…...

ComfyUI-AnimateDiff插件常见报错排查与修复指南

1. ComfyUI-AnimateDiff插件报错排查指南 最近在折腾ComfyUI-AnimateDiff插件时&#xff0c;遇到了不少让人头疼的报错。这个插件确实强大&#xff0c;能做出很酷的动画效果&#xff0c;但兼容性问题也确实不少。今天我就把常见的报错类型和解决方法整理出来&#xff0c;希望能…...

多模态入门新选择:ViLT模型实战,从文本处理到图像理解的统一Transformer玩法

多模态入门新选择&#xff1a;ViLT模型实战&#xff0c;从文本处理到图像理解的统一Transformer玩法 当你第一次听说多模态学习时&#xff0c;脑海中可能会浮现出复杂的双流架构、繁琐的区域特征提取&#xff0c;以及让人望而生畏的计算资源需求。这正是大多数Vision-and-Langu…...

QQ截图独立版深度技术解析:从逆向工程到多引擎OCR架构完全指南

QQ截图独立版深度技术解析&#xff1a;从逆向工程到多引擎OCR架构完全指南 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot Q…...