经卓勋,刘建明
(江西师范大学计算机信息工程学院,江西 南昌 330022)
细粒度识别分类是计算机视觉领域热门的研究问题,其主要是对数据中在粗粒度的大类下的细粒度子类进行分类.在细粒度图像分类任务中,不同子类别间存在较高相似度,这种高相似度往往只存在局部的且细微的差异,如不同鸟类间鸟喙的色块差异或羽毛花纹的不同等,这也使得相对于一般的图像分类算法,细粒度图像分类更困难且更具挑战性.因此,在细粒度识别任务中,通常采用引入注意力机制的方法探索目标图像中细微的、最具有判别力的部位,但此类方法通常只考虑图像样本所提供的特征,从而发掘更多的目标部件,并在单模态场景下做识别,最终忽略了其他模态的信息来源.
最近,基于多模态信息融合的细粒度识别方法引起了越来越多学者的关注,因为人类在学习认识事物的过程中,不仅从图像样本得到知识,还从文本、口头描述中认识事物,所以该类方法就基于这种思路,将高层次的语义信息(如人工标签、属性注释等)作为辅助,结合图像数据建立联合模型.如双模态渐进式掩模注意力模型(Bi-modal PMA)[1]通过CNN(convolutional neural network)[2]和LSTM(long short-term memory)[3]分别将图像和文本数据编码,通过自注意力模块分别从上述2个单一模态收集信息,并通过一个查询-关系模块建立双模态信息之间的关系;CVL[4]方法则是采取视觉流和语言流同时编码的双分支模型,但这类方法需要构建双分支模型结构,且不易改动,在训练和测试阶段需要双模态数据同时参与,复杂度较高.
为解决上述问题,本文提出了一种可随意插入任何卷积神经网络的、融合预测属性的注意力算法,该算法主要由2个部分组成:(a)属性预测模块APM(attribute-predicted module),该模块通过已知属性语义向量信息构建类别属性向量矩阵,用于预测所有输入图像样本在属性语义空间上的属性语义向量;(b)基于预测属性引导的通道注意力模块PACAM(predicted-attribute-guided channel attention module),该模块以上一层特征图和属性预测模块APM的预测属性语义向量作为辅助输入,挖掘出特征图潜在的特征语义表示,且测试阶段不需要属性语义数据.
细粒度图像分类是在计算机视觉领域中十分具有挑战性的问题,在现实场景中有着广泛的应用前景.目前主流的细粒度图像分类方法可以分为3类:(a)端到端的特征学习方法;(b)先检测对象的多个部件,再从已定位的部件区域中提取图像特征的方法;(c)基于多模态信息融合的方法.
第1种方法是构建端到端的深度学习框架进行特征编码,在训练中只使用图像级标签构建模型学习更有判别力的特征.如Gao Yu等[5]提出的通道交互网络,可通过图像的特征图得到通道间的差距信息,再与原始特征图的特征结合,从而增强通道所学习到的判别特征.Zhuang Peiqin等[6]提出了一种注意力成对交互网络,通过对输入的2张图像得到一个共同特征向量,查找特征通道中包含的对比线索.
第2种方法是先检测对象的某些部位,从部位检测特征来识别对象.早期工作需要数据库的外部标注信息,最近的方法只需提供分类标签,不需要额外标注.如Hu Tao等[7]提出的WS-DAN(weakly supervised data augmentation network)网络,采用双线性注意力池化机制生成注意力图,并使用生成的注意力图来生成Mask掩码遮罩,再应用到原图像上实现数据增强.Zheng Heliang等[8]提出了三线性注意力采样网络TASN(tri-linear attention sampling network),在其之前的细粒度识别的方法中,提取的对象部位的数量是预定义的,缺乏灵活性,且计算成本较高,而TASN通过一个三线注意力机制模块做细节定位,通过知识蒸馏的方式来优化主网络.Du Ruoyi等[9]则致力于将多粒度的图像特征融合,用一个拼图生成器生成不同粒度级别的图像,提出了一个新的渐进式训练策略,在每个训练步骤中融合来自先前粒度级别的数据.Ding Yifeng等[10]同时运用高层和低层的特征信息,建立了注意力金字塔卷积神经网络,该模型具有自上而下的特征金字塔结构和自下而上的注意力金字塔结构.A. Behera等[11]提出了一种上下文感知注意力池,使模型更好地学习物体各部位特征.Ji Ruyi等[12]将决策树和神经网络相结合,提出了一种注意力卷积二叉神经树结构做分类,在树结构的边缘加入卷积计算,使用Attention Transformer模块让模型捕捉具有判别力的特征,从而让分支路由模块来决定样本送往左子树还是右子树.而He Ju等[13]基于Vision-Transformer结构设计了TransFG模型,考虑到图像空间上的相邻结构,在将图像序列化时采用重叠的patch方法,整合注意力权重至注意力映射,保留全局信息,计算区域的对比损失从而定位图像的差异性局部区域,以此进行细粒度分类.
第3种方法是基于多模态信息融合建立模型.人类不仅从物体对象的外观上认识对象,也可从多种渠道获取对象的相关知识.因此,在拥有图像数据的基础上,将多模态信息数据作为辅助,提高网络的特征表达性能.在细粒度分类领域中,目前主要使用的辅助分类信息为文本和数据属性.Chen Tianshui等[14]提出了知识嵌入式表示学习(knowledge-embedded representation learning,KERL)的框架,通过引入属性和知识图来处理细粒度图像识别的任务.Sun Liang等[15]通过一个文本嵌入网络将图像的文本描述编码为向量表示,并与图像编码网络的向量连接输入双线性网络,得到了较高的准确率.还有使用更多模态的方法,如Zhu Linchao等[16]利用视频和文字,设计了全局动作、局部区域以及语言描述3种模态的输入进行多模态特征学习,提高了人体细粒度动作图像识别的准确率.
但是以上结合多模态信息的方法,通常有着比较复杂的结构,或者在训练与测试阶段都需要额外的属性或者文本信息作为辅助,模型的灵活度较差,适用范围小.因此,本文提出了基于预测属性引导的注意力机制的细粒度分类方法.
人类在对接收的视觉信息进行处理时,会选择性地关注某些关键性的细节,而忽略其他信息.注意力模块将人类认识图像信息的注意力机制应用到计算机视觉领域,让计算机学习人类视觉认知的思维方式处理视觉信息,使模型在处理信息的过程中更多地关注关键部分的特征.
V. Mnih等[17]在传统的循环神经网络中应用了注意力机制,通过注意力机制来学习一幅图像中需要关注的部分,而不是直接处理整幅图像的像素,同时也降低了任务的复杂度.
Woo Sanghyun等[18]提出了一种卷积注意力模块(convolutional block attention module,CBAM),该模块分为通道注意力模块与空间注意力模块,先后在通道与空间维度上寻找图像与最终输出结果相关联的区域.
同样,还有受基于CBAM的工作启发后的延伸方法:BAM(bottleneck attention module)[19],该模块的构思是将CBAM中通道与空间注意力模块的连接方式从串联改为并联,但同时CBAM需要通过通道间的池化处理,而BAM则全部通过卷积或空洞卷积完成,融合了多感受野的信息,比CBAM计算量更大,但是包含更多的信息.
本文提出注意力引导的通道注意力模块(PACAM),通过属性预测模块(APM)将图像特征图数据映射到一个属性向量语义空间,并对输入的每个样本做属性预测,得到一个属性语义向量(以下简称属性向量)作为注意力机制的辅助特征,在特征图的通道维度上应用注意力机制.在应用到细粒度分类任务常用的骨干网络框架下,其准确率得到了明显提升.
本文提出的基于预测属性引导的通道注意力算法是通过属性信息来引导通道注意力,模块结构由属性预测模块(APM)与预测属性引导的通道注意力模块(PACAM)组成.
本文算法使用VGG-19、Resnet-50、Bilinear-CNN 3种在图像细粒度识别领域中常用的卷积神经网络结构作为骨干(Backbone)网络,可以在任意的CNN网络结构后添加本文提出的PACAM与APM进行端到端的训练.在通道维度上使用属性语义向量作为辅助引导注意力模块学习,从而增强网络的表达能力.
算法整体结构图如图1所示,上一层特征图作为模块输入,C、H、W分别为特征图通道数、特征图高度、宽度,Dattr为预测属性向量维度,K为总类别数.其中APM用于学习一个属性语义空间,将类别和样本映射到语义空间中,让视觉分类器学习一个特征图到属性向量的映射.以图像的特征图作为输入,得到预测的样本的属性向量.
PACAM以输入特征图以及从APM的输出属性向量作为输入,用于将预测的属性向量与图像特征图的向量表示连接,寻找图像特征中更具有判别力的部分,得到加权后的特征图作为下一层输入.
图1 算法总体结构示意图
属性预测模块将学习一个属性语义空间,将样本特征图映射到这个空间中,得到特征图在属性语义空间中的属性语义表示.属性预测方法使用卷积神经网络作为骨干网络,网络输出的特征图作为输入.本文的属性预测模块的主要结构图如图2所示.
图2 属性预测模块结构示意图
假设输入的某一层特征图为FIn,其维度为C×H×W.属性预测模块的类别属性向量矩阵由所有类别的属性向量按序排列得到,类别的属性向量维度为1×1×Dattr,而类别属性向量矩阵Mattr的维度为1×K×Dattr,即每个类别存在一个1×Dattr维度的向量表示,Dattr为属性向量维度,大小和所使用数据集中样本提供属性数目相等.
在APM模块中,在构建类的全部类别属性向量矩阵(以下简称为类别属性矩阵)时,若数据库没有给出每个类的属性向量,则取该类所有样本实数值向量的平均值.考虑到每个属性对于类别目标的重要程度不同,将每个类的属性向量归一化到0~1之间,每个属性向量为连续性实值向量,则重要的属性能够获得更大的权值,不重要的属性的权值较小.相比于不重要的属性,重要的属性在训练中能发挥更大的影响.
在本模块中,获得预测的属性向量的公式为
attr(FIn;θ)=σ(fc(avg(FIn;θ)),
其中avg(·)为特征图FIn经过的全局平均池化层,fc为全连接层函数,θ为全连接层可学习参数,最终结果将向量映射到1×1×Dattr维度,σ为Sigmoid激活函数,attr(FIn;θ)为预测出的属性向量,其将作为PACAM的输入,记为Vp.
在训练阶段,最终预测结果的向量表示为
(1)
其中P(FIn;θ)为最后输出的每个类别的概率分布.APM在模型训练阶段最小化P(FIn;θ)与真实类别的One-Hot标签向量的交叉熵损失,而在训练阶段优化APM,该交叉熵损失函数可表示为
其中n为样本数,j表示第j个样本,yjc为符号函数,若样本j真实类别为c则yjc取1,否则yjc取0,pjc样本j属于c类别的概率,即式(1)中得到的P(FIn;θ).而在测试阶段,只输出预测出的属性向量作为通道注意力模块的输入.
属性预测模块使用对比损失函数来缩短当前样本属性向量与同一类样本属性向量之间的距离,远离其他类别的样本属性向量.该对比损失函数可以表示为
其中2N表示在一个Batch中所有的样本数量,z为当前样本编号,a表示当前预测属性样本的类别,vb,i表示在一个epoch中编号为i的属于b类别的样本,b∈K,cos〈·,·〉表示计算2个预测出的属性向量之间的余弦相似度.
对比损失函数Lcons采用余弦相似度来计算2个向量之间的相似度,从而缩小同一类预测属性向量的距离,远离其他类别的预测向量.
APM的总体损失函数为对比损失函数加上交叉熵损失函数Lce,即Lapm=Lce+αLcons,其中α为根据经验设定的超参数.
本文的算法是在CBAM的基础上提出改进的PACAM,改进自CBAM在通道维度上的注意力模块,并将由APM预测的属性向量Vp作为引导输入,通过属性向量让神经网络模型关注图像信息中更具有判别力的部分.PACAM的算法流程如图3所示.
图3 属性引导的通道注意力模块结构示意图
此时输入的特征图FIn∈RC×H×W,记输出的特征图FOut∈RC×H×W,PACAM对输入的特征图FIn分别做全局最大池化与全局平均池化,得到2个维度相同的向量Vmax和Vavg,向量维数均为1×1×C.
将这2个向量和得到的预测属性向量拼接,得到总维数为1×1×(C+Dattr)的2个维度相同的向量,再将这2个向量通过一个共享权值的多重感知机得到2个属性向量V1和V2,它们的维数均为1×1×C.按元素求和并通过sigmoid函数后,输出压缩维数为1×1×C的通道注意力向量Va,将其与FIn做乘法,得到重组后的下一层特征图FOut.
通道注意力向量Va的计算公式为
Va(FIn)=σ(MLP([avg(FIn);Vp])+MLP([max(FIn);
Vp])),
其中MLP为共享权重的多重感知机,有一个隐藏层.进一步可得
Va(FIn)=σ(W1(W0([avg(FIn);Vp]))+W1(W0·([max(FIn);Vp]))),
其中W0、W1分别为多重感知机中的可学习的权重参数.W0∈R(C/r)×C),W1∈RC×C/r,r是可设定的系数且为削减参数开销的比率.最后得到的通道注意力向量Va(FIn).
将向量Va(FIn)广播到和特征图相同的维度C×H×W,得到通道注意力图Ma.
最后得到的下一层特征图FOut的公式为
FOut=Ma⊗FIn.
APM的总损失函数是由APM的损失函数Lapm和主干网络的交叉熵损失函数Lce之和,即
Lall=Lce+Lapm.
本文采用鸟类细粒度图像数据集CUB-200-2011[20]作为实验数据集,因为含有属性信息的细粒度数据集较少,所以在细粒度图像数据集中只有CUB鸟类数据集具有可靠清晰的属性语义数据.
该数据集包含200种鸟类,共有11 788幅图,5 994幅训练图,5 794幅测试图,共设有羽毛颜色、背上颜色等312种属性.在数据集中,每种鸟类具有连续的实数的312维属性向量,某些种类的鸟类间的差异可能非常微小,如大天鹅和小天鹅,它们只有鸟喙的图案判断差异,观察者很难准确判断图像中鸟的类别,因此十分具有挑战性.
本文的实验用的GPU为NVIDIA GTX 1080Ti,显存为11 GB,CPU为Inter i7-7700,所用的实验系统为Ubuntu 16.04 LTS,CUDA 10.1,深度学习框架为Pytorch-1.6.0.
本文提出的预测属性引导的注意力模块能插入任意CNN网络实现端到端的训练.在训练中,Batch Size设为16(即2N),α采用人工设置为0.1,采用SGD优化器,初始学习率为0.001,每训练40个epoch将学习率乘以0.1衰减,因此在进行至40个epoch以后总损失不再变化,判断学习率过大,故将学习率乘以0.1并使得总损失函数值继续收敛,共训练了130个epoch.
为了测试本文所提出的PACAM的性能,选择了在细粒度识别领域比较常用的3种骨干网络(VGG-19、Resnet-50、Bilinear-CNN)作为实验对象.
表1显示了在使用不同的骨干网络时设置的图像大小以及模块插入位置,考虑到本文提出的模块加在不同网络层数上会得到不同结果,因此在使用Resnet-50作为骨干网络进行实验时考虑了多种情况.
表1 模块性能测试实验设置
实验图像的输入分辨率统一变换至448×448,在实验中采用了左右随机翻转、随机裁剪2种图像增广操作.使用了3种不同骨干网络,Resnet-50-b4/5表示将PACAM和APM添加到第4或第5组的Block的最后一个Bottleneck结构之后(如conv5_3表示Block中第3个Bottleneck结构位置),VGG-19网络则加在第16个卷积层之后,其中conv5_4表示在第16个卷积层之后的位置.
B-CNN意为双线性池化卷积神经网络(bilinear-CNN),采用Resnet-34网络结构作为其分支网络的骨干网络,在表1中conv_fusion意味着将PACAM加在B-CNN双分支的特征融合层之后.其在CUB数据集上的表现如表2所示.
表2 在CUB-200-2011数据库上各算法性能比较
只使用Resnet-50网络在CUB数据集上分类的结果为84.5%,在第5个block之后加入了本文所述的PACAM和APM以后,其鸟类分类的准确率提高了2.6%.而VGG-19网络使用PACANM比不使用PACAM仅提高了0.5%,双线性网络B-CNN在使用Resnet-34作为骨干网络后提高了2.4%的准确率.
在使用VGG-19的情况下提升情况较小,推测原因是通道维数的差异产生的影响,如在Resnet-50网络的b4和b5这2种设置下b5的通道维数更大,也得到了更高的准确率.且在实验中的Resnet-50骨干网络输入PACAM的特征图通道维数比VGG-19网络的特征图通道维数更大,能够在更多的通道中更好地寻找到其中应当得到关注的部分.
为了验证本文提出的通过预测属性引导注意力的方法有效性,在性能测试的基础上设计了消融实验(见表3).
表3 采用Resnet-50作为骨干网络的消融实验结果
在表3中的消融实验是将3种模块设计加入Resnet-50的conv5_3位置得到的实验结果,其中CBAM是使用没有加入属性语义信息的CBAM插入Resnet-50进行的网络实验,准确率仅有85.5%.
MAP是不使用预测属性模块,仅仅通过一个多重感知机模块将图像直接映射到属性相同维度的向量,且未使用类属性矩阵引导直接产生预测结果的方法.在PACAM+MAP的组合中,使用MAP替换本文的APM,将MAP方法得到的向量输入PACAM得到的结果显示:其在测试集上的准确率比只使用CBAM的方法的准确率更低,仅有84.9%,而在使用了本文提出的PACAM和APM的组合后,其测试集上的准确率有了明显提高.这说明加入属性向量引导注意力的方法是有效的.
在实验中直接将图像映射到向量维度造成识别精度的下降,以上结果说明:类别的属性编码确实能够成为辅助信息做注意力引导,关注重要的特征通道.而在进行细粒度识别分割任务中,为了准确分类差异小的子类对象,通常需要大量而准确的各类标签,但让模型学习这类信息较为困难.由于属性信息带有精确的类别差异知识,所以本文实验将其编码的实值属性语义向量和图像特征结合,提高了模型分类的性能和准确率.
本文提出了一种基于预测属性引导的通道注意力算法,该算法包含PACAM和APM,可以插入任意一种CNN网络.一方面,利用已有的类属性向量构成类属性向量矩阵,通过APM建立属性语义向量的预测模型,输出预测属性向量引导主干网络的训练和测试;另一方面,通过PACAM模块连接属性向量和通道注意力向量,引导通道注意力算法寻找更具有判别力区域的特征通道.本文最后通过实验验证了该模块的性能.
最后,本文算法未来考虑从如下一些方面改进:考虑属性语义信息与图像特征在空间方面的联系,将空间信息结合语义向量进一步做出研究和改进;考虑更多形式的语义信息,而属性信息通常需要人工标注,代价较高,可以考虑结合其他更易取得的数据,如数据集的文本描述,将其与属性结合、与图像数据建立联合判断模型.