田佳鹭,邓立国
(沈阳师范大学数学与系统科学学院,沈阳110034)
本文中的改进方法主要针对细粒度图像分类任务,细粒度是指在粗粒度基础之上进行更为细致的类内划分,对象间的区分差异较小,任务难度较大。经典双线性卷积神经网络的提出,使得分类的准确性已达到很好的效果。但由于模型关注的特征过多缺乏重点,其次层次结构较深,模型训练效率低。改进模型针对这些问题进行完善,在Bilinear CNN 基础之上选择VGG-16 的前5 个卷积块,以及ResNet-50 的前7 个卷积块作为特征提取器以提高训练效率;并在特征提取器中分别嵌入AWFF 模块和SENet Block 模块,将特征提取的重心放在关键特征上;接着利用双线性池化操作完成后续的分类任务。新模型即改善了分类的准确性,又提升了训练速度,结构性能也较为稳定。
双线性模型在细粒度图像分类任务上取得了极大成功,在细粒度分类问题的处理上具有较高准确性,可将该网络模型看作为一个四元函数[1]:
公式中,fA,fB为特征提取函数,ρ 为池化函数,S是分类函数。特征提取函数f 相当于一种映射关系:
即将图像γ 上某一位置l 映射到S×T 空间的过程,其中S 代表空间维度,T 则代表特征图的通道维数。双线性池化层是Bilinear CNN 的重要之处[2],将两个特征提取分支输出的特征图中相应位置的特征进行外积运算:
函数bilinear 表示通过外积操作生成高维双线性特征矩阵的融合过程,接下来利用池化函数ρ 进一步得到关于图像的全局特征描述算子[3]。通过对双线性特征中每对相应的双线性值,进行聚合运算得到关于整体的特征描述,得到双线性特征向量Bilinear CNN:
将池化得到的双线性特征向量XC,运用开方运算得到向量YC,并利用l2归一化操作得到最终规范的双线性特征向量zc:
新模型的改进之处在于,对于双线性网络的两个特征提取分支,一个基于层数较深的VGG-16 网络模型中前五个卷积模块,另一个则基于具有残差思想的ResNet-50 网络模型的前七个卷积模块[4]。借助残差思想其优势在于通过对细微残差的学习代替对原始特征的学习,减轻模型学习负担有助于提升模型的训练速度。此外,借助直连思想帮助模型保留更多的有效信息,防止模型由于层数过多导致梯度弥散、爆炸等现象的发生。通过两种模型提取特征角度的不同、信息种类的不同来帮助新模型获取更加全面的特征信息,利于模型的学习与训练。
当前所使用的大部分模型都以卷积模块输出的最后一个特征图为主,该特征图作为深层特征的典型代表包含着大量的重要特征信息。但不能因此忽略浅层特征信息的重要性,浅层信息中通常包含一些关于对象位置的信息等,有助于模型快速定位并提取特征,因此浅层中的特征信息对模型训练有一定作用其重要程度不可小觑。新模型在特征提取模块中引用AWFF 模块,实现将浅层特征与深层特征以自适应的方式充分融合[5]。
AWFF 模块主要由特征提取模块、加权模块及融合模块三个部分组成。所谓自适应学习是指模型能够以一定的学习方式,结合特征的重要程度自动获取相应权重。AWFF 方法实现过程如下:
(1)特征提取模块:
该过程以第一个卷积模块的输出特征图为例,也可将其推广至多个浅层特征与深层特征的融合。设第一层浅层特征为x1∈RC1×H1×W1,其中C1为通道数、H1为长度、W1为宽度。对特征图进行池化操作,使得模型获取浅层特征中最重要、最具有代表性的信息,并减少冗余参数数量。池化层过滤器的大小为kh×kw,步长为s。这里深层特征是指VGG-16 中最后一个卷积模块输出的特征图xn,xn可不经过处理直接输出[6]。接着需要调整提取后特征图的维度,为进行下一步操作做好准备。池化加权操作过程公式如下:
(2)加权模块
加权模块的作用是自动分配给不同层级中的特征不同的权重值,使每一层级获得与自身重要程度相匹配的权重。权值需要通过模型学习获得,为减轻模型整体的训练负担,每一层级共享同一权重值,即模型在自适应过程中只需为每个层级分配一个参数值即可,有效提高训练速度。该过程先利用卷积操作实现特征加权,并且权重会进行自适应的调整,接着将输出值的维度进行调整使其与深层特征xn的维度相匹配,便于后续特征融合操作[7]。卷积加权过程公式如下:
(3)融合模块
最后采用concat 拼接方法,将所有加权的浅层特征与深层特征依次融合相连,此时特征通道维度相互串联,通过融合函数fC得到最终的特征X。操作过程如下:在融合了AWFF 模块的VGG-16 特征提取模块中,将VGG-16 中前两个模块的输出浅层特征图与最后一个模块输出深层特征图进行加权融合,因此将公式(12)根据新的模型推广为:
SENet Block(Squeeze-and-Excitation Networks)被称为特征重标定模块,该模块由Momenta 公司建立,并借助该方法在最后一届2017 的ImageNet 比赛中获得图像识别类的冠军。该模块的主要作用是让模型能获取每个特征通道的重要性,根据重要性对相应的特征进行增强或抑制[8]。该模块的整体结构如图1 所示。
图1 SENet Block
具体操作过程如下:
(1)SENet 模块一般嵌入在一个完整的卷积过程之后,即通过卷积得到包含C 个特征图的集合U,公式如下;
其中,Fsq代表Squeeze 操作的特征图压缩过程,zc代表其中一个压缩后的实数值,W,H是空间U 的宽度和高度。
(3)Excitation 操作:该激励过程使模型学习各个特征图通道之间的相关性,并结合重要程度为每个通道生成一个权值,公式如下:
(4)Reweight 操作:将Excitation 操作过程中产生的重要性权重以乘法的形式添加到相应特征上,突显出通道之间的重要性程度,实现对原始二维特征图中各个通道的重要性标定任务:
公式中Fscale函数代表加权过程,sc是代表对应通道重要性的权值,是特征重标定即加权后的特征图。
在新的模型中将SENet Block 模块嵌入到第二个特征提取分支中,即ResNet 的七个残差卷积块都被嵌入SENet Block 模块[11],嵌入方法如图2 所示。
图2 SENet Block模块在ResNet中的嵌入
先在ResNet 的每个残差块中加入全局平均池化层进行特征压缩,将特征图维度从H×W×C压缩到1×1×C。下面是最重要的Excitation 操作,先利用一层FC 作为降维层,将特征图通道数降为,这里设r为16,接着用ReLU 激活函数保证特征的非线性性,接着再利用一层FC 作为升维层,将通道数恢复到原来的C 保证特征的完整性,后面结合Sigmoid 函数得到值在0~1 之间的权重,最终通过Scale 模块完成特征加权操作[12]。可以发现该过程连续用到两层FC 层,权重s就是借助这些全连接层和非线性层学习得到,利用两个串联的FC 层融合通道之间的相关性信息,并增加特征的非线性性,有效减少参数量提高计算效率。
新的模型以双线性网络(Bilinear CNN)为基础,对原始的两个特征提取分支进行改进。其中一个分支选取VGG-16 的前5 个卷积块作为特征提取器,去掉VGG-16 模型最后的全连接层和Softmax 层,并在卷积模块的基础上嵌入AWFF 模块,将前两层浅层特征与最后的深层特征相融合,充分保留有用信息保证特征提取的全面性。另一个分支则以ResNet-50 模型中前7 个卷积块用于提取特征,并结合SENet Block 模块关注特征通道间的相关性,利用权重参数选择重要特征而忽略不必要的特征,同时采用ResNet 模型的残差思想来提升新模型的训练速度。最后通过双线性池化层计算得到Bilinear vector 向量,利用Softmax 实现细粒度图像的分类目的。此外,AWFF 及SENet Block 作为两种子模块,也可灵活地嵌入到其它基础网络当中[13]。
新的模型通过对基础特征提取网络的替换,以及两种嵌入模块的运用,使其更加高效地提取特征,加快模型的训练速度,获取的特征信息更加全面具体,利于细粒度图像分类任务准确度的提升。尽管这些模块的嵌入会使得模型的参数量增加,但在其分类效果面前,参数量增加所带来的影响几乎微乎其微。新的模型整体结构如图3 所示。
图3 新模型的整体结构图
该模型结合迁移学习方法训练模型,利用模型之前已经训练好的一部分参数,在此基础上训练新改进的模型,即模型将先前学到的经验应用到新任务的学习中,通过该方式可极大节省时间提高训练效率。该模型基于Python 与TensorFlow 实现,利用TensorFlow中的机器学习框架构造所需要的模型结构,并在训练过程中使用GPU 提升训练速度。
该实验选取的数据集为斯坦福大学整理得汽车数据集Stanford Cars,该数据集包含196 种不同车辆,共16185 张车辆数据图像,每类数据数量均等便于模型训练,其中训练集分为8144 张图像,测试集为8041 张图像。对于改进模型在迁移学习基础上先用训练集微调模型参数,再使用测试集检验模型的分类准确性。
改进模型的两个特征提取分支的输入数据大小为224×224,为保证后续双线性池化层的正常处理两个分支输出的特征图通道数维度要保持一致。因此特征提取模块中VGG-16 网络输出的特征图维度为7×7×512,ResNet-50 模型输出的特征图维度为28×28×512。
实验利用Stanford Cars 车辆数据集对模型进行训练和测试,其准确率与迭代次数的关系如图4 所示,从图中可以看出训练集的准确率曲线呈现上升趋势最终达到96.362%,测试集的准确率达到91.089%。
图4 准确率的变化趋势
为了能更加直观地体现该模型的分类准确情况,将选取的6 种模型基于同一数据集进行训练和测试,将测试结果与新模型进行比对,可发现该模型的准确度较高。
表1 六种模型的准确率结果
新模型基于Bilinear CNN 模型进行改进,结合ResNet 网络的残差思想,并在特征提取模块中嵌入AWFF 模块和SENet Block 模块,利用Stanford Cars 车辆数据集进行训练。新模型能够融合浅层与深层的特征充分获取有效信息,并将注意力集中在关键特征通道上,使模型灵活应对细粒度图像分类差异较小的问题,提高分类准确性,有效加快训练速度。该模型因引入了多种模块结构导致参数量增长,尽管影响不大也需在日后研究中进一步完善。