基于MV-PearlNet的珍珠细粒度分类方法

2021-02-04 13:51陈晋音
小型微型计算机系统 2021年1期
关键词:特征提取聚类珍珠

钱 涛,熊 晖,陈晋音

(浙江工业大学 信息工程学院,杭州310023)

1 引 言

珍珠作为一种珠宝,自古以来就深受人们喜爱.珍珠的价值与它的属性特征有关,如大小、光泽、形状和纹理等.对珍珠分类后再进行销售可以大大提高收益.目前,珍珠的分类分拣主要依赖人工,对于珍珠分拣任务,同时考虑珍珠的多个特征比较困难,而且工作量大、成本高.同时分类准确度容易受个人视力、鉴别能力、情绪等因素影响.因此迫切需要设计自动图像分类模型来替代人工去处理细粒度珍珠图片.

图像分类的核心部分是图像特征提取和特征分类.传统的机器学习算法已经提出了许多特征提取方法,比较代表性的有基于灰度强度、颜色直方图、颜色矩阵等图像颜色属性的特征提取法[1,2],基于边界的傅立叶描述子、区域的矩不变量、有限元法、小波变换等形状特征提取法[3,4],基于共生矩阵、邻接图、统计灰度特征、直方图特征等纹理特征提取法[5,6].李革等人[7]将珍珠图像转化到极坐标系下,通过傅里叶系数来描述珍珠形状,对珍珠进行形状分类.李益红等人[8]提出新的珍珠形状检测算法,通过4个方向的边缘算子获得珍珠边缘后,划分到4个象限.通过计算各个象限中边缘链码之间的相似度来判断形状的均匀性,提出四象限边缘链码自相似检测算法.在判断珍珠形状均匀性方面取得不俗的效果.以上所提到的这些算法在珍珠图片分类上都取得了一定的效果,但它们利用单一特征的珍珠分类运用到实际复杂场景中效率并不高.宣琦等人[9]设计了一种新的局部纹理提取方法,并通过提取珍珠多视角表面图像的形状特征、全局纹理特征和局部纹理特征训练支持向量机,获得了良好的分类效果.这些传统的手工特征提取法分别取得了一系列成果,但仍存在着许多不足:1)特征主要是低级特征,不具有语义信息,对于细粒度分类来说不具有区分度,很难使用一种手工特征来区分出所有的类别;2)特征需要有先验知识作为指导,对于设计人员要求较高,比较耗时耗力.

深度学习典型的代表结构卷积神经网络(Convolutional Neural Networks,CNN)具有主动学习目标对象特征的特点,近年来被广泛应用于图像识别上.2012年,8层的AlexNet网络[10]被提出,由于开创性的使用RELU激活函数,并使用LRN(Local Response Normalization)对输出结果做平滑处理,在ILSVRC比赛上获得最佳分类结果.2014年,GoogLeNet[11]采用Inception结构,使网络达到22层,在ILSVRC-2014中获得了第一的成绩.2015年,采用各层之间跨越几层直连的Resnet模型被提出,通过在中间层添加辅助损失(Auxiliary Loss)的方式,使模型达到了152层,并且在ILSVRC-2015分类比赛中获得第一名[12].Tian等人[13]提出一种批量重归一化去噪网络(BRDNet),通过增加网络的宽度和采取残差学习方式,使模型获得更多的功能.Jiang等人[14]将CNN用在苹果农药残留检测上.Taheri等人[15]针对年龄识别问题,提出一种有向无环图卷积神经网络(DAG-CNN),将年龄估计的特征提取和分类阶段融合到单个自动学习过程中,有效地提高了性能.以上的CNN模型只能处理单视角图片,无法同时提取目标图片的多角度的特征信息,所以对于珍珠等视觉差异小的对象的细粒度分类,总体性能表现不佳.Xuan等人[16]基于多流卷积神经网络(MS-CNN)设计了一种自动珍珠分级机,在珍珠分类上取得良好的效果,但模型训练过程中并未考虑中间层损失的特征,导致特征利用不充分.

针对已有CNN模型的特点与不足,为了充分利用珍珠多视角图像信息,本文提出基于多视图珍珠卷积神经网络模型MV-PearlNet的自动图像分类方法.主要有以下几点贡献:1)针对珍珠图像特征提取不充分,提出了一种能同时提取多视角图像特征的CNN结构;2)为了充分利用前面层丢失的信息,采用中间层特征融合后的特征作为珍珠的特征表达;3)考虑到可能存在的训练数据量不足的情况下,通过结合K-means算法的方式进行主动类标学习,一定程度上解决带类标数据不足的问题,提高模型对于珍珠的分类准确率.

