【论文解读】Attentional Feature Fusion

news/2024/5/8 7:27:38/文章来源:https://blog.csdn.net/weixin_46428351/article/details/127893678

【论文解读】Attentional Feature Fusion

  • 一、研究背景
  • 二、Multi-scale Channel Attention Module (MS-CAM)
  • 三、Attentional Feature Fusion(AFF)
  • 四、Iterative Attentional Feature Fusion(IAFF)
  • 五、实例:替换ResNet, FPN和InceptionNet中的特征融合
  • 六、实验
    • 1数据集及实验设置
    • 2 消融实验
    • 3 对比实验

首先附上论文地址和代码:
论文地址:https://ieeexplore.ieee.org/document/9423114
代码地址:https://github.com/YimianDai/open-aff

一、研究背景

特征融合是提高CNN表达能力的一种手段,它将来自不同层次或分支的特征进行组合。尽管特征融合在现代网络中很流行,但大多数关于特征融合的工作都专注于构建复杂的路径来组合不同核、组或层中的特征,特征融合方法很少被提及。现有的特征融合的方法通常是简单的线性的操作(例如:求和或者拼接),但这仅仅提供了特征映射的固定线性聚合,完全不知道这种组合是否适合特定的对象,所以可能不是最佳的选择。

自SKNet、ResNeSt出现后就出现了非线性的特征融合方法,但他们普遍存在一下三个问题:

1.缺乏一种能够统一不同特征融合场景的通用方法尽管各种特征融合实现的场景不同(同层、short skip connection、long skip connection),但其面临的挑战都是相同的,本质上就是如何将不同规模的特征进行集成以获得更好的性能,然而现在没有一种能够克服语义不一致、有效集成不同规模特征、在各种网络场景中持续提高融合特征的质量的模块。
2.简单的特征初始整合方法特征送入注意力模块时往往被直接相加,然而在特征融合中,除了注意力模块的设计之外,特征的初始整合方法作为输入对融合权重的质量有很大的影响。考虑到这些特征在规模、语义上的不一致,简单的整合方法可能会导致初始特征成为好的特征融合的瓶颈。
3.上下文信息聚合尺度有偏差图像中的目标在大小上有很大的变化,SKNet和ResNeSt中的融合权重是通过全局通道注意机制生成的,对于分布更全局的信息来说这样的方法会获得更可观的结果,但当目标是小目标时就会削弱小目标的特征。需要一个可以动态自适应地能感知上下文尺度的网络来融合接收到的特征。
  • 文章贡献:

1、提出一种多尺度通道注意力模块(MS-CAM)。弥补不同尺度间的特征不一致,实现注意特征融合。

作者观察到:尺度并不是空间注意力的专属问题,通过改变空间池化的尺寸,通道注意力也可以具有除全局外的尺度。MS-CAM通过沿通道维度聚合多尺度上下文信息,可以同时强调分布更全局的大对象和分布更局部的小对象,方便网络在极端尺度变化下识别和检测对象。

2、提出了一种注意力特征融合模块(AFF)。适用于大多数常见场景,并解决上下文聚合和初始特征集成问题。
3、提出了一种迭代注意力特征融合模块(IAFF)。将初始特征融合与另一个注意力模块交替集成。

二、Multi-scale Channel Attention Module (MS-CAM)

核心思想:通过改变空间池化的大小,可以在多个尺度上实现通道注意力

MS-CAM的不同之处:

  1. 为了让MS-CAM尽可能轻量化,在注意力模块内将局部上下文信息加到全局上下文信息中。
  2. 通过逐点卷积来关注通道的尺度问题而不是大小不同的卷积核,针对每个空间位置按点计算通道交互。
    在这里插入图片描述

如图所示为MS-CAM的框图,图中X表示输入特征,X’表示输出特征,由局部+全局构成,并使用点卷积point-wise convolution (PWConv)

local channel context:在这里插入图片描述
式中PWConv1的核大小为C×C/r×1×1,PWConv2的核大小为C/r×C×1×1。B表示BN层,在这里插入图片描述表示ReLU。

