attention机制中的注意力图怎么画

您所在的位置:网站首页 热力图什么意思 attention机制中的注意力图怎么画

attention机制中的注意力图怎么画

2023-08-27 00:11| 来源: 网络整理| 查看: 265

657af4cd3b84de27ca70db5814f8ca87.png

什么是视觉中的注意力机制?

计算机视觉(computer vision)中的注意力机制(attention)的基本思想就是想让系统学会注意力——能够忽略无关信息而关注重点信息。

近几年来,深度学习与视觉注意力机制结合的研究工作,大多数是集中于使用掩码(mask)来形成注意力机制。掩码的原理在于通过另一层新的权重,将图片数据中关键的特征标识出来,通过学习训练,让深度神经网络学到每一张新图片中需要关注的区域,也就形成了注意力。

注意力机制一种是软注意力(soft attention),另一种则是强注意力(hard attention)。

软注意力的关键点在于,这种注意力更关注区域或者通道,而且软注意力是确定性的注意力,学习完成后直接可以通过网络生成,最关键的地方是软注意力是可微的,这是一个非常重要的地方。可以微分的注意力就可以通过神经网络算出梯度并且前向传播和后向反馈来学习得到注意力的权重。 强注意力与软注意力不同点在于,首先强注意力是更加关注点,也就是图像中的每个点都有可能延伸出注意力,同时强注意力是一个随机的预测过程,更强调动态变化。当然,最关键是强注意力是一个不可微的注意力,训练过程往往是通过增强学习(reinforcement learning)来完成的。

在计算机视觉中,很多领域的相关工作(例如,分类、检测、分割、生成模型、视频处理等)都在使用Soft Attention,这些工作也衍生了很多不同的Soft Attention使用方法。这些方法共同的部分都是利用相关特征学习权重分布,再用学出来的权重施加在特征之上进一步提取相关知识。 不过施加权重的方式略有差别,可以总结如下:

加权可以作用在原图上; 加权可以作用在空间尺度上,给不同空间区域加权; 加权可以作用在Channel尺度上,给不同通道特征加权; 加权可以作用在不同时刻历史特征上,结合循环结构添加权重,例如机器翻译,或者视频相关的工作。

这次的文章我们主要来关注视觉应用中的Self-attention机制及其应用——Non-local网络模块。

1. 视觉应用中的self-attention机制 1.1 Self-attention机制

由于卷积核作用的感受野是局部的,要经过累积很多层之后才能把整个图像不同部分的区域关联起来。所以在会议CVPR2018上Hu J等人提出了SENet,从特征通道层面上统计图像的全局信息(以后会详细介绍,请持续关注公众号)。这里,我们分享另一种特殊形式的Soft Attention —— Self Attention。

Self-Attention是从NLP中借鉴过来的思想,因此仍然保留了Query, Key和Value等名称。下图是self-attention的基本结构,feature maps是由基本的深度卷积网络得到的特征图,如ResNet、Xception等,这些基本的深度卷积网络被称为backbone,通常将最后ResNet的两个下采样层去除使获得的特征图是原输入图像的1/8大小。

ae1bc4bda444ba3a134d10c2262d57ac.png

Self-attention结构自上而下分为三个分支,分别是query、key和value。计算时通常分为三步:

第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等; 第二步一般是使用一个softmax函数对这些权重进行归一化; 第三步将权重和相应的键值value进行加权求和得到最后的attention。

下面我们通过代码讲述self-attention的原理。

class Self_Attn(nn.Module): """ Self attention Layer""" def __init__(self,in_dim,activation): super(Self_Attn,self).__init__() self.chanel_in = in_dim self.activation = activation self.query_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim//8 , kernel_size= 1) self.key_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim//8 , kernel_size= 1) self.value_conv = nn.Conv2d(in_channels = in_dim , out_channels =


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3