基于改进Bilinear CNN的细粒度图像分类方法∗
2021-06-02田佳鹭邓立国
田佳鹭 邓立国
(沈阳师范大学数学与系统科学学院 沈阳 110034)
1 引言
在目前图像识别领域中细粒度图像分类问题是研究的重点课题。细粒度分类是在大类别中进行子类别划分,由于物体类内差异细微、特征目标不突出因此分类难度大。相对而言粗粒度分类较为简单,它只对物体作简单的类别区分特征较为明显。那么如何精准、高效地挖掘目标物体空间位置及其显著特征,是细粒度分类任务所要解决的关键问题。尽管以往的卷积神经网络已经能做到有效提取出物体的基本轮廓、细节描述等特征信息,但还不能将其完全应用于细粒度图像分类任务。双线性卷积神经网络(Bilinear CNN)基于它能有效提取较全面的特征信息,成为细粒度分类中的经典模型,其不足之处在于拥有过多的参数量、识别精度不够高等。因此,该文提出的改进模型着重针对上述问题,以Bilinear CNN作为基础模型引入注意力机制、分组策略以及新型Relu-and-Softplus激活函数。最终实验数据显示,新模型的预测精度更高可达96.869%,涉及的参数量更少,模型性能较优。
2 双线性卷积神经网络的改进方法
2.1 DenseNet121
DenseNet121是一种结构密集的卷积神经网络,由4个Dense Block和3个Transition layer共同组成。其中Dense Block为稠密连接模块,Transi⁃tion layer为两个相邻的Dense Block模块的衔接区域[1]。并且DenseNet中每一个Dense Block块都融合前面所有层的信息,使得信息资源更丰富。其中Dense Block模块的结构为BN+Relu+(1*1)Conv+BN+Relu+(3*3)Conv,使用维度为1*1的bottleneck卷积层可有效降低特征图的通道数以减少计算量。Transition layer的 结 构 为BN+Relu+(1*1)Conv+(2*2)AvgPooling,其间使用了1*1维度的卷积层,用于维度的降低。
在DenseNet121神经网络模型中,任意两层之间直接相连,网络前面的每一层输出信息都会通过合并操作汇集到这一层,相应地该层学习得到的特征图信息,也会被传给后面的所有层。这正是与ResNet隔层相连思想最大的不同之处。描述DenseNet每一层的变换的式子如下[2]:
可以看出DenseNet模型结构较为简洁,它可综合利用多层复杂度较低的浅层特征来扩增信息量,使其得到一个具有较好泛化性能的决策函数,提高模型的抗过拟合性。
原始的Bilinear CNN模型采用两路的VGG-16作为特征提取模块,介于DenseNet121网络模型具有良好的性能和紧密的结构,将DenseNet121模型的卷积部分到最后一个卷积块为止,即去掉最后的Global average pool层和Softmax层作为改进模型结构中两路的特征提取模块[3]。
2.2 Relu的改进
模型中常用Relu激活函数,当x值小于0时函数值恒等于0;当x值大于0时它是一个线性函数。根据函数的性质,它的优点是大于0时为线性函数,使网络具有一定的稀疏性,防止模型产生过拟合现象;并且能通过良好的反向传播,防止梯度弥散现象发生[4]。它的缺点是屏蔽了太多的特征信息,导致模型无法进行有效的学习。并且该函数恒等于0的特点,会导致大部分神经元可能永远不会被激活。Relu激活函数表达式:
另一个激活函数Softplus,是一个不饱和的函数,与Relu激活函数相比更加平滑,因此Softplus可以称作ReLu激活函数的平滑版,但它不具有稀疏性这一特点[5],函数表达式为
该文提出的新激活函数,将Relu函数和Soft⁃plus函数相结合,取两者之长补两者之短,使其既有Relu函数稀疏性和快速收敛的特点,又具有Softplus函数平滑的特点。对于提出的新函数将其命名为Relu-and-Softplus函数,该函数由两部分组成以x=0为分界点,x≤0的部分用Softplus函数的性质,x>0部分则用到Relu函数的性质,最后将生成的Relu-and-Softplus函数整体向上平移0.7个单位量,表达式为
如图1所示是Relu-and-Softplus激活函数。
图1 Relu-and-Softplus激活函数
2.3 注意力模块
2.3.1 注意力机制
注意力机制的本质是在原有特征图的基础上添加一个权重掩码,代表特征的重要程度,强化重要的特征,抑制不必要的特征,提升网络的训练效率。在运算过程中通常使用软性注意力机制,即对于输入的N个信息,通过计算所有输入信息的加权平均值来确定信息的选取[6]。在该机制下以概率αi选择第i个信息的可能性表达公式为
其中,xi代表第i个信息的输入,q是所要查询的信息,z是一种注意力变量,s(xi,q)是注意力的评分函数。通过计算得到注意力权重αi后,为完成对重要信息的提取工作将αi与特征向量进行融合处理,操作过程如下:
为提高模型分类精度,引入注意力机制即通道注意力模块和空间注意力模块,将两者分别构建在DenseNet121模型中最后一个卷积块即特征提取模块的后面,使模型不仅关注到空间中每个重要特征,又能获取到通道间相互的关联信息。将图像特征的整体性与局部性巧妙融合,加深模型对图像特征的理解[7]。
2.3.2 空间注意力模块
空间注意力模块主要于关注特征图上每个特征位置之间的相关性,注重特征值的局部性。空间注意力模块处理过程为
1)首先,经过两个连续卷积层的处理实现对输入特征图下采样操作,获取图像的特征编码;
2)接着,利用反卷积操作对特征编码上采样,实现特征解码恢复到输入特征模块原有的维度,但通道数变为1;
3)然后,通过激活函数Sigmoid的运算将刚提取的位置信息矩阵转换为注意力掩码AS,即每个特征值被映射至0~1之间生成权重值;
4)保证注意力掩码和DenseNet121特征提取模块输出的特征图大小一致,在这里还要将掩码部分+1后再与特征图点乘,消除特征值可能会降低的问题,处理完毕后进行后续的特征图与对应掩码的点乘运算使特征获得权重,相融合后得到空间注意力特征图XS;
5)最后,将原始特征图与空间注意力特征图XS以用类似于ResNet残差网络中恒等的连接方式,进行线性相加得到最终的模块输出H。
空间注意力模块处理的整体过程可用如式(7)表示:
H是模块的最终输出,下角标i指代第i张图的输入,G是DenseNet121特征提取模块输出的特征向量,×运算符代表相乘运算。
2.3.3 通道注意力模块
通道注意力模块主要用于挖掘每一个特征图通道之间的相互关联性,因此它更关注的是图像特征的整体性。通道注意力模块的处理过程。
1)首先,利用全局平均池化层(Global Average Pooling,GAP)提取特征图中每个通道大小为1*1的特征值,以获得全局通道的特征信息,并把它们拼接成一个特征向量;
2)接着,连接一个全连接层实现对特征向量的下采样操作,实现信息的压缩,紧接着再用一个全连接层对压缩的信息进行上采样,实现维度的恢复;
3)使用Sigmoid激活函数完成与空间注意力模块处理方式相同的特征映射操作,生成通道注意力掩码向量AC;
4)接下来,通过一个分支结构将原始输入的特征图快速传送到网络后面,直接和通道注意力掩码向量AC以对应元素相乘的方式,为特征图的每个通道施予权重值实现特征融合,得到通道注意力特征图XC;
5)最后,将通道注意力特征图XC与最初的原始特征图完成线性相加运算,得到最终的模块输出J。空间注意力模块处理的整体过程用公式表示为
J是模块的最终输出,下角标i指代第i张图的输入,Q是DenseNet121特征提取模块输出的特征图,×运算符表示对应元素相乘运算[8]。
2.4 新增卷积层
DenseNet121模型在两种注意力模块的帮助下完成特征提取后,为符合后续分组双线性卷积策略的要求,在注意力模块和分组双线性卷积之间增加一层新的卷积层,使得特征图的通道维度变为N*M。此外,卷积层的增加能够有效提高模型的特征提取效果和非线性变换能力,新的卷积核大小为3×3,卷积核数目为N*M,步长为1。其中N为分组的数目即数据集中拥有的类别数,M是每个分组中包含的特征图数目。经该层的卷积后特征图的维度被调整为
2.5 分组策略
通常利用双线性池化操作后,会得到二阶甚至高阶的特征使其包含更多的信息量,但随着双线性特征向量维度的提升,会使后续全连接操作或全局最大池化操作的参数量急剧增加,运算负担过重,网络的训练难度提升[10]。
分组策略是通过对卷积图进行分组,让每个组内部进行外积运算,这样得到的特征维度可极大降低,每个组对应的全局最大池化层的参数量也会因此下降。它的具体操作是对分组后每个类内特征图分别进行双线性池化融合,即运用外积运算分别得到各个类别的双线性特征,最后可以得到N个双线性特征向量。
对于改进的双新型卷积网络进行分组操作,通过新增的卷积层使特征图维度变为[A1,B1,(M×N)][11]。表示特征图被分N个组,并且每组含有M个维度为A1×B1的特征图,这里设M为4。
若将改进的模型从新增的卷积层处分为两部分,那么后半部分基于分组策略思想的双线性卷积模 型 形 似 于 一 个 五 元 函 数Q=F(f A,c,f B,c,M,P,L),其中,f A,c,f B,c为特征提取函数,A和B为二路卷积神经网络,c表示第c组卷积图,M为分组所包含的特征图数目[12],P表示池化函数,L表示分类函数,其中f也是一种映射函数,即f:G×I→RS×T,表示为将输入图像G和它的原始尺寸I映射到S×T的空间范围中,S代表生成特征图的分辨率大小,T是通道数。此外,特征提取函数应与DenseNet121当中的特征提取模块相对应。
假设γc,λc分别对应特征函数f A,c,f B,c输出的第c个类别的特征图矩阵,将相同维度的γc,λc进行外积运算,即通过双线性池化操作完成特征融合,得到双线性特征向量Bilinear vector,公式为[13]
其中q表示对双线性特征值进行外积运算函数,⊗符号表示外积操作,l为图像直接对应的空间区域,E表示输入图像。池化函数P通过累加每个位置的双线性特征,进一步完善整体的特征描述信息,计算公式如下:
经过上式计算将双线性特征转变为向量xc,接着进行向量规范化操作[14],即利于向量开平方运算计算得到向量yc,接着再进行L2正则归一化操作得到zc,公式为
可以发现特征分组后的双线性特征向量维度减小,有利于减少后续计算的参数量,提高训练效率。利用分组策略稍微会对模型的精确度有一定的影响,但结合前面提出的注意力模块可以将这个问题很好的化解。
3 数据集准备
该论文为符合细粒度分类要求选取五类花作为基础数据集,分别为daisy、dandelion、roses、sun⁃flowers、tulips五种花。对于数据集合的统一管理,利用TensorFlow中提供的TFRecord格式,将任意数据转化成能被TensorFlow处理的形式,即以一种二进制文件格式使得图像中重要信息以及标签数据被整体的封装在一起,用于后续模型训练[15]。将数据集按功能分为包含大量数据的训练集和小部分数据的测试集,其中测试集由每类中抽取的100张左右图片组成。训练集通过压缩编码被分为两个都含有1000张数据的TFRecord文件,少量的测试集则装成一个TFRecord文件即可[16]。图像被制作成TFRecord文件后的存储方式如图2所示。
图2 TFRecord文件中的图片形式
五类花的数据集分配情况如表1所示。
表1 五类花的数据集分配情况
4 实验结果与分析
4.1 训练过程
对于改进模型,在训练过程中我们把模型分成两个阶段来训练。首先锁定DenseNet神经网络的值,使用训练集重点训练模型的后半部分,并利用DenseNet曾经训练好的值对模型后半部分进行指导,因为经过训练的DenseNet已经包含了一定的信息量;当后面的权值训练到较稳定状态时,再解锁前半部分DenseNet的值,进行整体网络模型的训练,直至模型收敛并用测试集检验模型的训练情况。
4.2 实验结果
该文主要针对细粒度图像分类任务,基于Bi⁃linear CNN模型改进其结构优化其性能,基础数据集选取五类花的数据。为验证改进的模型能够有效减少网络参数和计算量,提升模型训练效率,提高预测精确度。将改进的模型与Bilinear CNN模型、VGG模型以及ResNet模型在参数量以及预测时间方面进行对比,如表2所示,可以发现新的模型结构所用的参数量较少,并且推理速度较快。
表2 四种模型在参数量和预测时间方面的对比
此外,为了检验新模型的分类精确度,令四种模型在以相同的数据集为基础进行训练和识别,如表3所示,能够清晰地观察出,新模型相比其他三种模型具有较高的分类精确度,可高达96.869%。通过以上检验能够证明,新的模型实现了改进目的,具有较好的性能,能有效应对细粒度图像分类的问题。
表3 各种模型的分类精确度
5 结语
该改进模型是一种针对细粒度图像分类问题的模型,为了改进原Bilinear CNN模型训练参数量过多,预测精度不够高的问题,提出了相应的改进措施。主要将结构紧密的DenseNet121模型作为双线性网络的特征提取模块;并改进激活函数为新型的Relu-and-Softplus函数;利用注意力机制生成空间注意力模块和通道注意力模块,以实现特征的整体性和局部性的完美结合;接着,利用分组策略有效减少模型在GMP运算过程中的参数量,提升训练速度;并用全局最大池化层提取每个双线性特征向量的显著特征以实现最后的分类目的。经验证,新的模型无论是在训练效率还是分类精度方面较比其他模型都体现出优良的效果。因此,该模型能够很好地应对细粒度特征分类差异小的问题。对于今后的研究将在保证精确度的前提下,对模型的层次架构实现进一步的精简,以达到更好的性能。