vit细粒度图像分类(二)SwinFC 学习笔记

1.摘要:

针对细粒度图像类间差异小、类内差异大等问题,提出了一种基于Swin及多尺度特征融合的模型(SwinFC)。
基准骨干网络采用具有多阶段层级架构设计的Swin Transformer模型作为全新视觉特征提取器,从中获取局部和全局信息以及多尺度特征
然后在每个阶段的分支通道上嵌入融合外部依赖及跨空间注意力模块,以捕获数据样本之间的潜在相关性,同时捕捉不同空间方向上具有判别力的特征信息,进而强化网络每个阶段的信息表征。
进一步地,引入特征融合模块将每个阶段提取的特征进行多尺度融合,促使网络学习更加全面、互补且多样化的特征信息。最后构建特征选择模块来筛选重要且具有辨别力的图像块,以此增大类间差异,减小类内差异,增强模型的判别力。
实验结果表明,该方法在CUB-200-2011、NABirds和WebFG-496三个公开细粒度图像数据集上分别达到了92.5%、91.8%和 85.84%的分类准确率,性能优于大部分主流模型方法,并且与基准模型 Swin 相比,F分别提高了1.4、2.6和4.86个百分点的分类性能。

2.问题

近年来,细粒度图像分类逐渐成为计算机视觉、模式识别等领域一个热门的研究课题,其是对同属于一个基础类别下的图像进行更加细致的子类划分。细粒度图像分类重点在于区分具体对象的类别,例如鸟的种类、猫的品种、汽车的品牌等。以鸟类图像为例,同一种鸟类可以有数十种,甚至数百种不同的子类别。比如以海鸥来说,就有燕尾鸥、渔鸥、黑嘴鸥、红嘴鸥等数十种不同子类别的海鸥,这些海鸥之间的差异十分细微,因此具有很大的分类难度。与普通图像分类相比,细粒度图像的类间差异小而类内差异大,并且受到姿态、视角等诸多因素的影响,使得细粒度图像分类成为一项极具挑战性的任务。

2.1发现

为了避免繁琐的人工部位标注,目前大部分的研究主要集中在不需要额外标注信息且仅使用类别标签的弱监督细粒度图像分类任务上。细粒度图像分类的算法大致上可以分为三类,即基于特征编码的方法、基于区域定位的方法以及基于注意力的方法
基于特征编码的方法 [1] 主要通过丰富特征表示以获得更好的分类性能。与基于特征编码的方法相比,基于区域定位的方法可以精确地捕获不同子类之间的细微差异,并且具有更好的可解释性,通常可以取得更好的结果。早期基于区域定位的方法依靠部位标注来定位判别性区域,而近期的研究[2- 3] 主要采用区域提议网络(region proposalnetwork,RPN)的方法在图像上提取具有判别性区域的边界框,进而筛选出目标对象可能存在的关键区域。如Ge等人 [2] 以弱监督的方式构建互补部位模型,以检索由卷积神经网络(convolution neural network,CNN)检测到的目标部位所抑制的信息。然而,基于区域定位的方法忽略了所选区域之间的关系,并且为了能够获得正确的分类结果,其往往会促使RPN提议更大的边界框以包含大部分前景对象。当这些所选的边界框不准确且覆盖了大量的背景信息时,目标对的关键特征就很容易被混淆。此外,具有不同优化目标的RPN模块会使得骨干网络的训练难度加大,并且重用骨干网络也会使得整体算法流程复杂化。基于注意力的方法通过自注意力机制自动检测图像中具有判别性的区域,这些方法摆脱了对人工标注判别性区域的依赖,并取得了令人鼓舞的效果。如Zheng等人 [4] 提出了一种渐进式注意力方法,以在多个尺度上逐步检测具有判别性的部位。

2.2发展

