APP下载

基于SE 模块改进Xception 的动物种类识别

2020-06-16邹卫军

导航与控制 2020年2期
关键词:精确度集上卷积

倪 黎,邹卫军

(南京理工大学自动化学院, 南京210094)

0 引言

基于大数据的深度学习是机器学习的新领域,也是其发展的趋势所在。深度学习的基础结构是深度神经网络,多层非线性运算单元组成深度学习的网络架构,这些单元类似于生物的神经细胞,同时具有自适应的特点。

以深度学习理论为基础的Inception是ILSVRC 2014比赛的冠军[1],网络结构的灵感来源于NIN[2],由Inception v1逐步发展到Icpetion v4[3-5]。该网络从扩展网络的宽度入手,组合了几种不同的卷积结构,在保证层数的同时大幅减小了参数量,解决了参数冗余带来的过拟合等问题。

Xception[6]是Inception的极端化体现,不同于常规的卷积操作,Xception使用深度可分离卷积(Depthwise Separable Convolutions),将通道间的相关性和空间相关性分开考虑,在不增加参数量的情况下取得了非常好的效果。由于Xception的优秀表现,使其在众多领域得到应用。文献[7]用Xception模块改进了U-Net体系结构,从而提取了遥感图像中的建筑物。文献[8]则比较了Xception等网络进行烟雾检测的能力。

SEnet(Squeeze and Excitation Networks)[9]是Imagenet 2017图像分类任务的第一名,其特点在于它考虑的不是从空间维度上优化神经网络,而是着眼于特征通道之间的关系。SEnet中的SE模块能够增加有用特征的影响度,弱化无用特征所占的比重,从而提升网络性能。通过与Xception网络的结合,能够更进一步提升Xception的准确度。

本文将SE模块嵌入Xception中,通过实验证明,SE模块能够有效地提升Xception的精确度。再将SE-Xception应用到动物种类识别中,取得了良好的效果。

1 理论基础

1.1 卷积神经网络基本结构

卷积神经网络(CNN)[10]主要由特征提取层和特征映射层构成,能够自主提取图像特征,可以直接使用原始图像,避免了对输入图像的复杂预处理过程。

卷积神经网络由一系列卷积层、激活层、池化层及全连接层构成。卷积过程提取输入信号的不同特征,每个卷积核提取整个特征图上的某个单一特征,多核卷积使得特征被充分提取,提取到的特征再作为输入传入下一层,这些特征由低级到高级层层递进。因此,深层的网络结构使学习的特征更加全局化。

1.2 Inception网络

为了解决参数过多的问题,Inception网络中的Inception模块使用了多分支结构增加网络宽度,在分支中加入1×1卷积来减少参与运算的通道数,并且用全局平均池化代替了全连接层。

1.3 Xception网络

受到Inception模块的启发,Xception将前者的思路极端化,同时引入了深度可分离卷积。经过极限化对比分析,使用深度可分离卷积代替Inception模块,将卷积操作在通道上和空间上完全分离开。首先进行通道上的卷积以获得特征图,再使用1×1的卷积核将这些特征图融合起来。一个简化的Xception模块如图1所示。

图1 简化的Xception模块Fig.1 Simplified Xception module

Xception包含36个卷积层、14个模块,每个模块中包含若干个深度可分离卷积,后接池化层,并且几乎都采用了Resnet中的残差连接[11]。除残差连接中的1×1卷积外,使用的卷积核全部为3×3大小。最后进行全局平均池化,经过全连接层输出结果。

1.4 SE模块

SE模块的核心是压缩(Squeeze)和激励(Excitation)。在卷积操作得到具有多个通道的特征之后,使用SE模块可以重新标定每个特征通道的权重。SE模块分为3个步骤,分别是压缩、激励和重定权重(Reweight),原理图如图2所示。

压缩操作使用全局平均池化(Global Average Pooling)将每个特征通道都压缩成一个实数,这样就将感受野扩展到全局范围。该实数由如下公式得到

式(1)中,u为通过卷积后得到的特征图,C为u的通道数,W×H为u的空间维度。

图2 SE模块原理图Fig.2 Schematic diagram of SE module

