一种局部线性编码的深度学习果蔬分类算法
2020-04-11巨志勇张泽晨
巨志勇,张泽晨
(上海理工大学 光电信息与计算机工程学院,上海 200093)
1 引 言
商品交易智能化是近年来贸易发展的主要方向和趋势,类似水果、蔬菜等农产品在交易时主要依靠人工记忆或查询单价方式进行结算,增加了人力及时间成本.由于果蔬种类众多,且不同种类的果蔬在颜色、纹理及形状上可能具有较大的相似度,人工设计的图像特征难以很好的表述;且分类器结构简单,则无法映射复杂的特征.因此,如何设计具有更强表征效果的果蔬分类特征及选择合适的分类器仍然是近年来研究的热门问题.
为解决上述问题,Wu[1]使用主成分分析(PCA)来减少颜色、纹理和形态特征,引入多类核支持向量机(kSVM)作为分类器,总体准确率达到88.20%.Ji[2]用适合度尺度的混沌ABC(FSCABC)代替KSVM,并与前馈神经网络(FNN)结合.Wei[3]设计了由小波熵(WE)、PCA、前向神经网络(FNN)和基于生物地理学的优化算法(BBO)组成的系统,总准确度为89.47%.Garcia等人[4]提取了颜色色度、纹理和形状特征.Lu[5]以分数傅里叶熵(FRFE)为特征,并采用反向传播神经网络(BPNN)作为分类器.Lu和Li[6]用改进的混合遗传算法(IHGA)代替了BPNN,方法总准确率接近90%.
上述方法大都采用多特征融合及改进分类器的方法来描述图像,所以在分类准确性上要优于单一特征及传统分类器.但是同一种类的果蔬在不同图像中的颜色、纹理及局部信息都不相同,因此这些特征在表征能力上存在较大的局限性.随着深度学习的不断发展与完善,深度卷积神经网络(Convolutional Neural Network,CNN)被广泛应用于图像分析和目标检测,如脉络膜分割、异常检测、孤立囊肿判别、振动光谱数据分析等.鉴于卷积神经网络在图像分类与检测方面的优秀表现,Zhang等人[7]设计了一个13层的卷积神经网络进行果蔬特征提取,最终分类准确率达到了94.94%,验证了卷积神经网络对果蔬特征的强大表征能力.
基于上述不同算法的结果,本文提出一种融合人工设计特征和卷积神经网络特征的果蔬图像分类方法.将图像的局部特征、颜色特征和卷积神经网络特征采用判别相关分析方法进行降维和串行融合,最后输入到线性SVM进行分类.在自建的果蔬数据集的实验结果表明,与现有的上述先进算法相比,分类效果明显提升,且具有更低的特征维度和测试时间.
2 相关技术
2.1 LLC编码
特征编码是特征提取及构建字典后的重要步骤,由Yu等[8]提出的(Nonlinear Learning Using Local Coordinate Coding,LCC)可知,在编码过程中,特征局部性比稀疏性更加重要.但与稀疏编码(Sparse Coding,SC)相比,LCC需要解决L1-norm优化问题,计算量比较大.为此,Wang等[9]提出了局部线性编码(Locality-constrained Linear Coding,LLC)来提高LCC的算法效率.本文采用LLC对局部特征进行编码[10,11],LLC编码满足下列约束:
(1)
其中,⊙表示向量对应元素的乘积;xi为待编码的向量;B为视觉词典;si为得到的编码向量;λ为正则项,确保ui的稀疏性;di∈RM为不同编码的权重,为每个基向量提供不同的自由度,正比于它和输入向量xi的相似性.di可用式(2)计算:
(2)
其中:dist(xi,B)=[dist(xi,b1),dist(xi,b2),…,dist(xi,bk)],dist(xi,bj)是局部特征xi到视觉词汇bj的欧氏距离;σ控制di的权重衰减速度.
式(1)中的λ值越大[12],编码结果越稀疏,特征xi离视觉词汇bj越远,其编码系数就越小,极端情况下就是用其最近邻的几个视觉单词来重构它.
用拉格朗日乘子法可求式(1)所示约束问题的解析解为:
(3)
为进加速编码过程,LLC采取了一种近似处理方法:为每个特征描述符选择局部基向量,以形成一个局部坐标系.通过在视觉词典中找到xi的k(k (4) (5) 判别相关分析[13](Discriminant Correlation Analysis,DCA)是一种新的特征层融合算法,是对典型相关分析(Canonical Correlation Analysis,CCA)[14,15]方法的改进.传统的CCA利用两组特征之间的相关性来找到两组转换,使得转换后的特征在两组特征集中具有最大的相关性,而在每个特征集中不相关.而DCA消除了不同类之间的相关关系并且将相关性限制在同个类中,可以最大限度地提高同类中对应特性的相关性,同时将不同类之间的特性去相关化.其将类结构合并到相关性分析中,这有助于突出类之间的差异,且不存在基于CCA的算法所面临的小样本容量(SSS)问题. (6) (7) 其类间散度矩阵定义为: (8) 其中: (9) (10) 设Q(c×r)由r个特征向量组成,对应矩阵p的r个最大非零特征值有如下关系: (11) 则通过映射Q→ΦbxQ可以得到Sbx的r个最显著特征向量: (ΦbxQ)TSbx(ΦbxQ)=Λ(r×r) (12) 通过Wbx=ΦbxQΛ-1/2可以将Sbx单位化,并将数据矩阵X的维数由p维降为r维,即: (13) 其中:X′是X在空间中的映射;I为类间散度矩阵. 类似过程求解第二个特征集Y,并找到一个变换矩阵Wby,用它对第二个模态的类间散度矩阵Sby进行单位化,将Y的维数由q降至r. 此时X和Y已经转换为X′和Y′,其中类间散度矩阵也已经单位化.为了使一个集合中的特征只与其在另一个集合中的对应特征具有非零相关性,需要对转换后的特征集的类间协方差矩阵S′xy进行对角化,即S′xy=X′Y′T.用奇异值分解(SVD)来对角化S′xy: (14) 其中,∑是一个主对角元素非零的对角矩阵.令Wcx=U∑-1/2和Wcy=V∑-1/2,则有: (U∑-1/2)TS′xy(V∑-1/2)=I (15) (16) (17) 果蔬图像在进行分类时易受到光线、角度等方面的影响,而SIFT算法[16],将斑点检测、特征描述与生成及特征匹配等步骤结合到一起,提取了尺度、旋转、光照以及视角等变换上具有良好不变性的图像局部特征.由于传统的BoW方法缺失了局部特征的空间信息,因此本文采用空间金字塔(Spatial Pyramid matching,SPM)模型[17]来实现SIFT特征提取及编码.特征编码整个流程包括: 1)SIFT特征提取:记X=[x1,x2,…,xn],xi∈RD×N是提取的所有SIFT特征组成的矩阵(每列为一个特征向量); 2)字典学习:使用K-means算法学习字典B=[b1,b2,…,bk],bi∈RD×M,(每列为一个视觉单词); 3)K近邻搜索:对于任何一个待编码的特则xi,选取字典B中距离其最近的k个基,形成子字典Bi=[b(1),b(2),…,b(k)]; 4)特征编码:使用子字典Bi重构xi进行LLC编码; 5)SPM:使用SPM将图像分为三层:第0层代表整幅图像,第1层将图像分为4各区域;第2层分为16个区域; 6)最大池化:在每一层的每个区域内,对LLC编码重构后的xi所组成的矩阵运用最大池化技术将特征向量集映射为单个向量,并将三层中各个区域池化后的特征向量级联起来,形成最终的稀疏向量表示. 本文的卷积神经网络采用GoogLeNet下的Inception V3[18]模型在ImageNet上已经训练好的参数作为训练的初始值来对Inception_V3模型进行微调.设置学习率为0.001,动量为0.9,权重衰减为0.00004,完成深度卷积神经网络的训练.利用微调后的Inception V3模型进行特征提取,得到卷积神经网络倒数第二层学到的特征作为cnn特征,具体为一系列2048维特征向量.Inception V3模型的网络结构如表1所示. 表1 Inception_V3模型的网络结构Table 1 Network structure of the Inception V3 model 设FSIFT为包含SIFT特征向量的p*n矩阵;FSIFT+hsv为包含SIFT和hsv融合特征向量的q*n矩阵;Fcnn为包含cnn特征向量的v*n矩阵;label为长度为n的行向量,包含类标签.DCA降维融合步骤如下: 1)由式(6)得到三个特征集平均值和三个特征集中每个类的平均向量; 2)由式(9)计算Φb_SIFT、Φb_SIFT+hsv、Φb_cnn; 3)由式(8)计算三个特征集的类间散度矩阵Sb_SIFT、Sb_SIFT+hsv、Sb_cnn; 4)由式(10)对角化SbSIFT、SbSIFT+hsv、Sbcnn; 5)由式(12)获得对角化后的SbSIFT、SbSIFT+hsv、Sbcnn的特征向量; 6)由式(13)得到转换矩阵Wb_SIFT、Wb_SIFT+hsv、Wb_cnn; 7)由式(15)用奇异值分解(SVD)对转换后的特征集的类间协方差矩阵进行对角化; 假设X∈Rp×n,Y∈Rq×n表示两个转换前的特征集,Wx、Wy为转换矩阵,则其融合可以通过对特征向量进行串行拼接或求和来实现[19],如下式所示: (18) (19) 图1 果蔬分类系统框架Fig.1 Fruit and vegetable classification system framework 经实验对比发现,在融合得到的特征向量维数均在可接受的范围内时,串行融合的准确率更高,因此本文实验均采用串行融合. 基于局部线性编码的深度学习分类方法由特征提取和特征融合两部分组成.具体步骤如下: 步骤1.对每一幅图像提取SIFT特征FSIFT、HSV特征Fhsv、卷积神经网络特征Fcnn; 步骤2.对特征FSIFT进行局部线性编码,生成FLLC; 步骤3.对FLLC和Fhsv进行进行串行融合得到FLLC+hsv; 步骤4.分别让FLLC+hsv、FLLC分别与Fcnn进行判别相关分析,并将其各自降维后的特征向量同样进行串行融合,生成FLLC+hsv/cnn_DCA和FLLC/cnn_DCA; 步骤5.对FLLC+hsv/cnn_DCA和FLLC/cnn_DCA进行串行融合得到最终的特征向量,并同类标签一起放入SVM中进行分类测试. 算法框架如图1所示. 在文献[7]的果蔬分类研究中,所使用的果蔬数据集仅包含18种水果种类,总计3600张图片.存在果蔬种类较少,图片数量不足等问题.因此本文收集和建立了一个包含人工拍摄和网上下载图片的果蔬数据库.人工拍摄图片符合实际生活中超市结算摆放的真实情况,如图2(a)所示,用以验证不同光照条件和拍摄角度下算法的性能;网上下载部分图片背景复杂且数量、姿态各异,如图2(b)所示,用以验证不同果蔬数量、姿态和背景下算法的有效性.数据库包含日常生活中常见的46种类别果蔬,共13817幅图片.果蔬种类包括:苹果、香蕉、西兰花、黄瓜、火龙果、葡萄、上海青、圣女果、梨、土豆、西红柿、猕猴桃、生菜等.将图像尺寸均统一归一化尺寸为299×299以便处理. 图2 果蔬数据集Fig.2 Fruit and vegetable data set 为对比不同编码方式对局部特征编码的效果,本文对SIFT局部特征采用稀疏编码(Sparse Coding SPM,ScSPM)[20]和局部线性编码两种编码方式进行实验.对颜色直方图特征、SIFT特征及卷积神经网络特征进行不同组合的DCA降维及串行融合,选取出分类效果较好的组合方式.实验结果如表2、表3所示.其中,每种特征的识别准确率均为15次不同训练及测试样本实验结果的平均值;前三行分别为SIFT、HSV和CNN三种特征单独分类的效果;′+′代表串行特征融合;′/′来区分不同特征;′_′代表对特征进行DCA降维后的串行融合;r为训练集所占数据集比率. 由表2、表3可以看出:1)特征融合后的果蔬图像分类准确率高于原单类特征分类准确率;2)使用局部线性编码对SIFT特征进行编码效果要好于稀疏编码;3)使用DCA进行降维融合后特征的准确率要高于降维之前的特征融合识别准确率;4)三种特征进行DCA降维后的融合的准确率最高,比单纯的深度卷积神经网络特征至少高出2%以上,证明融合人工特征和卷积神经网络特征更有利于果蔬图像的分类. 表2 ScSPM特征融合识别准确率Table 2 ScSPM feature fusion recognition accuracy 表3 LLC特征融合识别准确率Table 3 LLC feature fusion recognition accuracy 表4 降维前后的特征维度及平均测试时间Table 4 Characteristic dimension and average test time before and after dimension reduction 使用DCA方法降维融合后的特征不仅识别率要明显高于降维融合前,同时维度与测试时间也大幅度下降,使得果蔬识别分类速度更快.具体特征维度与测试时间如表4所示.其中,测试时间均为15次随机样本循环实验平均值. 最后,本文与引言中提到的6种先进的方法:PCA+kSVM[1],PCA+FSCABC[2],WE+BBO[3],FRFE+BPNN[5],FRFE+IHGA[6],13-layer-CNN[7]进行了比较,结果如表5所示. 表5 本文方法与现有方法的对比Table 5 Experimental results of our methodand comparison with existing methods 由表5可以看出,在更多种类和数量的果蔬数据集中,本文基于局部线性编码的深度学习方法整体准确率达到97.28%,识别率高于单组的人工特征及其融合特征,并且高于深度卷积神经网络特征.同时其特征维度与测试时间均有大幅降低,能够更加快速的进行果蔬分类与识别.另外,本文实验均在自建的包含人工拍摄的自然环境下的图片以及网上下载的复杂图片的果蔬数据集上进行,可以更加有效的来对本文的方法进行验证. 本文提出了一种基于局部线性编码的深度学习果蔬识别算法.构建了包含人工拍摄和网上下载图片的数据库来进行算法的验证,实验分析了融合人工特征和卷积神经网络特征识别效果.试验结果表明对局部线性编码SIFT特征、颜色直方图特征及卷积神经网络特征进行DCA降维融合后可以取得较好的识别效果、更低的特征维度和更快的测试时间,相较于其他算法,更加适合于果蔬分类准确性和实时性的要求.为了进一步提高不同环境及背景下分类的准确性,下一步可以考虑尝试不同的分类特征、动态分配合理的权值,将各个特征进行加权融合等方式.2.2 判别相关分析
3 果蔬分类系统框架和方法
3.1 SIFT特征局部线性编码
3.2 卷积神经网络特征提取
3.3 利用判别相关分析降维融合
3.4 算法流程
3.5 算法框架
4 实验及结果分析
4.1 自建果蔬数据库
4.2 实验结果及分析
5 结束语