基于显著性检测和迁移学习的花卉图像分类

2019-03-18 07:00刘秀磊侯凌燕刘旭红李红臣
关键词:花卉显著性准确率

吴 迪,刘秀磊,侯凌燕,刘旭红,李红臣

(1.北京信息科技大学 计算机学院,北京 100101;2.国家安全生产监督管理总局通信信息中心,北京 100013)

0 引言

花卉图像背景的复杂性和花卉自身多样性等因素导致花卉图像分类成为图像分类学科一大问题。其中,如何把花卉轮廓从花卉图像中提取出来是去除背景对花卉分类影响的关键。近年来,许多研究者对花卉图像分割和花卉图像分类展开了研究。杨耀等[1]提出了一种基于标记提取的GrowCut自动分割算法,该方法在分割之前使用阈值分割预处理,这样可能会因阈值限定而导致分割效果不佳;谢晓东等[2]提出了一种基于显著性检测和Grabcut的花卉图像分割方法,该方法过程繁琐,对每张图片进行分割的工作量较大;Mabrouk等[3]提出了一种基于颜色特征提取的花卉图像分割方法,在Lab颜色空间上使用最大类间方差(OTSU算法)对花朵图像的前景和背景进行划分,但由于OTSU算法对目标大小和噪声非常敏感,分割效果不理想,影响了图像分类的准确性。背景先验显著性检测由Yang等[4]提出,该算法考虑将四边作为先验背景,根据基于图论的流行排序算法,通过与标记的节点的相似性计算显著性。该算法可以有效地辅助提取花卉图像主题区域,不需要预先对图像进行标注,也不需要对每类图像分别进行训练。因此本文将基于背景先验的显著性检测算法用于花卉分割中,提出一种改进的先验背景显著性检测花卉分割方法,将OTSU方法用于最后的分割中。

传统的方法需要为每个花类建立一个分类器,并获取大量的花卉图片来训练这些分类器。文献[5-6]通过提取花卉图片的Lab颜色特征、SIFT特征或纹理等特征进行花卉图像的分类;文献[7]使用多特征融合方法对花卉图像进行分类;文献[8-9]采用的是先对图像进行分割再进行分类的方法。由于需大量人工标注信息、特征信息不足,传统花卉分类方法分类能力有限。在Oxford flowers-102数据集上,传统花卉分类方法准确率均低于81%。

近些年,深度学习方法因其在学习图像高层次特征上的优势,被广泛应用到图像分类任务中。文献[10]使用泛化性较好的支持向量机(support vector machine,SVM)算法,替代卷积神经网络中的Softmax层来训练特征,得到最终的花卉图像分类器;文献[11]利用LeNet技术在花卉图像识别中的应用提高了花卉识别的准确性;文献[12]针对花卉图像构造了一个全新的深度卷积识别模型,在ImageNet数据库上做的实验表明该模型对于花卉图像的识别效果明显;文献[13]对Alex Net深度卷积神经网络进行改进,该方法能够更好地实现非刚性物体的识别,并能解决花卉图像类间不平衡的问题。

但以上方法不能针对花卉图像更加底层的特征建立相应的网络用于分类。本文利用迁移学习的思想,采用深度卷积神经网络的方法,将在大规模数据库上预训练的网络用于花卉图像的分类,并改进其中的架构,使之更加适用于花卉图像的分类任务。

1 复杂背景的花卉图像分割

日常拍摄的花卉图像均包含杂乱背景,即使是同类花卉图片,所处的环境也不尽相同,这些复杂背景会对花卉图像的自动分类造成一定程度上的干扰。为有效进行花卉图像自动分类,本文先将花卉的主题区域从复杂背景中提取出来,然后将分割后的图片放入网络中进行训练。

本文通过改进文献[14]的图片分割方法对花卉图片进行分割。花卉图像分割的主要思想是:首先,将花卉图像进行超像素分割,再分别根据4个边界超像素块的显著性对其余超像素块的显著性进行查询;接着对4个查询结果进行合并,得到最终的显著图;最后对显著图进行自适应二值化,得到最终的分割结果。

1.1 超像素分割

