vit细粒度图像分类(九)RAMS-Trans学习笔记

1.摘要

在细粒度图像识别(FGIR)中,区域注意力的定位和放大是一个重要因素,基于卷积神经网络(cnn)的方法对此进行了大量探索。近年来发展起来的视觉变压器(ViT)在计算机视觉任务中取得了可喜的成果。与cnn相比,图像序列化是一种全新的方式。然而,ViT的感受野大小有限,由于其patch的大小固定,缺乏像cnn那样的局部关注,并且无法生成多尺度特征来学习判别区域关注。
为了便于在没有框/部分注释的情况下学习判别区域注意,我们使用注意权值的强度来衡量原始图像对应的patch令牌的重要性。我们提出了递归注意多尺度变压器(RAMS-Trans),它利用变压器的自注意以多尺度方式递归学习判别区域注意。
具体来说,我们的方法的核心是动态补丁建议模块(DPPM)引导区域放大,以完成多尺度图像补丁的集成。DPPM从全尺寸图像斑块开始,通过在每个尺度上生成的注意力权重的强度作为指标,迭代地扩大区域注意力,从全局到局部生成新的斑块。我们的方法只需要ViT本身的注意力权重,并且可以很容易地进行端到端训练。
大量的实验表明,除了高效的CNN模型外,ram - trans的性能优于并发作品,在三个基准数据集上取得了最先进的结果。

2.问题

细粒度图像识别一直是一个具有挑战性的问题。目前大多数方法都是由卷积神经网络(cnn)主导的。与传统的图像分类问题不同,FGIR存在类内方差大、类间方差小的问题。因此,FGIR方法需要能够识别和定位图像中的区域注意力,这对分类至关重要。FGIR有一类方法称为基于零件的方法[2,36],其中一些方法使用额外的监督信息,如边界框/零件注释来定位关键区域。然而,标记边界框/部件注释是一项需要大量资源的劳动密集型任务。如何利用模型自身产生的有效信息进行区域注意力定位和放大,是FGIR必须面对的研究方向之一。

2.1发现

cnn的有效性无需在此进一步解释。然而,我们需要再次强调的是,cnn有效的一个关键方面是其翻译不变性和局部特征表示能力。随着深度的增加,cnn会不断下采样,同时模型的接受域也会增加,从而可以同时利用feature map的全局和局部信息。例如,在VggNet[29]和ResNet[17]等网络中,底层卷积的接受场较小,具有更多的局部信息,而高卷积的接受场较大,具有更多的全局信息。作品[41]和[20]将这一特性用于FGIR。一些作品利用了CNN本身特征图的注意属性,如[40]和[35]利用图像特征的注意图来选择区域关注。

变压器[32]近年来逐渐从NLP[6,7,38]的研究热点转向CV任务[9,46]。视觉变压器(vision transformer, ViT)的提出给计算机视觉带来了新的冲击,引起了业界对图像序列化的研究兴趣。ViT将分割后的图像块平坦化,并将其转换为patch令牌。与NLP中的字符序列类似,这些标记将被发送到多头自注意机制进行训练。由于补丁标记是位置不可知的,因此将添加位置嵌入以增加空间信息。然而,当ViT遇到FGIR时,有两个主要问题需要解决。首先,该模型一次处理所有的patch令牌,当数据集的复杂性增加时,例如当图像分辨率很高或图像背景混乱时,该模型可能无法有效捕获patch令牌中携带的区域注意力。

2.2发展

