张 峰,王高才
(广西大学 计算机与电子信息学院,南宁 530000)
FGVC的目的是在相同大类的物体中通过从属类别之间的细微视觉差别来区分出各种从属的对象类别,例如在狗类中准确区分吉娃娃与金毛之间的差异,FGVC常用的数据集有CUB-200-2011[1],斯坦福汽车[2],飞机[3].但由于各子类之间存在着难以区分的细微视觉差异以及各类其他影响因素(光照差异,遮挡,拍照角度等)导致不同子类之间分辨困难,使得细粒度视觉分类是一项十分具有挑战性的任务.到目前为止卷积神经网络[4,5]依旧在图像分类中占据着主导地位且卷积神经网络用于一般的图像识别技术[6]已经越来越实用且高效,但使用传统的卷积神经还是无法很好地去表示细粒度视觉分类中的细节差异,所以目前该领域的研究工作主要集中在如何区别这些细微的视觉差异上.
目前存在的部分注意力方法[7,8]将重心放在提取图像细微的差别上来获得较为准确的结果,虽然取得了一些进展,但传统单一的卷积神经网络在分类上的效果有限.目标注意力驱动的判别定位[9]方法的提出,利用了对象与部分注意力来提取局部细微的差异在区分从属类别上取得了优秀的结果.它证明了在细粒度视觉分类任务中使用多个专注于不同目标区域的深度学习模型的有效性.
目前非常多的分类方法[8,10-12]利用边界框和额外的零件注释来定位重要区域,研究者们认为细粒度视觉分类的任务关键在于开发有效的办法来准确地识别图像中的信息区域.然而获得这些密集的边框注释和部件注释是劳动密集型的,这限制了细粒度视觉分类算法在现实生活中的实用性和普适性.而弱监督学习方法[13-17]则使用弱监督学习方案来定位图像中信息丰富具有可区分子类特征的区域,这样的方法不需要具有昂贵劳动代价的注释,但如何使他们专注于正确的区域仍然值得研究.
本文提出的多分支多尺度的自注意力细粒度图像分类算法的结构如图1所示,该方法在训练阶段分为3个分支,其原始分支主要研究目标的整体特征,而AOLM需要借助该分支的原始图像特征映射来获取目标的包围盒信息.目标图像作为目标分支的输入,由于其既包含了目标的结构特征,又包含了目标的细粒度特征,因此对分类非常有帮助.然后,APPM根据目标图像的特征映射关系,提出了区分程度最大、冗余度最小的几个局部区域.零件分支将从目标图像中剪切出的零件图像发送到网络进行训练.它使网络能够在不同的尺度上学习不同部位的细粒度特征.在MMAL-net[17]的基础上,受SKNet[18]算法启发改造的Split-Attention模块被用来对多分支网络的输出结果进行自适应的权重再分配,并且多分支输出的图像结果在进入全连接层之前先通过一个SEBlock[19]来使网络关注更具有分辨特征的通道.与RA-CNN[20]不同,CNN和FC在本文的3个分支机构中的参数是共享的.因此,通过3个分支的共同学习过程,训练后的模型对不同尺度、不同部位的目标具有较好的分类能力.在测试阶段,与RACNN[21]和NTS-Net[15]不同的是,需要计算多个部分区域图像的特征向量,然后将这些向量拼接起来进行分类.经过反复实验,最好的分类性能是根据对象分支的结果简单地得到的,所以本文的方法可以减少一些计算量和推理时间,同时达到较高的准确率.本文提出的模型在CUB-200-2011,Stanford Cars以及FGVC-Aircraft数据集上具有可与世界上最好的算法相比较的性能并且优于大部分基于CNN架构的算法,本文的改进仅引入了少量参数,模型依旧具有优秀的推理速度,在本文的实验中添加了消融实验证明每个改进的有效性.
图1 多分支多尺度自注意力细粒度图像分类模型Fig.1 Structure of multi-branch and multi-scale self-attention learning model
自从AlexNet[21]诞生以来,深度卷积神经网络几乎主导了图像分类领域,接下来陆续诞生了里程碑式的Simonyan等人提出的VGGNet[5]和由Szegedy等人提出的googlenet[22],何凯明等人引入了残差连接进入卷积神经网络,使得卷积神经网络的层数大大加深,也极大地增强了卷积神经网络的性能[23].Inception-Res-V2[24]结合了goolenet的多分支卷积模块组合多尺度特征又使用了残差连接避免了网络退化的问题,并且有利于提高训练速度.结合了SENet与SKNet思想的ResNeSt[25]网络的提出将注意力机制大量引入卷积神经网络使其具有相当优秀的性能,并且并没有引入额外的计算消耗.
在模型中引入注意力转换机制的目的是让模型更加专注于那些能够区分子类的特征忽略不重要的特征.注意力机制模仿人类的视觉机制在深度学习中发挥重要的作用,也有方法[26]使用注意力来确保学生模型侧重于教师模型的歧视区域.SENet[19]通过挤压,激励给每个通道赋予权重使得模型在学习过程中关注于那些对于分类更加有帮助的通道信息,SKNet[18]使用组卷积与多分支卷积,目的是让网络自主决定所使用的卷积核的大小,调整网络卷积操作的感受野.在[21]中提出的CBAM模块结合了空间区域关注和特征图关注.CCNet[27]通过计算每个像素与同行同列像素的相似性,进行循环能够从所有像素中获取全图像的上下文信息,以生成具有密集且丰富的上下文信息的新特征图.本文的方法在树结构的每个分支上应用注意力机制,以寻找可用于区分类别的特征区域.通过SKNet[18]能够使网络自主调整感受野的特性.
这种方法训练一个有监督或弱监督的定位子网络来定位关键部位区域.然后,分类子网络利用定位子网络捕获的细粒度区域信息,进一步增强其分类能力.更早期的方法[10-12]属于完全监督方法,它们依赖于图像级的注释信息来定位语义关键区域.有的方法[12]训练了一个区域建议网络以形成信息丰富的图像部分的建议,并且将多个图像部分级别的特征串联为一个整体图像表示以实现最终的细粒度图像识别.但是如此密集的零件注释依旧会增加额外的位置标签成本.因此为了避免这种消耗一些方法[13-17]则使用了注意力机制来避免这个问题,与本文的方法一样,除了图像级标注之外不需要任何边界框标注以及零件标注.
这种方法通过开发功能强大的深层模型进行细粒度识别,直接学习更具区分性的特征表示.其中最具代表性的方法是[8],它将图像表示为来自两个双线性模型的特征的集合外积,从而对卷积激活的高阶统计量进行编码,以增强中层学习能力.由于其高模型容量,它在广泛的视觉任务上实现了明显的性能改进.然而,双线性特征的高维性仍然限制了它的进一步推广.为了解决这个问题一些方法[28,29]试图通过应用张量草图来聚集低维嵌入.它们可以降低双线性特征的维度,并获得与之相当或更高的分类精度.
注意对象定位模块是一种SCDA[30]算法的改进,SCDA使用事先预训练的模型来提取图像特征以用于细粒度图像检索任务,经过改进,ALOM尽可能提高了它的性能,ALOM先通过聚合通道维度上的特征映射来得到激活映射,然后根据激活映射来获取一个边界框,边界框内的图像则裁剪为新的图像.
本文的方法使用F∈RC×H×W来表示输入图像X在经过卷积神经网络最后一层卷积层输出的通道数为C,空间大小为H×W的特征图,并且fi是对应输出特征图通道的第i个特征映射,如公式(1)所示:
(1)
(2)
(3)
(4)
由实验结果证明了该方法在提高目标定位精度方面的有效性.这样的弱监督目标定位方法在不增加可训练参数的情况下,可以获得比Aol[31]、ADL[32]和SCDA更高的定位精度.
(5)
在SKNet[19]中提出了一种从多个核集合信息的非线性方法,以实现神经元的自适应射频大小.方法引入了一种“选择核”(SK)卷积,它由3个算子组成:分裂、融合和选择.分裂算子生成具有不同核大小的多条路径,对应于不同感受野大小的神经元.融合算子组合和聚集来自多个路径的信息,以获得选择权重的全局和综合表示.选择操作符根据选择权重聚合不同大小的核的特征地图.SK卷积在计算上可以是轻量级的,并且只会对参数和计算成本造成轻微的增加,图2所示为SK卷积的结构.受到SK卷积思想的启发,也希望在本文的方法中组合与聚集来自多个分支路径的信息,以获得选择权重的全局和综合表示.
图2 选择核卷积的结构Fig.2 Structure of selective kernel convolution
SK卷积的分裂算子在本文的模型中被替换为两个分支的结果直接输入,即M1与M2为网络第一分支与第二分支中图像在通过模型最后一层全连接层之前输出的特征图.
融合:本文的模型希望网络能够通过刺激内容自适应的调整特征图的权重,其基本思想是使用门来控制从携带不同尺度信息的多个分支流向下一层神经元的信息流.为了实现这一目标,门需要整合来自所有分支机构的信息.本文首先通过元素求和融合来自多个(图2中的两个)分支的结果,如公式(6)所示:
U=M1+M2
(6)
然后简单地使用全局平均池化来嵌入全局信息,以生成作为s∈RC的通道级统计信息.具体来说,s的第c个元素是通过特征图U对应的第c个空间维度H×W收缩得到的,如公式(7)所示:
(7)
此外,为了实现对精确性和自适应选择特征的指导,算法还通过简单的全连接层(fc)创建了紧凑特征z∈Rd+1,降低了特征维度以提高效率.如公式(8)所示:
(8)
d=max(C/r,L)
(9)
其中L表示d的最小值(实验中为L=32典型设置).
选择:跨通道的软关注被用来自适应地选择不同的信息空间尺度,这由在融合过程中计算得到的紧凑的特征描述符Z指导.具体地,对通道方向的数据应用SoftMax操作:
(10)
其中A,B∈RC×d和a,b分别表示M1和M2的软注意向量.值得注意的是,Ac∈R1×d是A向量的第c行,ac表示的是向量a的第c个元素,Bc与bc同理.在两分支的情况下矩阵B是冗余的,因为ac+bc=1.最终的特征图V是通过各个核上的关注度权重得到的:
Vc=ac·M1c+bc·M2c,ac+bc=1
(11)
其中V=[V1,V2,V3,…,VC],Vc∈RH×W.本文将改进后的模块称作Split-Attention模块结构如图3所示.
图3 Split-Attention模块的结构Fig.3 Structure of split-attention module
一个压缩激励模块(SEBlock)是一个计算单元,它可以在输入的特征映像X∈RC′×H′×W′与特征图N∈RC×H×W之间建立一种转换关系Ftr,在接下来的符号中使用Ftr表示卷积算子,并且使用O=[o1,o2,o3,…,oC]来表示学习卷积核的集合,其中oc表示第c个卷积核的参数,然后本文将输出写为N=[n1,n2,n3,…,nC],其中:
(12)
图4 SEBlock的结构Fig.4 Structure of SEBlock
压缩-全局信息嵌入:为了解决利用通道相关性的问题,本文首先考虑输出特征中每个通道的信号.每个学习的滤波器与本地感受野一起操作,因此变换输出N的每个单元不能利用该区域之外的上下文信息.
为了缓解这个问题,算法将全局空间信息压缩到一个通道描述符中,通过全局平均池化来生成通道级统计信息来实现这一操作.具体来讲,本文将N通过其空间维度H×W收缩而产生一个统计量θ∈RC,θ的第c个元素θc由公式(13)计算可得:
(13)
变换N的输出可以被解释为局部描述符的集合,该局部描述符的统计对于整个图像具有表现力.
激励-自适应权重重新校准:为了利用在挤压操作中聚集的信息,本文提出的方法在它之后进行第2个操作,旨在完全捕获通道依赖关系.为了实现这一目标,该函数必须满足两个标准:1)它必须是灵活的(尤其是,它必须能够学习通道之间的非线性交互);2)它必须学习一种非互斥关系,因为本文希望确保允许强调多个通道(而不是强制执行一次激活).为了满足这些标准,本文选择使用简单的门控机制和sigmoid函数激活:
l=Fex(θ,W)=δ(g(θ,W))=δ(W2δ(W1θ))
(14)
(15)
为了使模型充分有效地学习通过AOLM和APPM获得的图像.在训练阶段,本文构建了一个由原始分支、对象分支和部分分支组成的三分支网络结构,原始分支经过特征提取的CNN后的输出结果经过两个分支,分支一直接经过用于分类的全连接层输出分类结果,分支二与对象分支中ALOM裁剪之后的特征图经过卷积神经网络的输出结果一起通过一个Split-Attention模块后输出的特征图进入全连接层之前再由SEBlock对通道权重进行再分配,部分分支则使用APPM模块裁剪之后的部分图像进行训练,捕捉多尺度特征信息.如图1所示.3个分支共享一个用于特征提取的卷积神经网络和一个用于分类的全连接层,对象分支的特征图在被送入最后的全连接层进行分类之前会先由SEBlock对通道特征权重进行再分配.本文的3个分支都使用交叉熵损失作为分类损失,如公式(16)~公式(18)所示:
Lraw=-log(Pr(c))
(16)
Lobject=-log(Po(c))
(17)
(18)
其中c是输入图像的真实值标签,Pr和Po分别是原始分支和对象分支的最后一个Softmax层输出的类别概率,Ppn是第n个部分图像对应的部分分支的Softmax层的输出,N是部分图像的数量总量.总损失定义为:
Ltotal=Lraw+Lobject+Lparts
(19)
总损失是3个分支的损失之和,这3个分支在反向传播过程中共同努力优化模型的性能.它使最终的收敛模型能够基于对象的整体结构特征或零件的细粒度特征进行分类预测.Split-Attention模块加强了分支之间的联系,SEBlock的使用也让模型更关注于更具有分辨力的通道,该模型具有良好的目标尺度适应性,提高了在AOLM定位不准确的情况下的鲁棒性.在测试阶段,本文的方法去掉了部分分支,以减少大量的计算量,所以本文的方法在实际应用中不会花费太长的时间来预测.由于合理而高效的架构.本文的方法能够超越MMAL-Net并且拥有与目前最好的算法相比较的性能,在细粒度视觉分类领域所实验的数据集上超越了几乎所有基于卷积神经网络架构的方法.
在本文进行的所有的实验中,首先对图像进行大小为的预处理,以获得原始分支和目标分支的输入图像.对象图像也被缩放到448×448,但对于零件分支,所有零件图像的大小都调整为.对于14×14大小的激活图,本文构造了3个大类尺度的窗口:{[4×4,3×5],[6×6,5×7],[8×8,6×10,7×9,7×10]},原始图像的局部图像数目为N=7,其中N1=2,N2=3,N3=2.N1、N2和N3是上述3大类尺度窗口的数目.在ImageNet上预先培训的ResNet-50被用作本文网络结构的主干.在训练和测试期间,本文的方法不使用图像级标签以外的任何其他注释.本文的方法使用的优化器是SGD,动量为0.9%,权重衰减为0.0001,在英伟达V100图形处理器上的小批量大小为12.初始学习率为0.001,60个周期后乘以0.1.所有的代码实现都基于Pytorch神经网络框架,实验所使用的数据集(CUB-200-2011[1],Stanford Cars[2],FGVC-Aircraft[3])样本如图5所示.
图5 数据集样本Fig.5 Dataset samples
CUB-200-2011[1]数据集总共包含11788张带有标注的图片,其中有5909张图片用于训练,5879张图片用于测试.数据集总共包含200种不同类别的鸟类图片.由于光照,遮挡以及种间差异小和种内差异大的特点,该数据集的分类任务目前依旧具有挑战性.
目前在该数据集上CAL[38]达到了90.6%的准确率(基于CNN架构的模型中最高的准确率).ACNet[37]将决策树与卷积神经网络结合,在树的结点使用路由算法,在树的边上使用注意力变换模块,最后的结果由叶子结点共同投票产生在数据集上取得了88.1%的最优结果,另外与本文算法类似的多分支网络Mask-CNN[11]取得了87.3%的准确率.参照表1的结果,即使跟基于CNN架构的最新算法相比较,本文的方法比大部分现有方法更好,并且经过改进,算法识别准确率较MMAL-net有了一定幅度的提升,并且相较于CAL本文的方法具有更小的参数更快的推理时间.
表1 在CUB-200-2011数据集上的细粒度分类结果Table 1 Fine-grained classification results on the CUB-200-2011 dataset
Stanford Cars[2]数据集总共包含16185张带有标注的图片,其中有8144于训练,8041测试.数据集总共包含196种不同品牌不同型号的汽车图片.
在Stanford Cars数据集上本文依旧与目前最优秀的算法进行性能比较结果如表2所示,在不使用任何额外数据(边界框标注,零件标注等)的情况下CAL在数据集上能够取得95.5%的准确率,2020年发表于国际计算机视觉与模式识别会议CVPR的ACNet由于其注意力转换模块以及由粗到细分层特征学习过程也取得了94.6%的识别准确率.本文的算法因为整合了多分支多尺度的特征,利用分散注意力模块对分支结果进行再分配取得了95.2%的识别准确率,在Standford Cars上相较原模型有了0.2%的提升,在目前最优的算法中取得了具有竞争力的结果.
表2 在Stanford Cars数据集上的细粒度分类结果Table 2 Fine-grained classification results on the Stanford Cars Dataset
FGVC-Aircraft[3]数据集总共包含10000张带有标注的图片,其中有6667张图片用于训练,3333张图片用于测试.在细粒度视觉分类中将这些图片分为100种不同型号的飞机.
实验结果如表3所示,本文所提出的方法在FGVC-Aircraft数据集上的结果于目前该数据集上最好的算法CAP[39]相同,但CAP在应用中使用了6个目前最先进的主干网络进行实验取得了94.9%的识别准确率,在主干网络方面使用了比本文方法参数更多模型更大的主干网络,当同样使用ResNet-50作为主干网络时,本文的算法具有比CAP更优秀的分类效果.本文的方法相较于MMAL-Net准确率提升了0.2%.并且在推理速度快的同时,使用同样主干网络时,本文的算法优于最好的方法.
表3 在FGVC-Aircraft数据集上的细粒度分类结果Table 3 Fine-grained classification results on the FGVC-Aircraft dataset
在CUB-200-2011数据集上执行消融研究.在不增加本文提出的任何方法的情况下,ResNet-50在输入图像分辨率为的情况下获得了84.5%的准确率.为了验证这3个分支训练结构的合理性,本文分别去掉了目标分支和部分分支.去掉目标分支后,原始分支的准确率最高能达到85.0%,下降了4.6%.这证明了AOLM和对象分支对提高分类精度的巨大贡献.去掉零件分支后,目标分支的最好准确率为87.3%,下降了2.3%.实验结果表明,当AOLM定位结果不稳定时,部分分支和APPM能够提高模型的稳健性.上述实验表明,本文的方法的3个分支都对最终的精度有很大的贡献.因为ALOM与APPM的有效性已经被证明,为了证明本文的Split-Attention模块与SEBlock的作用,本文在MMAL-net的基础上只在原始分支与目标分支间嵌入Split-Attention模块得到了89.93%的准确率,同样当只在3个分支最后的全连接层前嵌入SEBlock时,得到的分类准确率在MMAL-net的基础上提升了0.5%以上.实验结果证明了多分支网络结构以及引入自适应网络权重再分配模块的有效性.
本文提出了一种有效的细粒度分类方法,不需要包围盒或部分标注.多分支结构可以充分利用AOLM和APPM获得的图像来实现优异的性能,并且使用Split-Attention模块加强了分支间的联系,SEBlock对通道权重进行了再分配,使得算法具有自适应调整分支特征比重以及通道关注的能力.该算法是端到端可训练的,在CUB-200-2001[1]、FGVC-Aircraft[2]和Stanford Cars[3]数据集上较MMAL-net而言准确率全面提升,取得了于目前最优秀的算法具有竞争力的识别准确率.下一步的工作是如何调整SEBlock的压缩操作例如引入CAP[39]的上下文感知注意力池来改进算法并进一步提高准确率.