为采用区域间对比的方式来计算一个区域的显著度,本文根据文献[14]提出的简单线性迭代聚类(simple linear iterative cluster, SLIC)方法将图像分成K个均匀区域(即超像素),一般取K=200。该算法的主要思想是根据像素点间的颜色和距离相似性进行聚类。具体步骤如下:

2)调整聚类中心。为避免聚类中心在轮廓边界上有较大的梯度,影响后续的聚类效果,在每个聚类中心周围3×3区域内重新调整聚类中心。利用式(1)计算周围3×3区域内9个像素点的梯度值,将聚类中心移到该区域内梯度最小的地方。

dx=(l(x-1)+l(x+1))2+(a(x-1)-

a(x+1))2+(b(x-1)-b(x+1))2

dy=(l(y-1)+l(y+1))2+(a(y-1)-

a(y+1))2+(b(y-1)-b(y+1))2

(1)

式中:l(·)、a(·)和b(·)分别表示在该处对应的LAB值;Δ为在(x,y)处的梯度值。

3)分配类标签。在每个聚类中心周围2S×2S领域为每个像素点分配类标签,即该像素点属于哪个聚类中心。将最近聚类中心点的超像素编号赋给该像素点,并将聚类中心的位置调整为整个超像素的重心。不断迭代该过程,直到每个聚类中心点不再发生变化。像素点和聚类中心点距离度量为:

(2)

4)合并超像素。经过上述迭代优化后,会出现超像素块尺寸过小,多连通,单超像素被切割成多个超像素等情况。这些情况可通过重分配超像素解决。主要思路:按照“Z”型走向,将不连续的超像素和尺寸过小的超像素重新合并给最近的超像素。

超像素分割过程如图1所示。可看出,经过超像素分割的花卉图像被分为大小均匀的超像素块,每个超像素内的像素点在LAB颜色空间内都是相近的。

图1 超像素分割流程

1.2 背景先验显著性

文献[15]指出,背景区域通常出现在图像的边缘,而显著目标通常在远离目标的图像中心附近。基于这种先验知识,本文选取处于图像边缘的超像素块作为背景区域,通过与背景区域在颜色空间的对比计算出其他区域的显著度。以下为计算图像背景先验显著性的过程:

1)计算流形排序。由于本文假定图像边缘处的超像素块为背景区域,因此需要计算背景超像素块与其他超像素快的相对显著性。流形排序算法根据给定节点与其余节点的相关性对其余节点进行排序,该算法目的是得到一个排序函数来计算未标记节点与给定节点的相关性。

文献[16]提出一个采用数据内在流形结构的排序方法。该函数定义为:对于数据向量X=[x1,x2,…,xn]T,分配给每一个点xi一个排序值,函数的输出为f=[f1,f2,…,fn]T。标记向量y=[y1,y2,…,yn]T,其中yi=1表示xi是一个给定的查询节点,yi=0表示不是。在数据集上定义一个图G=(V,E),其中V为数据的节点集合,E为图的边集合,可以由一个相似性矩阵W=[wij]n×n加权得到。节点的最佳排序计算问题可以看成是一个最优化问题:

(3)

为方便计算,将式(3)进行非规范化拉普拉斯变换,进一步写成:

f*=(D-αW)-1y

(4)

2)计算显著性。根据式(4),将输入图像用图结构表示。通过使用超像素分割方法生成许若干超像素块,每一块超像素对应图中一个节点Vi(1≤i≤|V|),并指定边缘处的超像素节点为查询节点。图结构使用正则图表示,即每个节点不仅与其相邻节点相连,也与其相邻节点的相邻节点相连的图。其边的权值为

(5)

(6)

同理,利用下、左、右3个边界作为查询,可以得到另外3个显著图Sb、Sl和Sr,最后将4个显著图相乘,形成最终的显著图:

Sbq(i)=St(i)×Sb(i)×Sl(i)×Sr(i)

(7)

将显著图归一化到[0,255]范围以便查看形成显著图的过程,如图2所示。可看出,对应某条边的显著图均不能将花卉轮廓很好地表示出来,但合成后的显著图可明显看出其中的花卉轮廓。

图2 形成显著图流程

1.3 基于OTSU的花卉图像分割