相反,当图像分辨率较低时,这种固定的patch大小更容易使模型丢失局部信息。其次,ViT与cnn的不同之处在于,补丁令牌的长度不会随着其编码器块的增加而改变,因此不能有效地扩展模型的接受域。因此,对于fgil,我们可以做的不仅仅是将平整的原始图像块输入到Transformer中。如果我们借鉴cnn的特点,在模型中引入对局部区域的关注,即扩展有效接受野,则模型的识别性能有可能进一步提高。那么我们就遇到了一个非常重要的问题,如何在注重利用全局信息的ViT中发掘和发现局部信息?最新的transferg[16]给了我们一个很好的答案,那就是利用ViT固有的注意力权重。无论是在变压器的NLP领域还是在ViT训练中,大多数工作都只是简单地要求使用最后一层分类令牌信息,丢弃了看似附属的注意权值。将最后一层变压器前的所有注意权值相乘得到patch令牌的重要性排序,然后将选中的令牌与全局分类令牌作为输入序列连接到最后一层变压器。然而,这种硬注意过滤在两种情况下容易失败,一种是在图像分辨率小的情况下,另一种是在数据集的高复杂性的情况下。在前一种情况下,许多重要的本地信息不容易获得,如果此时必须过滤掉大多数令牌信息,则很可能会失去分类性能。在后一种情况下,当注意机制失效时,模型很容易根据不正确的令牌信息做出错误的判断。

2.3创新

通过初步的可视化实验,我们发现注意权重的强度可以直观地与斑块包含目标物体的程度相关。为此,我们提出了递归注意多尺度变压器(RAMS-Trans),它利用变压器的自注意机制以多尺度方式递归学习区别区域注意。具体来说,该方法的核心是提出的动态补丁建议模块(DPPM),该模块旨在自适应地为每张图像选择最具判别性的区域。

  • DPPM从完整的图像斑块开始,通过在每个尺度上生成的注意力权重的强度作为指标,将区域注意力从全局扩展到局部生成新的斑块。细尺度网络以循环方式将前一尺度放大的趋势区域作为输入。•我们从序列到序列学习的角度重新表述了FGIR问题,并设计了一种新的可视化变压器架构,即循环注意多尺度变压器(RAMS-Trans)。它结合了cnn在扩大接受域、加强局部性方面的优势,以及transformer在利用全局信息方面的优势。
  • •作为一个实例,我们利用变压器框架,特别是使用多头自关注权重来定位和放大感兴趣的区域,通过顺序化图像来实现我们完全关注的特征表示。
  • •广泛的实验表明,与传统的cnn相比,我们的RAMS-Trans模型可以学习到更好的特征表示,并在三个流行的FGIR基准(CUB-200-2011, Stanford Dogs和iNaturalist2017)上并行工作。

2.4补充

CNN based Fine-grained image recognition

FGIR可分为定位分类子网络、端到端特征编码和外部信息三个方向,其中前两个方向是本节的主要内容。根据是否利用边界框/部分注释信息,将第一种方法分为强监督[2,23,36]和弱监督[15]。这类方法通过训练有监督或弱监督的定位子网络来定位关键部件区域。然后,分类子网利用定位子网捕获的细粒度区域信息,进一步提高分类能力。mask - cnn[36]基于部位标注,利用FCN对关键部位(头部、躯干)进行局部化,生成物体/部位加权的蒙版。然而,获取零件注释会增加额外的高额标记成本。许多方法使用注意机制来设置特定的子网络结构,以便仅使用图像级注释来进行分类。第二种方法通常设计端到端模型,将判别特征编码为高阶信息。从双线性池[24]到紧凑核池[13],许多工作使用不同的方法,如设计核模块[5]或特殊损失函数[42]来降低高阶特征的维数。然而,这些方法很难从全局特征视图中获得精细的方差,很难超越以前的方法。

与我们的工作非常接近的一种方法是RA-CNN[12],其共同点是在两个尺度的作用下学习区域特征。然而,我们与RA-CNN有以下两个关键区别。首先,我们不需要额外的参数来学习区域的坐标,我们只需要依靠变压器训练附带的注意权值来进行区域的注意学习。第二,我们不需要强迫2的精度高于1,我们是让两个量表相互学习,共同提高精度。

Transformer in Vision

受用于NLP任务的Transformer[32]的启发[6,7,38],最近出现了大量的模型,它们在计算机视觉方面严重依赖Transformer[9,46]。[3]和[46]是较早将变压器应用于目标检测的工作。ViT[9]是第一个将2D图像转换为1D patch token的作品,将其馈送到后续的变压器层进行训练,达到了与cnn图像识别相当的准确率。DeiT[31]通过引入仿真令牌对ViT[9]进行了增强,并采用知识蒸馏对CNN教师的输出进行了模拟,在大规模数据集上无需训练即可获得满意的结果。SETR[44]提出了一种纯粹基于自注意的编码器来执行语义分割。