2 基于MV-PearlNet珍珠精细分类卷积神经网络

2.1 MV-PearlNet模型结构

针对上文中提到的珍珠图像特征所具有的特点以及目前主流深度学习模型存在的不足,本文对已有的卷积神经网络结构进行改进,提出了多视角卷积神经网络模型.该模型共有5个视角的图像输入,每个视角CNN模型输入一个视图,其中第1个网络的输入为左视图图像,第2个网络的输入为右视图,第3个网络的输入为主视图,第4个网络的输入为俯视图,第5个网络的输入为后视图,充分利用了珍珠多视角图像.此外,为了有效的融合各视角图像之间的特征信息,本文设计了一个Else-Wise层将5个网络的输出逐元素相加进行特征融合,最后输入到softmax层得到分类标签.对于输入的珍珠5视图输入,模型会输出一个预测标签y′,通过损失函数l(y′,y)计算出y′与真实标签y之间的损失,本文中MV-PearlNet选择交叉熵作为损失函数,模型各个分支网络通过链式求导法则反向传播进行联合训练,来更新模型参数.多个视角的模型共同训练能够使得各个网络接近最优方向,可明显提升整体网络的性能.MV-PearlNet的具体结构如图1中所示.

图1 MV-PearlNet结构示意图Fig.1 Schematic diagram of MV-PearlNet structure

由于GoogLenet网络具有良好的分类性能,本文中MV-PearlNet每个单视角CNN模型都是基于GoogLenet网络,前面几层由交替堆叠的卷积层和池化层组成,后面紧跟着9个inception模块,每个inception模块由一系列1×1,3×3和5×5的卷积核以及一个3×3的最大化池化层组成,此部分具体结构如图1中每个模块引申出来的部分,这主要是为了降低参数量和模型复杂度,同时为了避免梯度消失的问题.整个模型被分成3个部分,每3个inception结构都会添加一个目标损失函数,构成了2个辅助分类模块和1个最终的分类模块,记为s1模块,s2模块和s3模块.MV-PearlNet移除了LRN层,用BN(Batch Normalization)层[17]来替代.来起到加速收敛,缩短训练时间,控制过拟合,降低网络对初始化权重的敏感性作用.

假设输入模型的批量图片数据集为B={x1,…,xn},则整个BN过程可以描述如下:

(1)

(2)

(3)

(4)

整个训练过程中,卷积层的权重在5个视角之间共享.因此实际模型比没有权重共享的模型占有更小的内存.同时考虑到个体每个视角图片之间存在差异,每个视角的CNN模型的全连接层之间的权重更新是独立的.

本文将第l层的第k个神经元输出定义为fk,则可以用一系列的公式来表述训练的过程:

(5)

其中:

(6)

(7)

(8)

最终将这些特征通过全连接层的中间激活函数来堆叠起来形成最终的特征.

对于全连接层,文中使用ff1(x)表示第1个全连接层的特征图,A表示是相应的激励函数,*表示卷积运算的过程,wf1表示第1个全连接层的卷积核的权重,bf1表示全连接层的偏置量.具体用公式可以表示成:

(9)

对于MV-PearlNet来说,每个视角的CNN模型前向传播过程都是一致的.如图1所示,在倒数第2层进行平均池化操作之前,添加一个Else-Wise层,采用逐元素求和的操作来对多个视角的特征进行特征融合,我们得到一个新的特征F(x).

F(x)=∑k∈φ(ff1(x))k

(10)

其中φ是索引集{1,2,…,5}.F(x)包含了每个视角的信息,充分应用了各视角图像的特征信息.

特征融合之后,用Softmax函数在训练阶段调整向后传播的网络权重,特征F(x)最终被送入Softmax函数.模型将非线性Relu函数(y=max(0,x))用于除最后一个完全连接层以外的所有卷积层和所有全连接的层.相比于sigmoid函数,它具有更好的拟合能力.

2.2 基于特征融合后的类标学习