经MS-CAM细化后的特征:
在这里插入图片描述
注意:上图中的+表示相加操作,由于两个分支的尺寸不同,这里需要广播操作。

代码实现如下:

class MS_CAM(nn.Module):'''单特征进行通道注意力加权,作用类似SE模块'''def __init__(self, channels=64, r=4):super(MS_CAM, self).__init__()inter_channels = int(channels // r)# 局部注意力self.local_att = nn.Sequential(nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)# 全局注意力self.global_att = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)self.sigmoid = nn.Sigmoid()def forward(self, x):xl = self.local_att(x)xg = self.global_att(x)xlg = xl + xgwei = self.sigmoid(xlg)return x * wei

三、Attentional Feature Fusion(AFF)

在这里插入图片描述
X、Y是两个感受野大小不同的特征映射,假设Y的感受野更大。

在这里插入图片描述表示像素级求和,作为初始特征。Z表示融合后的特征。上图所示特征融合过程如下公式:
在这里插入图片描述
虚线箭头:表示1-M(X+Y),使网络进行soft selection,通过训练确定各自的权重.

除此以外,作者列出了多中特征融合方式,如下图所示:
在这里插入图片描述
“soft selection”类型,利用两种特征作为指导,涉及初始特征的集成问题

代码实现如下:

class AFF(nn.Module):'''多特征融合 AFF'''def __init__(self, channels=64, r=4):super(AFF, self).__init__()inter_channels = int(channels // r)# 局部注意力self.local_att = nn.Sequential(nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)# 全局注意力self.global_att = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)self.sigmoid = nn.Sigmoid()def forward(self, x, residual):xa = x + residualxl = self.local_att(xa)xg = self.global_att(xa)xlg = xl + xgwei = self.sigmoid(xlg)xo = x * wei + residual * (1 - wei)return xo

四、Iterative Attentional Feature Fusion(IAFF)

为了解决了初始特征集成的难题,作者提出迭代注意力特征融合,使用注意力特征融合后的特征作为初始特征的集成。具体过程如下图所示:
在这里插入图片描述
特征输出:在这里插入图片描述
与AFF的不同点:

  1. AFF中:初始特征集成选取了简单的像素级相加的方式
  2. IAFF中:初始特征继承如下公式所示:通过计算经注意力加权的特征作为初始特征在这里插入图片描述

代码实现如下:

class iAFF(nn.Module):'''多特征融合 iAFF'''def __init__(self, channels=64, r=4):super(iAFF, self).__init__()inter_channels = int(channels // r)# 局部注意力self.local_att = nn.Sequential(nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)# 全局注意力self.global_att = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)# 第二次局部注意力self.local_att2 = nn.Sequential(nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)# 第二次全局注意力self.global_att2 = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(channels, inter_channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(inter_channels),nn.ReLU(inplace=True),nn.Conv2d(inter_channels, channels, kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(channels),)self.sigmoid = nn.Sigmoid()def forward(self, x, residual):xa = x + residualxl = self.local_att(xa)xg = self.global_att(xa)xlg = xl + xgwei = self.sigmoid(xlg)xi = x * wei + residual * (1 - wei)xl2 = self.local_att2(xi)xg2 = self.global_att(xi)xlg2 = xl2 + xg2wei2 = self.sigmoid(xlg2)xo = x * wei2 + residual * (1 - wei2)return xo

五、实例:替换ResNet, FPN和InceptionNet中的特征融合

这三种网络分别模拟了不同的融合场景。

网络场景
ResNetshort skip connection
FPNlong skip connection
InceptionNetsame layer

替代方式:

网络场景
ResNet相加替换为AFF/IAFF
FPN相加替换为AFF/IAFF
InceptionNet拼接替换为AFF/IAFF

六、实验

1数据集及实验设置

数据集:图像分类:CIFAR-100、ImageNet;语义分割:StopSign(一个COCO子集)
实验设置:
在这里插入图片描述

2 消融实验

1)Multi-Scale Context Aggregation的影响
为验证多尺度上下文聚合的有效性,作者建立了两个消融模块Global+Global和Local+Local,如下图所示,两个上下文聚合分支的尺度设置为相同的,要么是全局的,要么是局部的。作者提出的是Global+Local。
在这里插入图片描述
实验结果如下:
在这里插入图片描述可以看出,作者所使用的全局+局部的效果是最好的。

2)Feature Integration Type的影响
不同的特征融合方式在第三部分介绍过,下边给出作者所设计的对应的模块示意图。
在这里插入图片描述
具体的实验结果如下:
在这里插入图片描述
从中得到的结论有:

  • 与线性方法(相加和拼接)相比,具有注意机制的非线性融合策略具有更好的性能;
  • fully上下文感知+selection策略始终优于其他策略,应作为首选;
  • 多数情况下IAFF优于其他大多数融合方式。

进而证明了早期的融合质量对注意特征融合有很大的影响,而另一个层次的注意特征融合可以进一步提高性能。

3)对目标定位和小目标识别的影响