通过图像显著性的方法,可得到图像合成的显著图。将其进行二值化处理,将二值化的图作为掩码提取出原图的花卉区域。以下为将显著图中花卉图像部分分割出来的过程。

1)OTSU二值化。经过计算图像显著性后,得到合成的显著图,该图背景和前景之间的类间方差很大,本文采用文献[17]中提出的最大类间方差法(OTSU)对图像进行自适应二值化。OTSU是一种基于全局的二值化算法,它根据图像的特性,将图像分为前景和背景两部分。

记t为前景与背景之间的分割阈值,前景像素点所占比例为w0(t),平均灰度为u0(t);背景像素点所占比例为w1(t),平均灰度为u1(t),整张图像平均灰度为u,前景和背景图像的方差为g,易知w0(t)+w1(t)=1。则有:

u=w0(t)u0(t)+w1(t)u1(t)

(8)

g(t)=w0(t)×(u0(t)-u)2+w1(t)×(u1(t)-u)2

(9)

联立上两式可得:

(10)

前景和背景差异最大时,可认为类间方差g最大,此时灰度级阈值T为最优阈值:

(11)

遍历显著图中的每个像素点的灰度值,当该灰度值大于阈值T时,将该位置的灰度值设为255(白色,前景),否则灰度值设为0(黑色,背景),说明该位置是背景。得到二值化图。

2)提取花卉区域。将二值化图作为掩码,提取出原图的花卉区域,得到原始花卉分割图。提取花卉分割图的最小外接矩形,得到最小外接矩形分割图。在原图中取外接矩形位置裁剪的图像,得到ROI区域分割图。分割流程如图3所示。

图3 花卉分割流程

2 基于迁移学习的花卉图像分类

花卉图像分类的问题之一是花卉图像的训练数据量很小,若直接采用卷积神经网络参数初始化,并采取从头训练的方法,当前的训练数据量是不够的。采用迁移学习[18]的方法,选用已经训练好权重的卷积神经网络,用自己的数据集进行有监督的参数训练。

本文借鉴迁移学习的思想,将在大规模数据集ImageNet上训练的InceptionV3网络结构用作预训练网络的初始化权重。修改网络的顶层使其适于花卉分类的实验。对网络进行迁移训练和微调训练,提升模型的分类效果。

2.1 网络结构

本文利用在大规模数据集上训练的InceptionV3网络[19]作为花卉分类网络,该网络在InceptionV2的基础上改进了3种Inception模块[19]。

第一种Inception模块中,每个5×5的卷积被2个3×3的卷积所替代,如图4所示。

图4 第一种Inception模块结构

第二种Inception结构中,将n×n卷积分解成n×1和1×n两层卷积的形式。对于17×17的网络,最终选择n=7,如图5所示。

图5 第二种Inception模块结构

第三种Inception结构中,拓展卷积核组的输出。将3×3的卷积层拆分成1×3和3×1两种卷积层,这种架构用在粗网络(Coarsest Grid)中促进高尺寸图像的表示,如图6所示。

图6 第三种Inception模块结构

本花卉分类实验需要将102类花卉进行分类。为使该网络适用于花卉分类,本文对该网络进行改进,删除网络的最后一层全连接层,为扩大神经网络输入区域,加入一层全局平均池化层。加入一层全连接层(1024个节点),为了防止网络过拟合,加入了Dropout处理,一般将概率设置为0.5。由于分类的需要,最后添加一层全连接层(102个节点),激活函数采用Softmax,输出节点为102类。迁移后网络结构如表1所示。

表1 迁移后的网络结构(315层)

从表1可看出,网络输入为229×229×3,对应输入图片的尺寸。网络的输出为1×1×102,对应每类花的概率值。

2.2 网络训练过程

文献[20]指出,在数据集小,且数据与预训练时用的数据相似性不高的情况下,迁移训练后进行微调(Fine Tune, FT)训练很有必要。

本网络模型的训练过程包括2个步骤,网络迁移过程、网络微调过程。算法表示如下:

1)将基础InceptionV3网络在大规模数据集Dg上进行训练,得到网络Ng。

2)改进网络结构,使其适用于花卉识别的数据集,得到网络Nf。

3)将网络进行进行迁移训练,得到训练后的网络Nf-tl。