接着,激励操作捕获压缩后的实数列信息,使用两个全连接(FC)层增加模块的非线性。先经过第一个全连接层降维,再通过ReLU激活,然后经过第二个全连接层升维,最后经过sigmoid激活函数,整个过程如下

式(2)中,δ为非线性激活函数ReLU,W1和W2分别为两个FC层的参数,σ为sigmoid函数。

最后重定权重,用原特征逐通道乘以激励操作获得的通道重要度系数,得到重新标定的特征

2 融合SE模块的Xception网络架构设计及实验

2.1 实验设计

(1)网络结构

为了减少参数增长,仅在Xception的Middle flow部分嵌入SE模块,嵌入方式如图3所示。

图3 SE模块嵌入Middle flow的示意图Fig.3 Schematic diagram of SE module embedding Middle flow

输入的训练图像先经过若干个深度可分离卷积得到特征图,再经过SE模块、重定通道的重要程度系数,从而使得有效特征的影响力得到增强,无关特征的影响力被削弱,最后加上残差。文献[9]通过对比实验比较了降维率r的不同取值对实验结果的影响,兼顾错误率和参数量,本实验SE模块中的参数r选取16。由于没有在特征通道数较多的层中嵌入SE模块,因此模型的复杂度和计算量仅有微量增加。

(2)数据集

验证实验在Oxford-IIIT Pet[12]数据集和CUB_200_2011[13]数据集上进行。

Oxford-IIIT Pet数据集包含了37个种类的宠物,每个种类有大约200张图片,一共7349张图片。CUB_200_2011是一个鸟类数据集,有200个种类,11788张图片。

将上述每个数据集所有数据的80%划分为训练集,20%划分为测试集。

(3)数据预处理

为了适应网络所需的输入数据大小,使用二次线性插值法将原始图片尺寸统一放缩为299×299。再进行零均值化处理,即减去同一个数据集中所有图片的均值,使得处理后的均值为零,这样可以加快反向传播过程中模型的收敛。再除以所有图片的标准差,从而使特征标准化。

(4)实验过程

将原始的jpg格式数据集转换为TFRecords格式(TFRecords是TensorFlow的一种标准二进制数据格式),能够使图片读取更加高效。使用shuffle batch随机打乱批量读取,读取的图片数据输入网络,经过一系列层,最后输出稀疏表示的分类结果。

损失函数使用Softmax交叉熵损失

式(4)中,k为预测的类别数,zj为第j个类别的预测输出,N为一个训练批次的大小。

优化器为Adam[14],Adam能够在消耗更少资源的情况下使模型更快收敛。初始学习率设置为0.0001,使用指数衰减法,学习率更新公式如下

式(5)中,lr为初始学习率,β1为Adam优化算法中梯度的一阶矩估计的衰减系数,β2为二阶矩估计的衰减系数,t为步数。

2.2 硬件平台及框架

使用的电脑配置为16G内存、i7-8700KCPU、gtx1080ti显卡。

实验在TensorFlow上进行,TensorFlow是谷歌2015年开源的基于数据流图的深度学习框架,能够快速地搭建网络。该框架支持分布式计算,有利于大数据集和大型网络的训练,高效灵活,在国内外得到广泛应用。TensorFlow可以在一个或多个CPU/GPU上运行,除计算机外,它还可以应用于移动设备等多种计算平台上。TensorFlow提供有十分便捷的可视化工具TensorBoard,能够以图形和曲线的形式展现数据,使网络结构和变量更加直观。

2.3 实验结果

在上述条件下分别训练30000步、50000步,训练集的精确度曲线如图4、图5所示。

图 4 SE-Xception与Xception在Oxford-IIIT Pet数据集上的实验对比Fig.4 Experiment comparison between SE-Xception and Xception on Oxford-IIIT Pet dataset

由实验结果可知,随着训练步数的增加,模型通过自主学习的方式调整权值和偏差,从而降低了训练误差,使得精确度逐步升高。在不同的数据集上,使用原始的Xception 模块进行训练,获得上升的精确度曲线。融合SE模块后,SEXception网络训练获得的精确度曲线均在Xception之上。图4中的Oxford-IIIT Pet数据集有1%~1.7%的提升,图5中的CUB_200_2011数据集有0.8%~1%的提升。