作者将将GradCAM应用于ResNet-50、SENet-50和AFF-ResNet-50,获得在ImageNet数据集上的分类结果热图。
在这里插入图片描述
在这里插入图片描述
从中可以看出:

  • AFF-ResNet-50:参与区域与标记对象高度重叠,说明对对象的定位和利用对象区域的特征有很好的学习能力;
  • ResNet-50:定位能力相对较差,很多情况下会导致被关注区域的中心位置错位;
  • SENet-50:能够定位真实的物体,但参与的区域过大,包括许多背景,SENet-50只利用了全局通道注意力,对全局尺度的上下文有偏差,而MS-CAM还聚合了局部通道上下文,有助于网络关注目标而较少的关注背景,也有利于小目标的识别。

3 对比实验

为了证明所提出的注意特征融合替代原始的融合操作可以提高网络性能,基于相同主干网络比较了AFF和iAFF模块与其他注意模块在不同特征融合场景下的性能。
在这里插入图片描述
从中可以看出:

  • 集成了AFF或IAFF的网络在所有场景下的性能都更好,表明所提出的(迭代)注意特征融合方法不仅具有优越的性能,而且具有良好的通用性。这种优越的性能来自于所提出的注意力模块内的多尺度通道上下文聚合。
  • IAFF比AFF具有更高的性能。
  • 使用AFF或iAFF模块取代简单的相加或拼接可以获得更有效的网络。在B中,IAFF-ResNet只需要54%的参数就可以达到ResNet的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[附源码]java毕业设计价格公示系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Ajax进阶】跨域和JSONP的学习

✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录了解同源策略和跨域  同源策略    什么是同源    什么是同源策略跨域    什么是…

调优工具常用命令

语法格式 mysqldumpslow [ OPTS... ] [ LOGS... ] //命令行格式常用到的格式组合 -s 表示按照何种方式排序c 访问次数l 锁定时间r 返回记录t 查询时间al 平均锁定时间ar 平均返回记录数at 平均查询时间 -t 返回前面多少条数据 -g 后边搭配一个正则匹配模式,大小写…

Opencv——直方图、掩膜、直方图均衡化详细介绍及代码实现

一、图像直方图 1.1 定义: 图像直方图是图像的基本属性之一,也是反映图像像素数据分布的统计学特征,其横坐标代表了图像像素点在[0,255]范围中,纵坐标代表图像像素点出现的个数或百分比。如图: 1.2 函数:…

2023年前端开发趋势未来可期

☆ 对于很多质疑,很多不解,本文将从 △ 目前企业内前端开发职业的占比; △ 目前业内开发语言的受欢迎程度; △ 近期社区问答活跃度; 等维度来说明目前前端这个职业的所处位置。 ☆ 还有强硬的干货,通过深入…

多层串联拼接网络

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

什么是JUC

什么是JUC JUC指的是:Java里的三个包 java.util.concurrentjava.util.concurrent.atomic:原子性java.util.concurrent.locks:lock锁回顾线程和进程 进程 程序执行的一次过程,一个进程包含一个或多个线程。进程是资源分配的单位 …

UE4 回合游戏项目 17- 进入指定区域触发战斗事件