最相关的工作是tgf[16],它也利用了对FGIR的关注。然而,有一个关键的区别。我们使用注意力权重来放大和重用区域注意力,而Transformer只过滤Transformer最后一层中的patch令牌。其次,我们提出了一种循环结构来提取和学习多尺度特征,以获得更好的视觉表现。

我们的模型在各种图像分辨率和大规模fir数据集上都很优越(见第4节)。

3.网络

3.1整体结构

循环关注多尺度变压器(RAMS-Trans)的框架。输入从全局全尺寸图像到局部区域关注(从左到右)。将变压器各层的关注权相加,生成patch mask矩阵,其中红色1表示激活patch。红色框表示已选择的补丁。请注意,线性投影、变压器层和Fc(完全连接)层是参数共享的,而CLS令牌则不是。

 众所周知,vit能够很好捕捉到图像中的可判别信息,能够确认图像中那一部分区域与任务高度相关,所以先使用vit找到这个任务高相关的区域,把它提取出来,之后再用vit重新推理一遍。

可以这样理解,你想要找一本书,第一次vit推理的作用是帮你找到一个图书馆,第二次vit帮你从图书馆中找到那本书。

固然想法很好,但是要考虑实际情况,如果那个图书馆很小,整个场馆只有十本书,那么两次vit推理就没有必要,还要考虑到推理耗费的时间对于准确率的提升是否的有性价比的。

3.2 Preliminaries: Vision Transformer

Image Tokenization

ViT的创新和关键在于它将2D图像处理成类似字符串的1D序列,然后将其馈送到由标准Transformer编码器堆叠的块中。具体来说,维特푥重塑形象,푥∈R퐻×푊×3,与某些补丁大小,变成一个2 d序列补丁푥푝,푥푝∈R푁×(푃×푃×3),H, W是原始图像的高度和宽度分别3通道的原始RGB图像的数量,和P是人为地设置补丁大小用来分割图像。在ViT中,푃的大小通常是16或32。푁为拆分后的补丁总数,푁=퐻× /푃2。然后ViT使用可训练的线性投影将矢量化的patch푥푝映射到潜在的퐶维嵌入空间中,得到patch令牌푥푝푎푡푐,其中푥푝푎푡푐∈R푁×퐶。

与BERT类似,ViT还初始化类令牌(CLS),以便在令牌化阶段进行最终分类,这些令牌将与补丁令牌连接起来,然后发送到后续的转换器层。此外,由于后续变压器输入的patch令牌是位置不可知的,图像处理依赖于每个像素的空间信息,因此ViT将位置嵌入到每个patch中,可以在后续的训练过程中不断学习:

其中푥푐푙푠∈r1x퐶,푥푝푠∈R(1+푁)×퐶分别为CLS和位置嵌入。然而,固定patch大小的fgfr图像标记化可能存在两个问题:(1)模型一次处理所有patch令牌,当数据集的复杂性增加时,例如,具有混乱的背景,模型可能无法有效捕获patch令牌中携带的区域注意力。(2)这种固定的patch大小使得模型在图像分辨率较低时更容易丢失局部信息。 

Encoder Blocks

ViT的主要结构是block,由一堆퐿Transformer的标准编码器组成。每个块由多头自注意网络(MSA)和前馈网络(FFN)组成,后者由两个完全连接的层组成。푘푡层的输出可表示为:

其中퐿푁(·)表示层归一化操作[1]。CNN图像处理的独特之处在于,随着模型深度的增加,原始图像不断被下采样,同时模型的接受野不断变大,从而可以同时利用图像的全局和局部信息。ViT与cnn的不同之处在于,随着编码器块数量的增加,patch令牌的长度不会改变,模型的接受域不能得到有效扩展,这可能会影响模型在FGIR上的精度。

3.3 Proposed Network

SCDA[35]和RA-CNN[12]的启发,我们提出了循环注意多尺度变压器(RAMS-Trans)来解决上述问题。我们以图2中的两个尺度为例。