最近,Dosovitskiy等人 [5]成功将纯 Transformer模型引入到计算机视觉领域中,提出vision Transformer (ViT)模型,其是一种完全基于自注意力机制来动态建模元素间关系的新兴视觉特征提取器。在大规模数据集上,无需依赖于CNN,ViT模型即可在各种各样的视觉任务中展现优异的性能。随后,Liu等人 [6] 构建一种多尺度层级Transformer架构,即Swin Transformer,并通过设计移动窗口将自注意力计算限制在不重叠的局部窗口上,以有效地建模局部信息和全局信息,从而提高模型的性能和效率。ViT模型在视觉任务上的巨大成功表明,纯 Transformer架构固有的自注意力机制可以自动检测图像中有助于视觉识别的关键部位。然而,目前很少有研究探索基于视觉Transformer的细粒度图像分类。TransFG [7] 网络作为首次在细粒度图像分类任务上研究视觉Transformer的工作,提出将ViT模型中所有原始注意力权值集成到一个注意力图中,以引导网络有效地选择具有判别性的图像块。然后将这些筛选出来的图像块输入到最后一层的Transformer模块中进行融合,最后实现了良好的分类性能。然而,ViT模型更多关注的是全局信息,而对局部信息和低级特征关注较少,由于局部信息在细粒度图像分类中起着极为重要作用,这可能会限制模型对局部关键信息的提取。此外,ViT模型遵循原始Transformer的单级柱状架构设计,并且在不同层之间,特征图始终维持固定的尺度,这不利于模型捕获更多细节信息以及多尺度细粒度的识别特征,进而限制了模型对特征信息的表达。

2.3创新

鉴于上述分析,本文提出了一种基于Swin及多尺度特征融合的细粒度图像分类模型(fine-grained imageclassification model based on Swin Transformer andmulti-scale feature fusion,SwinFC),如图1所示,基准骨干网络采用具有多阶段层级架构设计的Swin Transformer模型作为全新视觉特征提取器,以完成图像特征的级联提取,在此基础上,进一步构建融合外部依赖及跨空间注意力模块、特征融合模块以及特征选择模块,以促进模型学习更加全面、细微以及多样化的特征信息,进而增强模型的判别能力和表征能力。在仅使用类型标签的前提下,本文模型能够有效捕获目标关键部位并实现
较为理想的分类性能。主要贡献如下:
(1)利用Swin Transformer网络作为全新视觉特征提取器,从中获取局部和全局信息,建模多尺度特征;提出融合外部依赖及跨空间注意力模块(external-dependency attention and cross-space attention module,EACA),以捕获数据样本间的潜在相关性以及不同空间方向上具有判别力的特征信息,从而强化网络每个阶段的信息表征。
(2)引入特征融合模块[8](feature fusion module,FFM),以完成多尺度特征的成对融合;构建特征选择模块(feature selection module,FSM),筛选具有辨别力的图像块,以此增大类间差异,减小类内差异,增强模型判别力。
(3)在三个公开的细粒度图像数据集上进行一系列的对比实验,结果表明,本文模型的分类性能均高于大部分主流模型。

3.网络

3.1整体结构

直观来看,并不清楚网络的最终输出在哪里,这个层级损失函数我所看的论文中最早是在googlenet中,前一级损失函数是为最后的损失服务的,这里的网络选取stage2,3,4作为输入,经过处理后都进行分类,且对于stage4做了两种处理,使得stage4有两种同等级的损失,那么是以谁为主,不是很清楚。 

本文提出的SwinFC整体结构如图1所示。具体而言,采用具有层级结构的Swin Transformer骨干网络作为细粒度图像分类的全新特征提取器,以完成对视觉特征由浅入深的级联提取
然后在骨干网络每个阶段的末端增加多尺度特征融合分支(第一个阶段除外),并在每个分支的通道上嵌入融合外部依赖及跨空间注意力模块(EACA)以及特征融合模块(FFM)。将每个阶段的输出特征图并行输入到骨干网络及其分支通道上。在每个阶段的分支通道上,特征图首先被输入到EACA模块中,以挖掘特征样本间的潜在关系,同时捕捉不同空间方向上具有判别力的特征信息,进而强化网络每个阶段的信息表征。随后采用FFM模块对不同阶段的特征图进行多尺度的特征融合操作,使得高分辨率的底层特征与低分辨的高层特征能够被同时利用,从而促进网络学习更加全面、互补且多样化的特征信息。
此外,重用骨干网络最后一个阶段的多头自注意力机制来构建特征选择模块(FSM),以筛选重要且具有辨别力的图像块,并对所选图像块进行平均池化操作,接着对池化结果计算对比损失,以此增大类间特征差异的同时减小类内特征差异。
最后,用于分类预测的总损失函数由骨干网络的交叉熵损失、不同阶段的交叉熵损失以及对比损失融合而成,从而使得模型学习到更加全面的视觉表征知识,提高模型的性能收益。 