4)微调网络到目标花类数据集Ds。微调训练后,得到网络Nf-ft。

5)将最终得到的网络Nf-ft用于花卉图像的分类预测。

网络训练过程详细说明如下:

1)网络迁移训练过程。保持原始InceptionV3部分的网络权重不变,训练最后4层的网络参数。由于训练参数较少,选择较为平稳的优化器RMSprop。训练过程中,梯度下降时,每个批次包含32个样本,迭代轮数设为30轮。

2)网络微调训练过程。固定网络中前两个初始快的参数,使其在训练中值保持不变,重新训练其余层的参数。由于训练参数较多,选择收敛速度较快的优化器SGD,其中的学习率设为0.001,动量参数设为0.9,损失函数使用交叉熵损失函数。迭代轮数设为30轮,在梯度下降时,每个批次包含样本数和迭代轮数同迁移训练过程。

3 实验及结果分析

3.1 实验环境

本实验采用的软硬件实验环境如表2所示。

表2 实验软硬件环境

在Linux系统下,花卉图像分割过程采用C++语言实现,框架使用OpenCV视觉处理库。花卉图像分类过程采用基于TensorFlow的Keras深度学习框架,对花卉图片进行训练和测试。

3.2 图像数据处理

1)数据集。本实验选用Oxford flower-102公开数据集,该数据集是由牛津大学视觉几何组创建的花卉图像数据库。它包含8189张图片,包含102种花卉图像,每一种图像都在40~258张图片之间。该数据库同时也涉及到图像识别领域中诸多难点,如照明变化、视觉变化、背景复杂、花卉种类繁多、形态多以及颜色变化复杂,加上一些不同的花具有高度相似。该数据集对花卉图像的分类研究具有重要意义。

2)数据集增强。数据集增强方法可大大增加训练数据集的样本量,提高网络模型的泛化能力。实质上,数据增强方法是通过仿射变换等数据转换方法来人为增加数据集的样本量的过程。

本数据库只有8189张花类图片,对于102类花卉分类任务来说,平均每类只有80张图片用于花卉种类,每类花卉图片数据量依然很小,所以要进行数据集增强,才能完全满足训练网络的需求。以下为3种数据集增强方法:

a)考虑到不同的拍摄方向,为保证图像识别过程中倾斜和旋转不变性,图像在不同角度进行倾斜,并且进行水平和垂直图像旋转以增加样本数量。

b)考虑到复杂背景下,花卉图片的某一部分也是该花卉种类,对图片进行80%大小的随机裁剪和80%~120%的随机缩放,以增加样本数量。

c)考虑到雨、雾、雪天气和一些光照变化,不同季节不同拍照时间获取的图像亮度、饱和度和色调均有不同的变化,适当增加高斯噪声来增加样本数量。

利用以上3种数据集增强方法,通过训练数据集生成器从原数据中不断地生成训练数据,直到数据量达到目标迭代轮数所需的数据量为止。增强后的数据,在训练过程中可以有效地减少网络过拟合,增加卷积网络识别花卉图像的能力。

本数据库具有8189张图片,将其中7169张图片用作训练集,1020张图片用作测试集。用数据增强技术将该数据集拓展到原来的30倍,有效避免网络的过拟合现象。

3)数据预处理。进行图像数据增强后,接着对图像进行预处理。考虑到102类花卉图片分辨率不均等,将所有图片缩放到299×299像素,以完成网络统一化输入的要求。考虑到图片像素是从0~255,输入计算量较复杂,将图片像素点从0~255压缩到-1~1,以简化网络的输入。

3.3 分类结果与分析

在Oxford flower-102数据集上,我们利用本文的花卉图像分类算法进行了实验。将未经分割的图像数据(original)、原始花卉分割图像数据(saliency)、最小外接矩形分割图像数据(minRect)、感兴趣区域分割图像数据(roi)分别加入卷积神经网络中进行训练,前30轮为迁移训练过程,后30轮为微调训练过程,不同分类算法训练结果如图7所示。

图7 不同分类算法训练结果实验

不同分类算法的最终分类准确率如表3所示。

表3 不同分类算法对102类花卉分类准确率 %

从图8和表3可看出:

1)前30轮训练过程准确率震荡幅度较大,这是因为RMSProp优化器需要先行搜索初始学习率,然后对其逐数量级下降,故准确率有所震荡。

2)原始花卉分割图的分类结果比未分割的原图分类准确率低0.12%。这是因为原始花卉分割图虽然去除了花卉图像的背景的影响,但其周围充斥着黑色背景,位于黑色背景的像素点在网络中不能被很好地分出来,进而影响分类效果。

同理,具有较少黑色背景的minRect分割图(最小外接矩形)没有ROI分割图(感兴趣区域)的分类效果好。总体分类准确率minRect分割图比原图分类准确率高0.93%,ROI分割图比原图分类准确率高2.85%,验证了基于先验背景显著性的花卉分割方法对于花卉图像分类的有效性。

图8 分割后效果图

3.4 实验结果与分析

针对花卉图像分类,目前主要采用传统方法和基于深度学习的方法,且已经取得不少成果。文献[8-9]采用的是传统花卉图像分类的方法。文献[8-10]采用的是先对图像进行分割再进行分类的方法。文献[2]采用先将图片进行分割,再进行多特征融合的方法。文献[21]采用的是基于深度学习的花卉图像分类方法,改进了AlexNet网络进行花卉图像分类。本文方法通过背景先验显著性的方法确定花卉区域,利用训练好的网络模型对花卉图像进行分类。各种具体的分类准确率对比如图9所示。

图9 Oxford flower-102数据库实验结果对比

从图9中看出,本文方法的分类准确率明显高于其他方法。主要有以下几点原因:

①花卉图像背景复杂性在一定程度上给花卉分类带来了一些影响,基于背景先验显著性的花卉图像分割方法能够将花卉主区域从复杂背景中提取出来,在一定程度上减少了这些影响。

②花卉图像具有类内多样性和类间相似性,基于迁移学习的预训练网络InceptionV3架构对于花类图片的特点具有很好的分类鲁棒性,并且提高网络提取特征信息的能力,减少过拟合和梯度弥散现象。

为更直观地观察本文提出的花卉图像分类算法的分类效果,将第1~102类即标签0~101的每类的花卉分类准确率显示如图10所示。网络对于每类花都有一个预测的平均概率值,每类花测试平均概率如图11所示。

图10 Oxford flower-102数据库每类花卉准确率

图11 Oxford flower-102数据库每类花卉平均概率

从图10和图11中可以看出:

1)分类标签为2的花卉(风铃草)无论分类准确率还是平均概率都较低。这是因为风铃草具有3种不同颜色,而测试集中覆盖了这3种颜色。这对于网络提取颜色特征有很大程度的干扰。

图12 不同颜色的风铃草

2)分类标签为80(赤素馨)、26(穗冠花)、36(斗篷花)的花卉分类准确率均达到了100%,而平均概率均超过了99%,为分类准确率最高的3类花卉。分析知,分类准确率比较高的花卉大多在颜色或形态上与其他花卉有明显差异,如图13所示。

图13 分类准确率最高的3类花卉

4 结束语

花卉图像中花卉所处环境复杂性以及花卉类内多样性和类间相似性的特点使得花卉分类准确率不理想。针对花卉所处环境复杂性,本文提出了一种基于背景先验显著性的花卉分割方法,将花卉主体区域提取出来;针对传统网络进行花卉图片分类任务时出现的提取图片特征信息不全面等缺点,本文利用迁移学习的思想,采用在ImageNet数据集上预训练的InceptionV3网络架构。实验表明,该模型比未进行分割花卉图片的网络模型分类效果更好,且比传统方法和其他深度神经网络架构的分类效果好,分类准确率达到93.38%,验证了本文方法对于花卉图片分类任务的准确率和进行花卉识别的可行性。

本文方法还可拓展到类似领域进行分类。在植物学分类上具有普适性,但要借鉴植物学专家知识库做一些深入研究。同时也可作为动物种类研究的借鉴。

猜你喜欢
花卉显著性准确率
一种结合多尺度特征融合与像素损失加权的显著性目标检测方法
视频序列中视觉显著性图像区域自动提取仿真
三招搞定花卉病虫害
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
《花卉之二》
《静物花卉》
基于显著性权重融合的图像拼接算法