在上一节(UE4 回合游戏项目 16- 控制玩家)基础上,增加角色走进指定区域从而触发战斗场景的功能 主要思想是添加一个碰撞区域,当玩家与该区域碰撞时,触发战斗事件 效果: 步骤: 1.新建蓝图类 选…

Allegro给各种形式的板框导弧操作指导

Allegro给各种形式的板框导弧操作指导 Allegro可以给板框导弧,让加工出来的板框更加圆滑,具体操作步骤如下 板框是line形式的 选择Manufacture-Drafting-Fillet命令 在Options里面Radius输出导弧的半径,比如78.74 框选两个线段的部分 完成后的效果如下图 框选4个角落,…

PCB Layout爬电距离、电气间隙如何确定-安规

PCB Layout爬电距离、电气间隙如何确定 爬电距离:沿绝缘表面测得的两个导电零部件之间或导电零部件与设备防护界面之间的最短路径。 电气间隙:在两个导电零部件之间或导电零部件与设备防护界面之间测得的最短空间距离。即在保证电气性能稳定和安全的情况…

用python就获取到照片拍摄时的详细位置【源码公开】

文章目录一.引言1.读取照片信息,获取坐标2.通过baidu Map的API将GPS信息转换成地址。二.源码附上!!!注意事项一.引言 先看获取到的效果 拍摄时间:2021:12:18 16:22:13 照片拍摄地址:(内蒙古自治区包头市昆都仑区, 内…

广和通5G AIoT模组引领亮相2022国际物联网展(IOTE),智赋行业数字化新价值

11月15-17日,2022国际物联网展(IOTE)于深圳盛大启幕,本届展会汇聚众多物联网行业大咖,共同展示并探讨物联网产业链的创新实践与成果。广和通以“5GAIoT深度融合,创新智造未来”为主题亮相现场。本次广和通展…

2.10.2版本的青龙升级2.10.13及2.11.3版本的教程

重要提醒: 这个教程仅限使用我下面这个命令搭建的青龙面板使用 docker run -dit \--name QL \--hostname QL \--restart always \-p 5700:5700 \-v $PWD/QL/config:/ql/config \-v $PWD/QL/log:/ql/log \-v $PWD/QL/db:/ql/db \-v $PWD/QL/scripts:/ql/scripts \-…

HTML知识点总结篇(一)

src和href的区别 作用结果不同 src用于替换当前内容href用于在引用资源和当前文档之间建立链接 请求资源类型不同 在请求src资源时,会将其指向的资源下载并应用到文档中。常用于img/iframe/input/style/scripthref常用于建立当前元素和文档之间的链接。常用的有lin…

【EC200U】GPS定位

EC200U GPS定位GNSS模块quecgnss - 内置GNSSGNSS 功能初始化GNSS 工作状态获取GNSS开关GNSS定位数据获取实测案例拓展当前互联网地图的坐标系现状地球坐标 (WGS84)火星坐标 (GCJ-02)也叫国测局坐标系百度坐标 (BD-09)coordtransform 坐标转换EC系列东西很多,网上资料…

高精度算法【加减乘除】

全文目录😍 前言😀 高精度加法🤔 操作步骤😵‍💫 代码模板😀高精度减法🤔操作步骤😵‍💫 代码模板😀高精度乘法🤔操作步骤😵‍&#x…

基于SSM花卉商城设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

记一道前端高难度面试题

目录 提问:如何让下面的这行代码成立 1.错误原因 2.思路 3.解题 4.小结 提问:如何让下面的这行代码成立 var [a,b] {a:1,b:2} 直接运行会报错,报错信息如下: Uncaught TypeError: {(intermediate value)(intermediate valu…

轻松学会jQuery选择器的用法

文章目录⛳️ 选择器✨ 属性选择器✨ 包含选择器✨ 位置选择器✨ 过滤选择器✨ 反向选择器⛳️ 快速投票⛳️ 选择器 本篇重点讲解jQuery中丰富的选择器,以及他们的基本用法。CSS的选择器均可以用jQuery的$进行选择,部分浏览器对CSS3的选择器支持不全&am…

【Pytorch with fastai】第 6 章 :其他计算机视觉问题

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…