3.2 融合外部依赖及跨空间注意力模块

细粒度图像往往因其数据样本类间差异小、类内差异大而导致模型预测类别信息易混淆。如果网络能够挖掘样本间潜在的相关性,并能够有效定位到对图像分类影响较大的部位,则可以提升网络的分类性能 [12] 。基于此,本文提出了融合外部依赖及跨空间注意力模块(EACA),并将其作用于每个阶段的输出特征图,以强化网络每个阶段的信息表征。

具体而言,EACA模块由两个注意力子模块并行组成:外部依赖注意力子模块(external-dependent attention,EA)以及跨空间注意力子模块(cross-spatial attention,CA)。
将骨干网络每个阶段输出的特征图序列分别输入到EACA模块的两个子模块中,特别地,对于跨空间注意力子模块,由于其是对空间结构的建模,因此需将输出的特征图序列重塑回二维图像形式。在外部依赖注意力子模块中,利用外部依赖注意力来挖掘数据样本之间的潜在关系,使相同类别下的特征更具关联性,从而得到更具鲁棒性的特征;在跨空间注意力子模块中,聚合两个不同空间方向上的注意力,以感知空间位置信息,增强特征关注的丰富性,促进模型更加准确地定位判别性的局部区域。最后,将两个子模块的输出特征图进行相加,以得到EACA模块的输出特征图。如图2所示。
 

EA,CA两种注意力,通常来说使用注意力机制就是对输入特征进行特征增强 

3.2.1 外部依赖注意力子模块 

属于同一类别但分布在不同样本中的特征应该被一致地对待,从而捕获同类样本间的内在关联性,减少其他不同类别样本的干扰 [12] 。受此启发,构建外部依赖注意力子模块,通过引入额外的外部可学习参数来捕获样本内和样本间的相关性,促使网络学习同类样本的潜在关联性,强化模型的学习能力。外部依赖注意力子模块如图3所示。

 Conv + BN + Conv + Res ,这种操作很常见,重点是用来充当外部信息的外部记忆矩阵M,是根据数据信息生成,还是随机生成的

事实上,两个一维卷积的卷积权重 W 1 ∈ℝ C×M×3和 W 2 ∈ℝ M×C×1 都是可学习的外部记忆矩阵,共享于整个数据样本。因此,由输入特征图 X 与外部记忆矩阵W 1 乘积并正则化而来的注意力图 A 可视为独立于单个输入样本的外部依赖注意力,注意力图 A 与外部记忆组件 W 2 联合计算得到的特征图 X?则蕴含着数据样本间的潜在相关性。最后,将特征图 X 与 X?进行残差操作,以得到最终的输出结果 X e。W 1 和 W 2 为可学习的外部记忆矩阵。

3.2.2 跨空间注意力子模块

跨空间注意力子模块利用两个不同空间方向上的全局平均池化操作分别将输入特征图聚合为两个并行的方向感知特征图,然后将两个嵌入特定方向的特征图分别编码为两个并行的注意力图,每个注意力图能够捕获输入特征图沿着一个空间方向上更加细粒度的依赖关系,进而学习到更具区分性的局部细节特征。跨空间注意力子模块如图4所示。

 看着像CA注意力机制,不过CA是先获取H和W方向上的特征,然后concat连接,在经过归一化后split成两个方向上的特征权重向量,这个就没有这一步,想方法上类似。

3.3 特征融合模块