首先,模型接受原始输入图像푥1,计算后输出各变压器层的交叉熵损失1和多头自关注权푤푙。然后将푤푙输入到DPPM中,DPPM首先输出原始图像푥1上对应的patch mask矩阵,即二值patch mask矩阵,然后根据该矩阵通过最大连通区域搜索算法得到푥1上区域关注的座标值。在第二阶段,我们通过双线性插值算法获得局部图像输入푥2,从푥1放大,通过l层编码器块重新计算得到交叉熵损失2和多头自关注权푤2。

需要强调的是,我们方法的核心是如何利用ViT本身的特征在原始图像中找到区域注意力,打破ViT因patch大小固定而产生的接受野限制,进而利用多尺度图像表示实现对物体更有效的识别。在cnn中,SCDA使用多通道特征映射的融合来实现目标的定位,从中我们得到启发,因为ViT将原始图像处理成补丁令牌供后续使用MSA和FFN计算,我们是否可以由此得到原始图像对应的每个patch的重要性푥1?由于Transformer的核心之一是MSA,因此很自然会想到使用自关注权重来尝试完成此任务。我们首先进行视觉评估:

Visual Evaluation

依靠ViT预训练附带的注意权值,就可以准确定位原始图像中的目标区域,并丢弃不相关和有噪声的区域。在图1中。,我们展示了来自CUB-200-2011、斯坦福狗和iNaturalist2017三个数据集的一些图像。我们使用在ImageNet21k上预先训练的ViT模型提取他们的注意力权重,而根本不需要对目标数据集进行微调,然后使用CAM将它们可视化[45]。在图1中,我们可以看到,仅使用原始的注意力权重,我们就可以很好地定位原始图像中的对象,并掩盖背景和噪声区域。

以上可视化过程说明了ViT在计算其MSA机制时产生的自注意权值与目标物体在原始图像中的位置有一定的相关性。

Dynamic Patch Proposal Module

我们的目标是从푁1/ 2x푁1/2补丁中自适应地选择不同数量的补丁来重组푥2。我们首先将各变压器层的关注权取为:

其中Q、K分别为查询向量和关键向量。然后正则化푤푙

其中휒是正则化因子퐸是对角矩阵。 

然后,我们建议对所有先前层的注意权值进行积分,并对所有层的修改后的注意权值递归地应用矩阵乘法,如下:

 我们计算푔中所有位置的平均值푔作为阈值来确定目标的定位位置。特别是为了提高定位能力,进一步确定区域注意力,我们设计了放大因子훼作为超参数来提高阈值: 

其中,~푀(푥,푦)是补丁掩码矩阵,(x, y)是这些푁1/2 ×푁1/2位置中的特定位置。最后,我们使用算法1提取~푀的最大连接分量,对原始图像中的区域注意力进行定位和缩放푥1。 

3.4 Implementation

我们介绍了损失函数的实现细节以及规模类令牌。

Loss Function

在训练阶段,我们的损失函数表示为多任务损失

它们是互补的。휆为平衡两种损失权重的系数,在实验中取1.0。퐿푠푠푠1表示尺度1的细粒度分类损失,퐿푠푠푠2为引导损失,用于引导模型选择更具判别性的区域。这两种损失在反向传播过程中共同作用以优化模型的性能。它使最终的收敛模型能够根据对象的整体结构特征或区域注意特征进行分类预测。

在测试阶段,我们删除了scale 2以减少大量的计算,因此我们的方法在实际应用中不会花费太长时间进行预测。

Scale-wise Class Token

在3.1节中,我们描述了类令牌是如何生成的以及它的作用,主要是与补丁令牌交换信息,最后将类信息提供给分类层。然而,在我们的框架中,原始图像的区域注意力会被定位和放大,因此在尺度之间patch令牌会不同,如果在尺度之间共享类令牌,可能会影响最终的分类性能。因此,我们提出了基于规模的类令牌,即使用不同的类令牌来适应不同规模的补丁令牌:

我们在随后的不同分辨率的实验中证明了这种设计的有效性。 