本小节详细阐述采用MV-PearlNet模型提取珍珠图片特征的过程.其中MV-PearlNet模型分类器之前的层次结构相当于一个通用的特征提取器,输入模型的图片会生成一个类似于SIFT的具有很好泛化能力的特征向量.模型在下采样的过程中,基于局部梯度的特征不可避免地丢失视觉信息.CNN中间层提取的特征是有用的,它们可以表达图像的中间或低级信息.因为较低层的特征图包含着图像的更多结构细节,简单图像在较低层处能很好地表示,较高层的特征图更多的表现目标对象的语义信息,具有复杂背景的图像的前景可以在较高层激活,这些特征对于细粒度分类任务都是重要的,所以在分类问题中,从多个阶段采用CNN模型提取特征是值得的.为了增加特征的区分度,本文在考虑语义信息等高级特征的同时,也考虑到了底层的纹理,轮廓等特征.

在特征提取模块,将辅助分类器模块s1,s2,提取的特征与最后s3的输出特征进行融合作为珍珠高维特征表示,从而提高特征的表达能力,具体过程如下列式子所示:

(11)

(12)

(13)

则整个MV-PearlNet提取的特征可以表示为:

(14)

考虑到MV-PearlNet模型提取的融合后的特征维度过高,对实验造成维度灾难的影响,所以实验先对融合后的特征进行降维,这里采用主成分分析(Principle Component Analysis,PCA)[18]降维统计分析算法.假设MV-PearlNet模型提取的特征f是一个n*d维的数据,其标准化后的矩阵为Z.则矩阵Z中的组成元素zij计算公式如下:

(15)

则可以计算出特征样本的协方差矩阵C,其中C每个元素则可以表示为:

(16)

其中i,j=1,…,d则进一步可以求出协方差矩阵C对应的特征向量u1,…,ud,特征根λ1,…,λd.选取前k个最大特征值构建映射矩阵W,最后将特征矩阵Z转换到新的子空间,则主成分矩阵Y即为ZW.

然后使用K-means算法[19]对处理后的特征进行聚类,随机初始化K个聚类中心,K值是珍珠数据的种类个数.通过计算样本到聚类中心的欧式距离,将每个对象分配到距离最近的那个簇内,重新计算聚类中心为:

(17)

其中ei是聚类得到的簇,i=1,…,k,重新计算各个元素到新聚类中心的欧式距离,重新划分簇,重复这个步骤,直到聚类中心不再发生变化或者达到预设的最大迭代次数.为了准确了解相应的簇对应的类标,实验中,为了保证聚类簇中的样本纯度,实验只提取聚类中心周边的样本作为该簇中的代表样本,将每个簇中的代表样本都打上相应的类标.此方法起到扩大数据集的作用,也省去了人工打类标的繁琐工作,更经济、方便快捷.整体流程如图2所示.

3 实验结果与分析

3.1 数据集

本文论证模型的数据集使用的是从诸暨淡水湖中采集到的珍珠,通过单目多视角摄像装置采集珍珠的图像.单目多视角摄像装置主要包括一个普通的CMOS摄像机和4个平面镜,一次拍摄可以获取俯视图、主视图、左视图、右视图、后视图等5个视角的珍珠表面图像,装置具体细节可以参考文献[20].实验从每类珍珠中都采集了1500颗作为图像采集样本,共采集到5个面总计10500张珍珠图像.考虑到实验的科学性,采集到的图像样本都由专业的珍珠从业人员打上标签.珍珠按照珍珠颗粒大小以及纹理可以被细分成7个类:二档冲头、短螺纹、高档米珠、差米形、中档米珠,高档颗头螺纹、高档面光,具体如图3所示.实验将采集到的珍珠图片背景颜色设置为黑色,通过阈值可以轻松得到珍珠部分的图像[21],然后按照6∶2∶2的比例划分为训练集、验证集、测试集,即训练集最多为900颗珍珠数据.

图2 类标学习的主要流程Fig.2 Main process of class learning

3.2 实验参数设置与结果分析