图 5 SE-Xception与Xception在CUB_200_2011数据集上的实验对比Fig.5 Experiment comparison between SE-Xception and Xception on CUB_200_2011 dataset

使用训练好的网络在测试集上分别进行测试,测试集的精确度如表1所示。

表1 测试集精确度对比Table 1 Accuracy comparison of test sets

由表1可知,融合SE模块的Xception在不同测试集上的精确度均高于原始的Xception。因此,SEnet可以进一步提高Xception的精确度。

3 在动物种类识别中的应用

3.1 数据集

Imagenet[15]是一个大规模图像识别数据库,它的出现对深度学习的发展产生了深远的影响。该数据库目前有14197122张图片,共21841个类别。

从Imagenet中搜集10种动物的彩色图片数据,剔除其中像素过小和模糊的数据后,一共有10074张。

部分种类图片示例如图6所示。

为了消除数据量差异对实验结果的影响,每类数据的数据量尽量相近,均在742~1188之间,数据分布如图7所示。

其中,9164张划分为训练集,910张划分为测试集,训练集和测试集划分比例如图8所示。

图6 动物图片数据示例Fig.6 Examples of image data for animals

图7 动物图片数据分布折线图Fig.7 Polyline diagram of distribution for animals image data

图8 训练集与测试集划分统计图Fig.8 Statistical diagram of the division between training set and test set

3.2 实验步骤及结果

将上述数据的训练集作为训练数据,使用Xception网络进行训练,Adam加快模型收敛。使用原始图片训练20000步,初步训练的训练集精确度曲线如图9所示(实线)。

图9 Xception 在动物图片训练集上的精确度曲线Fig.9 Accuracy curves of Xception on animal image training set

在0步~5000步之间,由于训练误差的快速下降,测试集的精确度迅速上升;在5000步~18000步之间,测试集的精确度仍逐步上升,但上升的趋势逐渐平缓;18000步之后,精确度曲线最终趋于稳定,继续训练得到的训练集精度为93.5%。由于数据中有除待识别物体以外的很多无关物体,网络在训练的过程中会学习到这些无关物体的特征,并将这些特征作为判断依据。因此,对图片进行适当裁剪除去冗余特征,再重新放大为299×299大小,使神经网络能够获得更清晰准确的训练数据。进行再次训练,得到的训练集精确度如图9和图10所示(虚线)。

输入的数据集去除冗余特征后,训练集精确度曲线收敛较快,最终精确度为95.0%,相比于不处理数据集时提升了1.5%。由此可以说明,图像数据中的其他物体会形成干扰因素,对网络的学习造成一定影响。再在此基础上用SE-Xception网络替换Xception网络,同样训练20000步,获得的训练集精确度如图10所示(实线)。

图10 除去冗余特征的Xception和SE-Xception训练集精确度曲线Fig.10 Accuracy curves of Xception and SE-Xception with redundant characteristics removed on training set

由图10可知,将Xception网络替换为SEXception网络后,训练集精确度提升了2%。用训练好的网络分别在测试集上进行测试,测试集精确度如表2所示。

表2 动物种类识别测试集精确度Table 2 Accuracy of animal species recognition on test set

由表2可知,测试集的精确度逐步提高,最终达到95.63%。

4 结论

本文通过在TensorFlow平台上进行实验,证明了融合SE模块的Xception具有更高的精确度,能够更好地应用于图像识别问题。在动物种类的识别任务中,收集了10种动物的图片数据,制作成TFRecords格式。先使用Xception网络进行训练,输入不经处理的原始数据时,测试集精确度只有88.79%;除去冗余特征后,测试集精确度提升到了90.87%;在此基础上将Xception替换为SE-Xception网络,最终测试集精确度能够达到95.63%。

猜你喜欢

精确度集上卷积
基于双空间模糊邻域相似关系的多标记特征选择
基于全卷积神经网络的猪背膘厚快速准确测定
关于短文本匹配的泛化性和迁移性的研究分析
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
放缩法在递推数列中的再探究
数形结合
师如明灯,清凉温润
几道导数题引发的解题思考