4.实验

4.1实验设置

4.1.1 数据集

CUB-200-2011[33]、Stanford Dogs[22]和iNaturalist2017[18]。

4.1.2实验细节

我们从ImageNet21k上预训练的官方ViT-B_16模型加载模型权重。在所有的实验中,我们使用SGD优化器进行优化,初始学习率为0.03,动量为0.9。我们用权重衰减0。我们使用余弦退火来调整批次大小为16的学习率。该模型总共训练了10000步,其中前500步是热身。我们通过将最短的边缩放到600来调整输入图像的大小,并随机裁剪一个448 × 448的区域进行训练。在测试中,我们使用中心裁剪将图像大小更改为448 × 448。我们将图像分割成ViT中的小块,小块大小为16 × 16。超参数훼选择为1.3。我们使用Pytorch完成了整个模型的构建,并在Tesla V-100 gpu上运行了所有实验。

4.2对比试验

4.3消融实验

4.4可视化

5.结语

在本文中,我们提出了一种新的循环关注多尺度变压器(RAMS-Trans)架构,该架构结合了cnn在扩大有效接受场、加强局域性方面的优势,以及变压器在利用全局信息方面的优势。在没有边界框/部分注释和额外参数的情况下,RAMS-Trans使用转换器的自关注权重来衡量与原始图像对应的补丁标记的重要性,并以多尺度方式递归地学习判别区域关注。最后但并非最不重要的是,我们的方法可以很容易地在CUB-200-2011、斯坦福狗和大规模iNaturalist2017数据集中进行端到端训练,并达到最先进的水平。如何更精确地定位区域注意力,进一步提高分类精度是今后的工作方向。

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

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

相关文章

逸学区块链【solidity】真随机数

参考Get a Random Number | Chainlink Documentation 但是很贵,价格 Gas Price:当前gas价格,根据网络状况而波动。Callback gas :返回您所请求的随机值时,回调请求消耗的gas 量。验证gas :量gas 用于验证…

优质成长:新生儿补充维生素B6的关键注意事项

引言: 维生素B6,作为B族维生素的一员,对于新生儿的神经系统发育和代谢功能至关重要。本文将深入探讨维生素B6的作用、新生儿补充的必要性,以及在补充维生素B6时应该注意的事项,为父母提供科学、全面的育儿指南。 第一…

windows pm2 执行 npm脚本或执行yarn脚本遇到的问题及解决方案

环境: 在windows上启动终端来运行一个项目;通过指令npm run start来启动,但是将终端一关,就无法访问了,所以想到用pm2来管理 1. 全局安装pm2 npm i pm2 -g2. 在项目根目录执行指令(大部分兄弟的错误使用方法) pm2 st…

C++初阶:适合新手的手撕string类(模拟实现string类)

