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整体结构

vit细粒度图像分类(二)SwinFC 学习笔记_第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所示。
 vit细粒度图像分类(二)SwinFC 学习笔记_第2张图片

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

3.2.1 外部依赖注意力子模块 

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

vit细粒度图像分类(二)SwinFC 学习笔记_第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所示。

vit细粒度图像分类(二)SwinFC 学习笔记_第4张图片

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

vit细粒度图像分类(二)SwinFC 学习笔记_第5张图片

3.3 特征融合模块

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

vit细粒度图像分类(二)SwinFC 学习笔记_第6张图片

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

3.4 特征选择模块

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

vit细粒度图像分类(二)SwinFC 学习笔记_第7张图片

3.5 损失函数

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

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

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

4.实验

4.1实验设置

4.1.1 数据集

vit细粒度图像分类(二)SwinFC 学习笔记_第8张图片

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对比试验

vit细粒度图像分类(二)SwinFC 学习笔记_第9张图片

vit细粒度图像分类(二)SwinFC 学习笔记_第10张图片

vit细粒度图像分类(二)SwinFC 学习笔记_第11张图片

4.3消融实验

vit细粒度图像分类(二)SwinFC 学习笔记_第12张图片

vit细粒度图像分类(二)SwinFC 学习笔记_第13张图片

你可能感兴趣的:(学习,笔记,人工智能,深度学习,分类,神经网络)