文中所有深度模型使用Tensorflow深度库来实现,并在NVIDIA Tesla K40c GPU上进行训练.实验通过随机梯度下降(Stochastic Gradient Descent,SGD)进行端到端的训练,批量大小(Batch size)对于SGD方法很重要,值太小的话可能导致模型不会收敛,值太大则会耗尽内存,通过结合GPU的运算能力,最终设置为20,优化器选择动量优化器(Momentum Optimizer),学习率为0.05,动量为0.9,衰减为0.9,epsilon为0.1.卷积核权重采用符合均值为0,标准差为0.01的高斯分布来初始化,偏置值都初始化为0.1.网络训练过程中,实验的迭代次数为43000,每迭代10000次,学习率衰减为原来的1/2.该实验共设计了3组对比实验,通过对比AlexNet、GoogLenet和VGG19 3种模型与MV-PearlNet的分类准确度来验证方案的正确性.AlexNet、GoogLenet、VGG19和MV-PearlNet在测试数据上的正确率如表1中呈现.同时为了验证MV-PearlNet的有效性,每个模型增加了一组将多视图图像全部作为训练集输入单一卷积网络中的实验(如表1中“同时输入”一列表示).图4、图5分别显示训练阶段的损失变化趋势和验证集上准确率的变化趋势.

图3 7类珍珠的示例图Fig.3 Example of seven types of pearls

表1 Alexnet,GoogLenet,VGG19与MV-PearlNet分类结果对比Table 1 Alexnet,GoogLenet,VGG19 and MV-PearlNet classification results comparison

从表1中可以看出,MV-PearlNet的表现总是比主流单视图CNN模型好.在珍珠的细粒度分类任务中,MV-PearlNet获得的准确度最高可达到91.47%,明显高于Alexnet,GoogLeNet和VGG19模型的84.71%,87.42%,87.51%.MV-PearlNet的性能提升主要归结于这几点:使用了多视图特征,使特征的表达能力更强;使用了特征融合,使表达轮廓、颜色、纹理的低层次特征和表达珍珠语义信息的高层次特征融合,产生高视觉相关性的类之间的区分度更加明显的效果.相比于MV-PearlNet,单视角模型仅仅使用了一个面的特征,对于每个视角特征差异微小的球状珍珠来说,并不具有充分的表达能力.

在进一步的实验中,在使用的珍珠总量数据集一定的情况下,为了模型训练更充分,达到提高分类准确率目的,将MV-PearlNet和K-means算法结合起来,分别使用7类珍珠中的300颗作为无监督学习的学习对象,将MV-PearlNet提取的特征作为珍珠的特征表达输出.PCA算法进行降维后得到2100×50的特征向量,K-means算法的K设定为7,为了降低聚类算法聚类中心的随机选择对聚类结果的影响,本文采取了实验20次取平均值的方法来降低实验结果的随机性.我们使用聚类的准确度和纯度作为评价指标对聚类结果进行评估.最终900颗的特征提取最充分,20次的实验结果的准确度为76.52%,纯度为76.61%.将聚类后打上类标的数据和之前的训练集一起放入模型进行训练,分类结果表2所示.

图4 训练阶段时验证集上准确率变化趋势Fig.4 Trend of accuracy on the verification set during the training phase

图5 训练阶段loss值变化趋势Fig.5 Trend of loss value during training

表2 类标学习前后分类结果对比Table 2 Comparison of classification results before and after class labeling

从表2可以看出,在训练数据量一定的情况下,扩充后的模型分类正确率不同程度提高了,训练集数量越少提升效果越明显,效果最明显的提高了3.63%.这主要是因为:在有限的训练集前提下,通过MV-PearlNet模型结合K-means的方法对未带标签的数据进行类标学习,起到了扩充训练数据量的效果,一定程度上丰富了训练样本,改善了因训练数据不足导致的欠拟合现象,提高了模型的分类准确率.这也一定程度证明了通过聚类算法打上类标增加数据量的方法的有效性.

4 结束语

本文针对珍珠细粒度分类中单一视角模型不能充分利用图像的特征问题提出了MV-PearlNet模型,该模型能同时处理多个视角的图像输入,并自动学习图像的特征.同时针对训练数据量不足的问题,提出了基于MV-PearlNet结合K-means算法的扩充数据集的方法.该方法充分结合了MV-PearlNet主动学习特征的能力以及K-means算法简单快速的特点,通过在珍珠数据集上进行实验验证后,表明在训练数据集不足的情况下,通过此方法进行类标学习后扩充了训练数据集,能一定程度提升模型的分类准确率.

猜你喜欢
特征提取聚类珍珠
同步定位与建图特征提取和匹配算法研究
一种傅里叶域海量数据高速谱聚类方法
基于知识图谱的k-modes文本聚类研究
一种改进K-means聚类的近邻传播最大最小距离算法
基于模糊聚类和支持向量回归的成绩预测
“种”珍珠真神奇
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
基于曲率局部二值模式的深度图像手势特征提取
雨珍珠
取珍珠