在骨干网络的不同阶段中,特征图具有不同的尺度,所包含的视觉信息重点不同。为了能够提取更加全面且互补的特征信息,本文采用了Song等人 [8] 提出的特征融合方法来构建特征融合模块(feature fusion module,FFM),以将每个阶段提取的特征进行成对融合,从而增强每个阶段的视觉表征。特征融合模块的详细结构如图5所示。

特征融合的一种方法,用的比较多。 

3.4 特征选择模块

为了定位细粒度图像分类中子类之间具有区别性的区域和细微差异,本文充分利用最后一个阶段(即Stage4)中的多头注意力来筛选更具区别性的图像块,并以此构建特征选择模块(FSM)。特征选择模块详细结构如图1左下部分所示。

3.5 损失函数

综合上述分析,本文提出的模型最终损失函数如式(16)所示:

我还是不懂层级损失函数的好处 

式中, L total 表示总损失函数, L swin 表示骨干网络的交叉熵损失函数, L i stage 表示模型的第 i 个阶段交叉熵损失函数, L con 表示对比损失函数, β i 为第 i 阶段的超参数,通过对模型第 i 阶段的损失函数进行加权来控制模型第 i 阶段对模型性能的影响程度, P 表示模型的阶段数量。 

4.实验

4.1实验设置

4.1.1 数据集

4.1.2 实验细节

实验环境为 Ubuntu 18.04.3 LTS 系统,RTX 2080 TI GPU并行训练。模型训练平台采用基于
Python编程语言的PyTorch深度学习框架。
实验中,所有图像的尺寸首先统一调整为512×512,然后再裁剪为384×384,同时采用常见的数据增强策略来扩充数据,如随机水平翻转、随机旋转等。本文采用官方 [6] 公布的Swin-B模型作为骨干网络和特征提取网络,并使用官方 [6] 发布的预训练权重对骨干网络初始化,对新增模块采用随机初始化。
所有模型使用随机梯度下降 [17](stochastic gradient descent,SGD)优化器进行训练,并
设置动量为 0.9。批处理大小设置为 32,余弦退火(cosine annealing)调整学习率。对比损失中的超参数 α设置为0.4,损失函数中最后三个阶段的超参数 {β 2 ,β 3 ,β 4 }设置为{0.4,0.6,0.8}。针对不同的数据集,本文对SwinFC模型采用不同的学习率进行训练:对于CUB-200-2011数据集,骨干网络学习率为 2E-3,新增模块学习率为5E-3;NABirds数据集和WebFG-496数据集,骨干网络和新增模块学习率为3E-2。

4.1.3 损失函数

4.2对比试验

4.3消融实验

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

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

相关文章

【CentOS】Linux 文件权限与权限修改

目录 1、Linux 中的文件属性 2、如何修改文件属性与权限 3、目录权限与文件权限的区别 4、Linux 中的文件扩展名 用户与用户组是Linux文件权限的重要组成部分。 首先,一定要明确用户与用户组的概念: Linux 一般将文件可读写的身份分为三个类别&#…

Redis 击穿、穿透、雪崩产生原因解决思路

大家都知道,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是,无论是击穿…

Qt中Widget样式表实现圆弧边框

第一步 第二步 第三步 第四步 //插入border-radius: 10px; border: 2px solid #000; 效果图

文本分类识别系统Python+卷积神经网络算法+TensorFlow+Django网页界面

一、介绍 文本分类系统,使用Python作为主要开发语言,通过选取的中文文本数据集(“体育类”, “财经类”, “房产类”, “家居类”, “教育类”, “科技类”, “时尚类”, “时政类”, “游戏类”, “娱乐类”),基于Te…

8-小程序数据promise化、共享、分包

小程序API Promise化 wx.requet 官网入口 默认情况下,小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…

云计算中的弹性是什么?

云弹性是指当客户需求增加或减少时,自动从数据中心配置和取消配置资源。这使得云资源(包括计算、存储和内存资源)能够根据需求变化快速重新分配。CPU/处理、内存、输入/输出带宽和存储容量等计算资源可以根据需要增加或减少,而不会影响系统性能。 它旨在…

