小马哥686
写在前面的话:本文来自于本人的一次课程作业综述,当时还是写了很久的,不想交上去就完了,所以发上来留个纪念。 将注意力机制用在计算机视觉任务上,可以有效捕捉图片中有用的区域,从而提升整体网络性能。计算机视觉领域的注意力机制主要分为两类:(1) self-attention;(2) scale attention。这两类注意力从不同的角度进行图片内容理。本文将分别就这两种注意力机制进行说明,并列举相关的文献。 注意力是人类大脑固有的一种信号处理机制。人类大脑通过快速从视觉信号中选择出需要重点关注的区域,也就是通常所说的注意力焦点,然后重点处理这些区域的细节信息。通过注意力机制可以利用有限的大脑资源从大量的信息中筛选出有价值的信息。注意力机制最初被用在深度学习任务上是在机器语言翻译领域,将源语言翻译成目标语言,目标语言中的词并非与源语言的所有词都同等相关,而是仅与特定的几个词有相关性。因此,注意力机制可以将这个词的注意力分配到这些最相关的词上。之后,[1]中提出自注意力机制 (self-attention),并将其用于Transformer模块中,极大提升了翻译模型的精度和并行性。与传统的注意力机制不同,self-attention的查询(query)和键(key)属于同一个域,计算的是同一条语句(或同一张图片)中不同位置之间的注意力分配,从而提取该语句(或图片)的特征。 [2]首先将self-attention用于视觉任务中,提出了non-local network,来捕获图片(或视频)中的长程依赖(long-range dependency)。Self-attention机制在视觉任务,如语义分割[3],生成对抗网络[4]中取得了巨大的成功。它解决了卷积神经网络的局部视野域问题,使得每个位置都可以获得全局的视野域。不过,由于在视觉任务中,像素数极多,利用所有位置来计算每个位置的attention会导致巨大的计算和显存开销;另一方面,由于self-attention简单将图像当成一个序列进行处理,没有考虑不同位置之间的相对位置关系,使得所得到的attention丧失了图像的结构信息。之后对于self-attention的一个改进方向就是,在self-attention中加入相对位置信息或绝对位置信息编码。 除了self-attention,视觉任务中另一类注意力机制为scale attention。与self-attention不同,scale attention基于每个位置本身的响应。就分类任务而言,每个位置的响应越大,则其对于最终的分类结果影响越大,那么这个位置本身的重要性就越强。根据响应大小有选择地对特征图进行强化或抑制,就可以在空间(或其他维度)上达到分配attention的目的。[5]所提出的SENet,就相当于channel-wise的attention。类似的还有GENet[6],CBAM[7]等,GENet将SENet中的channel-wise attention扩展到了spatial上,CBAM设计了串行的两个模块,分别进行channel-wise attention和spatial-wise attention的计算。另一篇工作residual attention network[8]也属于这一类attention,与SENet系列不同之处在于,本文采用bottom-up top-down形式得到spatial attention,再将其以残差的形式作用回原来的特征。这一类注意力机制仅仅基于图像中每个位置本身,对显著区域进行增强,非显著区域进行抑制,比self-attention机制更接近与人类视觉系统的注意力机制。 普通卷积将特征图的每个位置作为中心点,对该位置及其周围的位置进行加权求和,得到新的特征图上该位置对应的滤波结果,对于边缘,必要时可以用0进行填充。这一操作可以有效提取图片的局部信息。随着网络加深,卷积层不断堆叠,每个位置的视野域也越来越大,网络提取到的特征也逐渐由一些low-level的特征,如颜色、纹理,转变到一些high-level的结构信息。但是,简单通过加深网络来获取全局视野域,所带来的计算开销是很大的,并且,更深的网络会带来更大的优化难度。 Self-attention操作[2]可以有效地捕获不同位置之间的long-range dependency,每个位置的特征都由所有位置的加权求和得到,这里的权重就是attention weight。由此,每个位置都可以获取全局的视野域,并且不会造成特征图的退化(分辨率降低),这对于一些密集的预测任务,如语义分割、目标检测等,具有很大的优势。 图1展示了self-attention的网络结构。给定输入X,将两个1x1卷积分别作用于X上,得到的两个特征利用f(⋅)得到相关性矩阵,图中展示的f(⋅)为矩阵乘法。最后将相关性矩阵作用在原特征经过1x1卷积变换后的特征上。 公式(1)展示了第i个位置的相应的计算方法,其中f(⋅)为相关性函数,g(⋅)为变换函数,x_i为输入第i个位置的特征,y_i为第i个位置的输出特征,C(x)为归一化因子,一般采用总位置的个数。 由于self-attention可以有效捕获图片(或视频)中的长距离依赖,从而在不影响特征分辨率的同时获取全局的视野域,在视觉任务上引入self-attention,可以带来较大的性能提升。 论文[2]将self-attention用在视频动作识别任务上,如图2,对于视频中动作的识别,可能会跨越多帧,需要建立多帧视频之间的联系,self-attention的这种长距离依赖的特征就能有效建立多帧不同位置之间的联系。 论文[2]将self-attention用在分割任务上。由于孤立预测每个位置的类别很容易导致分错,分割任务需要结合每个位置的上下文对该位置进行分类。文章定义了所谓物体上下文(object context),即每个位置所属于的类别构成的集合,即为这个位置所属于的object context。 Object context是由不同位置的特征相似度来定义的,也就是self-attention过程中的相似度矩阵,将相似度矩阵与原特征进行相乘,即可将object context作用于该特征图。由此,文章提出了Object Context Network(OCNet),如图3。其中,base-OC为基本的self-attention模块,pyramid-OC和ASP-OC分别将self-attention与PSP模块和ASPP模块结合,在提取object context的同时,利用不同倍率的pooling操作或不同ratio的dilated convolution获取多尺度的特征,最大程度的利用context信息对原图进行分割。不过,本文虽然提出object context为每个像素及所有其他与其属于同一类的像素构成的集合,在实际操作的时候却并不是这样计算每个位置的object context的,特征上的相似性并不一定代表属于同一位置。因此,用object context来给self-attention新的解释,在说服力上还是存在一定问题的。 Scale attention是另一种注意力机制,与self-attention不同,scale attention是只基于key context的,对图像中的显著性区域进行增强,其他区域相应的进行抑制,从而使得输出的特征具有更强的区分性。这一类注意力机制的代表工作包括,residual attention network[8],squeeze-and-excite network[5],gather-and-excite network[6]以及CBAM[7]。 [8]提出,在分类网络中,网络深层比浅层更关注于被分类的物体,也就是图片的主体内容,这是因为,深层网络具有更大的视野域,可以看到更广的范围;而浅层网络只能看到每个位置及其邻域。因此,如果将网络较深层的信息作为一种mask,作用在较浅层的特征上,就能更好的增强浅层特征中对于最终分类结果有帮助的特征,抑制不相关的特征。如图5所示,将attention作为mask作用在原来特征上,得到的输出就会更加集中在对分类有帮助的区域上。 因此,文章提出一种bottom-up top-down的前向传播方法来得到图片的attention map,并且将其作用在原来的特征上,使得输出的特征有更强的区分度。图6展示了这种attention的计算方式。由于更大的视野域可以看到更多的内容,从而获得更多的attention信息,因此,作者设计了一条支路,通过快速下采样和上采样来提前获得更大的视野域,将输出的特征进行归一化后作用在原有的特征上,将作用后的特征以残差的形式加到原来的特征上,就完成了一次对原有特征的注意力增强。文章还提出了一个堆叠的网络结构,即residual attention network,中间多次采用这种attention模块进行快速下采样和上采样。 这篇文章在视觉领域开前向传播的注意力机制的先河,之后的注意力机制都是采用这种前向传播过程中得到的attention进行增强,并且一般为了优化方便,都会以残差的方式进行。 Squeeze-and-excite是另一类scale attention。与residual attention不同,squeeze-and-excite通过global pooling来获得全局的视野域,并将其作为一种指导的信息,也就是attention信息,作用到原来的特征上。 [5]提出了squeeze-and-excite network(SENet),提出了channel-wise的scale attention。特征图的每个通道对应一种滤波器的滤波结果,即图片的某种特定模式的特征。对于最终的分类结果,这些模式的重要性是不同的,有些模式更重要,因此其全局的响应更大;有些模式不相关,其全局的响应较小。通过对不同通道的特征根据其全局响应值,进行响应的增强或抑制,就可以起到在channel上进行注意力分配的作用。其网络结构如图7所示,首先对输入特征进行global pooling,即为squeeze阶段,对得到的特征进行线性变换,即为excite阶段,最后将变换后的向量通过广播,乘到原来的特征图上,就完成了对不同通道的增强或抑制。SENet在2017年的ImageNet2017的分类比赛上获得了冠军,比之前的工作有了较大的性能提升。 [6]进一步探索了squeeze-and-excite在更细的粒度上的表现,提出了gather-excite操作。SENet将每个通道的特征图通过global pooling得到一个值,本文采用了不同步长的pooling(2x,4x,8x,global),然后利用上采样将pooling后的特征插值恢复到原来大小,最后作用在原来特征图上,具体操作如图8所示。不过,实验结果显示,global pooling的性能最好,将特征区间划分得更细致虽然增加了参数,但是反而会带来性能的下降。 [1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008. [2] Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 7794-7803. [3] Yuan Y, Wang J. Ocnet: Object context network for scene parsing[J]. arXiv preprint arXiv:, 2018. [4] Zhang H, Goodfellow I, Metaxas D, et al. Self-attention generative adversarial networks[J]. arXiv preprint arXiv:, 2018. [5] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141. [6] Hu J, Shen L, Albanie S, et al. Gather-Excite: Exploiting feature context in convolutional neural networks[C]//Advances in Neural Information Processing Systems. 2018: 9401-9411. [7] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19. [8] Wang F, Jiang M, Qian C, et al. Residual attention network for image classification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 3156-3164.
冒冒爱雨雨
论文: Context-aware Attentional Pooling (CAP) for Fine-grained Visual Classification
论文认为大多数优秀的细粒度图像识别方法通过发掘目标的局部特征来辅助识别,却没有对局部信息进行标注,而是采取弱监督或无监督的方式来定位局部特征位置。而且大部分的方法采用预训练的检测器,无法很好地捕捉目标与局部特征的关系。为了能够更好地描述图片内容,需要更细致地考虑从像素到目标到场景的信息,不仅要定位局部特征/目标的位置,还要从多个维度描述其丰富且互补的特征,从而得出完整图片/目标的内容。 论文从卷积网络的角度考虑如何描述目标,提出了context-aware attentional pooling(CAP)模块,能够高效地编码局部特征的位置信息和外观信息。该模块将卷积网络输出的特征作为输入,学习调整特征中不同区域的重要性,从而得出局部区域的丰富的外观特征及其空间特征,进而进行准确的分类。 论文的主要贡献如下:
论文算法的整体流程如上图所示,输入图片,输出具体从属类别,包含3个组件(3组参数):
[图片上传失败...(image-bc43b-1644805770766)]
定义卷积网络输出的特征为 ,CAP的模块综合考虑像素级特征、小区域特征、大区域特征以及图片级特征的上下文信息进行分类。
[图片上传失败...(image-818dc8-1644805770766)]
像素级特征的上下文信息主要学习像素间的关联度 ,在计算 位置的输出时根据关联度综合所有其他像素特征,直接使用self-attention实现,特征转化使用 卷积。这一步直接对主干网络输出的特征进行操作,但没在整体流程图中体现。
为了更高效地学习上下文信息,论文在特征图 上定义不同粒度级别的基本区域,粒度级别由区域的大小决定。假设 位置上的最小的区域为 为例,可通过放大宽高衍生出一系列区域 , , 。在不同的位置产生相似的区域合集 ,得到最终的区域合集 。 覆盖了所有的位置的不同宽高比区域,可以提供全面的上下文信息,帮助在图片的不同层级提供细微特征。
按照上一步,在特征图上得到 个区域,大小从最小的 到最大的 ,论文的目标是将不同大小的区域表示为固定大小的特征,主要采用了双线性插值。定义 为坐标转换函数, 为区域坐标,对应的特征值为 ,则转换后的图片 的 坐标上的值为:
为采样函数, 为核函数,这里采用的是最原始的方法,将目标坐标映射回原图,取最近的四个点,按距离进行输出,最终得到池化后的固定特征 。
这里,论文使用全新的注意力机制来获取上下文信息,根据 与其他特征 的相似性进行加权输出,使得模型能够选择性地关注更相关的区域,从而产生更全面的上下文信息。以查询项 和一组关键词项 ,输出上下文向量 :
参数矩阵 和 用来将输入特征转换为查询项核关键项, 为非线性组合, 和 为偏置项,整体的可学习参数为 ,而注意力项 则代表两个特征之间的相似性。这样,上下文向量 能够代表区域 蕴含的上下文信息,这些信息是根据其与其他区域的相关程度获得的,整体的计算思想跟self-attention基本相似。
上下文向量 描述了区域的关键程度和特点,为了进一步加入空间排列相关的结构信息,论文将区域的上下文向量 转为区域序列(论文按上到下、左到右的顺序),输入到循环神经网络中,使用循环神经网络的隐藏单元 来表达结构特征。 区域 的中间特征可表示为 , 采用LSTM, 包含LSTM的相关参数。为了增加泛化能力和减少计算量,上下文特征 由 进行全局平均池化得到,最终输出上下文特征序列 对应的隐藏状态序列 ,后续用于分类模块中。
[图片上传失败...(image-aab286-1644805770766)]
为了进一步引导模型分辨细微的变化,论文提出可学习的池化操作,能够通过组合响应相似的隐藏层 来整合特征信息。论文借鉴NetVLAD的思想,用可导的聚类方法来对隐藏层的响应值进行转换,首先计算隐藏层响应对类簇 的相关性,再加权到类簇 的VLAD encoding中:
[图片上传失败...(image-2d95b2-1644805770766)]
每个类簇都有其可学习的参数 和 ,整体思想基于softmax,将隐藏层的响应值按softmax的权重分配到不同的类簇中。在得到所有类簇的encoding向量后,使用可学习的权值 和softmax进行归一化。因此,分类模块 的可学习参数为 。
[图片上传失败...(image-d9e014-1644805770766)]
在不同的数据集上,对不同方法进行对比。
不同主干网络下的准确率对比。
不同模块输出特征的可视化,图b是加入CAP后,主干网络输出的特征。
论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现目标的细微特征变化。除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看。
研究大学生应对压力的策略及其特点,帮助大学生摆脱心理压力的困扰,培养大学生健康的心理素质,是使大学生成为社会主义现代化建设的高素质人才的关键。下面是我给大家推荐
深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理。 目标检测可以理解为是物体识别和物体定位的综合 ,不仅仅要识别出物体
论文查重是借助论文查重系统进行的,论文作者只需要把论文上传到查重系统,系统会根据论文目录进行分段查重。 1、在查重报告中,标黄色的文字代表这段话被判断为“引用”
引用区别抄袭,最大的不同是引用的方式。是否注明引用作品的作者姓名和作品名称,至关重要。正确的引用方式如下:1.在文中注明。把引述内容置于引号内,并在引号前或后说
论文名称:Rich feature hierarchies for accurate object detection and semantic segment