上次讲了常用的接口:C初阶:初识STL、String类接口详细讲解(万字解析) 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数(constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…

【Vue.js设计与实现】第二篇:响应系统-阅读笔记(持续更新)

从高层设计的角度去探讨框架需要关注的问题。 系列目录: 标题博客第一篇:框架设计概览【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记第二篇:响应系统【Vue.js设计与实现】第二篇:响应系统-阅读笔记第三篇&#x…

flutter开发实战-ijkplayer视频播放器功能

flutter开发实战-ijkplayer视频播放器功能 使用better_player播放器进行播放视频时候,在Android上会出现解码失败的问题,better_player使用的是video_player,video_player很多视频无法解码。最终采用ijkplayer播放器插件,在flutt…

EasyX图形库学习(二、文字输出)

目录 一、文字绘制函数 字体属性结构体:logfont 文字输出 outtextxy 在指定位置输出字符串。 ​编辑 但如果直接使用,可能有以下报错: 三种解决方案: 将一个int类型的分数,输出到图形界面上 如果直接使用: 会把score输入进去根据A…

Docker基础知识

1、什么是Docker?Docker解决了什么问题 一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。 所以引入了Docker Docker为了…

MaxKey 单点登录认证系统——登录验证流程分析

客户端依赖包 <dependency><groupId>net.unicon.cas</groupId><artifactId>cas-client-autoconfig-support</artifactId><version>2.3.0-GA</version> </dependency>未登录时 浏览器向客户端发送请求 http://localhost:8989/…

高级Java开发工程师岗位的基本职责(合集)

高级Java开发工程师岗位的基本职责1 职责&#xff1a; 1、负责区块链产品的研发&#xff0c;独立或与团队合作&#xff0c;按时保质完成软件开发项目; 2、参与产品系统设计、概要设计工作&#xff0c;核心功能的代码编写; 3、独立解决和指导其他同事处理开发中遇到的难点问题; …

Qt扩展-muParser数学公式解析

muParser数学公式解析 一、概述1. 针对速度进行了优化2. 支持的运算符3. 支持的函数4. 用户定义的常量5. 用户定义的变量6. 自定义值识别回调7. 其他功能 二、内置函数三、内置二元运算符四、三元运算符五、内置常量六、源码引入1. 源码文件2. 编译器开关1. MUP_BASETYPE2.MUP_…

Unity DOTS中的baking(三)过滤baking的输出

Unity DOTS中的baking&#xff08;三&#xff09;过滤baking的输出 默认情况下&#xff0c;在conversation world&#xff08;baker和baking system运行的环境&#xff09;下产生的所有entities和components&#xff0c;都会作为baking环节的输出。在baking结束时&#xff0c;U…

重写Sylar基于协程的服务器(5、IO协程调度模块的设计)

重写Sylar基于协程的服务器&#xff08;5、IO协程调度模块的设计&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器&#xff08;1、…

STM32--USART串口(2)串口外设

一、USART简介 可配置数据位&#xff1a;不需要校验就是8位&#xff0c;需要校验就选9位&#xff1b; 停止位&#xff1a;决定了帧的间隔; STM32F103C8T6USART&#xff1a;USART1挂载在APB2总线上&#xff0c;USART2和USART3挂载在APB1总线上&#xff1b; 二、USART框图 TXE…

STM32外部中断(红外传感器与旋转编码器计数案例)

文章目录 一、介绍部分简介中断系统中断执行流程STM32中断NVIC基本结构NVIC优先级分组外部中断外部中断简介外部中断基本结构外部中断的流程AFIOEXTI框图 相关外设介绍旋转编码器介绍硬件电路对射式红外传感器 二、代码实现对射式红外传感器计次连接电路封装红外传感器与中断函…

Cambalache in Ubuntu

文章目录 前言apt install flatpak这很ok快捷方式后记 前言 gtkmm4相比gtkmm3有很多改革, 代码也干净了许多, 但在windows上开发 有ui设计器那自然方便很多, 但glade又不支持gtkmm4, windows上装Cambalache很是困难. 各种问题都找不到答案.于是 我用VMware虚拟机Ubuntu20.xx安…

探索智慧文旅:科技如何提升游客体验

随着科技的迅猛发展&#xff0c;智慧文旅已成为旅游业的重要发展方向。通过运用先进的信息技术&#xff0c;智慧文旅不仅改变了传统旅游业的运营模式&#xff0c;更在提升游客体验方面取得了显著成效。本文将深入探讨科技如何助力智慧文旅提升游客体验。 一、智慧文旅的兴起与…

React详解

前言 React是一个用于构建用户界面的javaScript库&#xff0c;起源于facebook的内部项目&#xff0c;在13年f进行开源 17版本官网&#xff1a;React – A JavaScript library for building user interfaces 18版本官网&#xff1a;React 官方中文文档 特点&#xff1a; 声…

项目中使用sonar扫码代码

1.在maven的settings.xml配置 org.sonarsource.scanner.maven <profiles> <profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- Optional URL to server. D…

ubuntu20配置mysql8

首先更新软件包索引运行 sudo apt update命令。然后运行 sudo apt install mysql-server安装MySQL服务器。 安装完成后&#xff0c;MySQL服务将作为systemd服务自动启动。你可以运行 sudo systemctl status mysql命令验证MySQL服务器是否正在运行。 连接MySQL 当MySQL安装…