归并排序和计数排序讲解

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 前言归并排序(递归)动图:代码实现以下是代码详细讲解: 归并排序非递归代码实现以下是代码详细讲解&…

c# cad2016选择封闭多段线获取多段线面积

在C#中,如果你想要通过AutoCAD .NET API来选择封闭多段线内部的其他闭合多段线并计算它们各自的面积,可以遵循以下基本步骤: 1、加载AutoCAD库: 确保你的C#项目引用了Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common…

C语言-预处理

1.C语言的编译过程: 预处理、编译、汇编、链接 gcc -E hello.c -o hello.i 1、预处理 gcc -S hello.i –o hello.s 2、编译 gcc -c hello.s -o hello.o 3、汇编 gcc hello.o -o hello_elf 4、链接 1:预编译…

浅谈WPF之样式与资源

WPF通过样式,不仅可以方便的设置控件元素的展示方式,给用户呈现多样化的体验,还简化配置,避免重复设置元素的属性,以达到节约成本,提高工作效率的目的,样式也是资源的一种表现形式。本文以一个简…

数学建模论文笔记

一、概述 1. 数学建模论文组成 论文电子版:摘要页、正文、参考文献、附录支撑材料:源程序代码以及调用说明、中间结果、支撑数据等首页:论文题目、摘要、关键词论文正文:问题重述、问题分析、模型假设、符号说明、模型建立与求解…

centos 7 增加临时路由及永久路由

centos 7 增加临时路由及永久路由 如果增加临时路由,要先安装net-tools , sudo yum install net-tools route add -net 10.1.0.0 gw 10.1.1.1 netmask 255.255.0.0 意思是增加了一条动态路由,网关10.1.1.1 ,10.1.x.x 的所有ip都走这个网关 此种方式&am…

常见OLAP对比

Olap(On-line Analytical Processing,联机分析处理):是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理&#xff…

C语言第十弹---函数(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数 1、函数的概念 2、库函数 2.1、标准库和头文件 2.2、库函数的使用方法 2.2.1、功能 2.2.2、头文件包含 2.2.3、实践 2.2.4、库函数文档的⼀般格式 …

Unity中URP下额外灯的距离衰减

文章目录 前言一、额外灯的距离衰减二、DistanceAttenuation函数的传入参数1、distanceSqr2、distanceAndSpotAttenuation3、_AdditionalLightsAttenuation4、GetPunctualLightDistanceAttenuation函数三、DistanceAttenuation函数的程序体 前言 在上一篇文章中,我…

组件冲突、data函数、组件通信

文章目录 1.组件的三大组成部分 - 注意点说明2.组件的样式冲突(用 scoped 解决)3.data是一个函数4.组件通信1.什么是组件通信?2.不同的组件关系 和 组件通信方案分类 5.prop详解prop 校验①类型校验②完整写法(类型,非…

计算机毕业设计 | SSM 凌云招聘平台(附源码)

1,绪论 人力资源是企业产生效益、创造利润的必不可少的、最重要的资源。人作为人力资源的个体可看作是一个承载着有效知识、能力的信息单元。这样的信息单元可看作是一个为企业产生价值和利润的个体。从而使得这样的信息单元所具有的信息就是一个有价值的信息。 校…

什么是SQL,什么是MYSQL?MYSQL的架构以及SQL执行语句的过程是什么?有哪些数据库的类型?一篇文章带你弄懂!

文章目录 前言一、为什么需要数据库二、数据库的相关概念1.什么是结构化查询语言 (SQL)2.什么是数据库管理系统 (DBMS)3.什么是 MySQL 数据库 三、数据库分类1.关系型数据库(SQL)2.非关系型数据库(NoSQL) 四、MYSQL架构1.各组件功…

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能…

「JavaSE」类和对象4

类和对象4 🍉内部类🍌实例内部类🍌静态内部类🍌局部内部类🍌匿名内部类 🍉总结 🍉内部类 在 Java 中,我们可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类…