李 奇,王宇鋼
(遼寧工業(yè)大學(xué) 機(jī)械工程系,遼寧 錦州 121001)
圖像識(shí)別技術(shù)近年來發(fā)展越來越火熱,已被廣泛應(yīng)用于多個(gè)領(lǐng)域,例如金融、醫(yī)學(xué)以及人臉認(rèn)證等等,給人類帶來了極大的便利且在許多應(yīng)用場(chǎng)合提高了安全防護(hù)水平。目前,許多研究者也逐漸將機(jī)器視覺技術(shù)引入到零件分類中,并獲得了一定成果。
近年來,PCA-SVM圖像識(shí)別算法在各大識(shí)別與分類領(lǐng)域得到廣泛的應(yīng)用創(chuàng)新[1]。楊宇等[2]提取了追蹤目標(biāo)在實(shí)時(shí)領(lǐng)域的相關(guān)特征,將PCA得到的主成分作為SVM的輸入,實(shí)現(xiàn)目標(biāo)追蹤。許偉棟等[3]基于馬鈴薯形狀特征,將PCA得到的前2個(gè)主成分作為SVM的輸入,成功實(shí)現(xiàn)馬鈴薯自動(dòng)級(jí)分選。張庶等[4]將PCA-SVM算法應(yīng)用于人臉識(shí)別系統(tǒng),不僅縮短了數(shù)據(jù)計(jì)算的時(shí)間,又完成了人臉識(shí)別的目標(biāo)。本文將此技術(shù)應(yīng)用于工廠零件識(shí)別分類中,基于其計(jì)算量和識(shí)別率兩點(diǎn),在經(jīng)典PCA基礎(chǔ)上,提出分塊PCA算法,以提高零件圖像的識(shí)別率及識(shí)別速度[5]。利用PCA算法能夠有效排除特征數(shù)據(jù)間的冗余信息,而采用分塊PCA可進(jìn)一步提取細(xì)節(jié)特征,提升算法識(shí)別率以及運(yùn)行速度;采用SVM則是基于其處理非線性數(shù)據(jù)時(shí)具有的較理想的性能。
零件識(shí)別時(shí)通過分塊PCA對(duì)圖像進(jìn)行特征降維,提取出主特征向量,再將其送給SVM進(jìn)行訓(xùn)練,并運(yùn)用網(wǎng)格搜索法優(yōu)化SVM參數(shù),然后實(shí)現(xiàn)零件的自動(dòng)分揀。分塊PCA-SVM算法具體流程如圖1所示。
圖1 分塊PCA-SVM算法流程
PCA是將圖像的高維數(shù)據(jù)壓縮成低維數(shù)據(jù)(即無相關(guān)性的主成分向量),去除掉具有相關(guān)性的冗余信息及噪聲,提取后的主成分特征要盡可能地代表原圖像數(shù)據(jù)。它先是基于K-L(Karhunen-Loeve)正交變換定理,從原圖中提取出少量具有代表性的互不相關(guān)的主成分向量;同時(shí)運(yùn)用奇異值分解(Singular Value Decomposition, SVD)定理簡(jiǎn)化計(jì)算步驟,更快速地計(jì)算出所求的特征向量。PCA算法的特征提取步驟如下:
(1)設(shè)集合A包含M張圖片,即:
A={x1,x2,…,xi,…,xM}.
(1)
其中:xi=[xi1,xi2,…,xiN]T為第i個(gè)圖片灰度值矩陣的列向量,N為矩陣的維度。由此可見A是M×N階的矩陣。
(2)求平均值圖的列向量:
(2)
(3)求樣本差值z(mì)i:
(3)
(4)求協(xié)方差矩陣C:
(4)
其中:Z=(z1,z2,…,zM)。
(5)求矩陣C的特征值λi和特征向量ui,并取數(shù)目為d個(gè)的特征值λj及特征向量uj,以此特征向量構(gòu)成投影特征空間U:
U=(u1,u2,…,uj,…,ud).
(5)
步驟(4)中計(jì)算矩陣ZZT的維數(shù)較高,直接求其結(jié)果會(huì)影響計(jì)算速度。但依據(jù)矩陣AAT特征值與矩陣ATA特征值相同的原理,求取ZTZ的前d個(gè)非零特征值ηj及特征向量vj,再根據(jù)SVD定理獲得ZZT的特征向量:
(6)
從而就可以得到步驟(5)要求的特征子空間。
一般使用的特征值選擇方法是:通過計(jì)算閾值確定特征零件空間維數(shù),保留的特征向量對(duì)應(yīng)的特征值之和與原圖像特征值之和的比叫做貢獻(xiàn)率ei,計(jì)算公式如下:
(7)
其中:e為閾值。只要選擇的最小值d滿足式(7)即可。
圖2為經(jīng)典PCA算法進(jìn)行降維得到的主成分特征零件。
圖2 PCA提取的主成分特征零件
通過對(duì)PCA算法分析,其對(duì)噪聲及光照影響比較敏感,容易影響系統(tǒng)識(shí)別率,并且計(jì)算矩陣維數(shù)較高,不利于系統(tǒng)實(shí)時(shí)地自動(dòng)分揀零件。本文提出基于分塊PCA的零件識(shí)別改進(jìn)算法。首先對(duì)圖像進(jìn)行分塊,抽取局部特征,以減小外界環(huán)境影響,從而保證一定的識(shí)別率;然后對(duì)每一小塊矩陣使用PCA算法,此時(shí)矩陣維數(shù)減小,計(jì)算量相應(yīng)地減小,縮短了算法運(yùn)行時(shí)間;最后再將投影后的子塊矩陣合并起來。雖然處理的矩陣增多,但每個(gè)矩陣的維數(shù)大大地減小,因此最后綜合計(jì)算量還是減小。分塊PCA計(jì)算步驟如下:
(1)先將一張圖像為m×n的矩陣B切分成p×q個(gè)子塊圖像矩陣,即:
(8)
設(shè)子塊矩陣大小為m1×n1,其中pm1=m,qn1=n。
(9)
(2)求解所有訓(xùn)練樣本子塊矩陣的協(xié)方差矩陣S:
(10)
(3)求矩陣S的特征值λf及特征向量ωf,并依據(jù)特征值的貢獻(xiàn)率閾值h選取前z個(gè)特征值λt及特征向量ωt使其滿足式(11):
(11)
(4)將前z個(gè)最大特征值對(duì)應(yīng)的特征向量組成投影空間,再將所有訓(xùn)練樣本的子塊矩陣投影到該投影空間,獲得投影矩陣Ug(g=1,2,…,pqR)。
(5)將各個(gè)Ug按照原來的標(biāo)號(hào)進(jìn)行合成,從左到右從上到下,即合成矩陣Ca(a=1,2,…,R)為:
(12)
圖3為分塊PCA算法進(jìn)行降維得到的主成分特征零件。
圖3 分塊PCA提取的主成分特征零件
比較分塊PCA算法與PCA算法提取特征后得到的特征零件,由圖2、圖3可知,當(dāng)特征維數(shù)為20時(shí),分塊PCA提取的特征零件與原始零件更相近且更清晰,其具有與原零件很高的相似度。因此,分塊PCA對(duì)零件提取的主要特征更具代表性。究其原因,是由于分塊PCA將一幅較大的圖像分成若干個(gè)較小的圖像,這樣能夠有效地提取圖像的局部特征,所以提取后的特征零件更加清晰,且當(dāng)外部環(huán)境變化比較大時(shí),也能夠保證一定的識(shí)別率。
SVM本質(zhì)是個(gè)線性二分類器模型,在解決線性情況時(shí),可以直接構(gòu)造一個(gè)最優(yōu)與最佳的分類面,而遇到非線性情況時(shí)要選擇合適的核函數(shù)將低維空間樣本隱式映射到高維空間中,然后在高維空間中求解最優(yōu)分類超平面[6]。
本文采用的核函數(shù)為徑向基函數(shù)(RBF):
K(xi,xj)=exp(-γ‖xi-xj‖2).
(13)
其中:xi和xj表示樣本;γ為核函數(shù)半徑。
RBF核函數(shù)參數(shù)的優(yōu)化關(guān)系著SVM模型的識(shí)別率。本文運(yùn)用LiBSVM工具箱中基于交叉驗(yàn)證及網(wǎng)格搜索的參數(shù)選擇方法[7]?;诜謮KPCA-SVM算法的數(shù)據(jù)集搜索過程如圖4所示。
圖4 基于分塊PCA-SVM的數(shù)據(jù)集搜索過程
最終獲取支持向量機(jī)模型的最佳參數(shù):c=8;γ=0.007 812 5。其中,c代表誤差容限度,該值越小越容易欠擬合,越大越容易過擬合,因此c值過大或過小都會(huì)使SVM模型泛化能力變差;γ代表核函數(shù)半徑,其決定數(shù)據(jù)映射到新特征空間后的分布。
本文采用“一對(duì)一的投票策略”,使SVM二分類器模型能夠解決多分類樣本問題。訓(xùn)練時(shí),在任意兩樣本之間構(gòu)造一個(gè)二元分類器。此時(shí),k類樣本數(shù)據(jù)將構(gòu)建k(k-1)/2個(gè)SVM。測(cè)試時(shí),計(jì)算多個(gè)分類函數(shù),然后將測(cè)試樣本歸于投票最多的組。
基于MATLAB平臺(tái)設(shè)計(jì)并搭建了零件識(shí)別系統(tǒng),使用50張五種零件圖片作為本實(shí)驗(yàn)的原始數(shù)據(jù)庫,其中每組的前6張作為訓(xùn)練集,后4張作為測(cè)試集。實(shí)驗(yàn)選取的五種零件數(shù)據(jù)集如圖5所示。
圖5 五種零件數(shù)據(jù)集
通過設(shè)計(jì)GUI界面,調(diào)控參數(shù)c與γ的值[8]。基于GUI系統(tǒng)驗(yàn)證PCA-SVM算法及分塊PCA-SVM算法,操作后兩種算法的零件識(shí)別率及識(shí)別效果分別如圖6和圖7所示。
從圖6和圖7可知,改進(jìn)前后的算法分別識(shí)別同一數(shù)據(jù)集時(shí),分塊PCA-SVM算法的識(shí)別率比PCA-SVM算法高出10%。
圖6 PCA-SVM算法識(shí)別結(jié)果
圖7 分塊PCA-SVM算法識(shí)別結(jié)果
用四組不同特征向量個(gè)數(shù)來對(duì)比PCA、PCA-SVM及分塊PCA-SVM算法識(shí)別零件的性能,統(tǒng)計(jì)的測(cè)試數(shù)據(jù)如圖8所示。
圖8 三種算法識(shí)別率比較
由圖8可知,提取特征向量為20時(shí)識(shí)別率最高。因此,本文算法提取特征向量設(shè)置為20。
進(jìn)一步檢驗(yàn)提出的改進(jìn)算法性能,在相同實(shí)驗(yàn)環(huán)境下,將改進(jìn)算法與經(jīng)典PCA和PCA-SVM算法進(jìn)行比較,識(shí)別率和算法運(yùn)行時(shí)間如表1所示。
表1 三種算法零件識(shí)別性能比較
由表1可知:分塊PCA-SVM算法比PCA-SVM和經(jīng)典PCA算法在識(shí)別率上有所提升;同時(shí),算法運(yùn)行時(shí)間也較短。由此可見,分塊PCA-SVM算法在保證一定識(shí)別率的前提下,縮短了算法運(yùn)行時(shí)間,這為實(shí)際工廠作業(yè)中流水線上零件分類的實(shí)時(shí)性帶來了很大保障。
本文設(shè)計(jì)的分塊PCA與SVM算法相結(jié)合的零件識(shí)別分類系統(tǒng),主要實(shí)現(xiàn)了工廠零件的自動(dòng)化分揀。當(dāng)工廠噪聲及光照環(huán)境影響較大時(shí),分塊PCA算法能夠有效地抽取圖像局部特征,進(jìn)而提高識(shí)別率及運(yùn)行速度。最后比較了不同維數(shù)下各算法的識(shí)別性能,本文提出的分塊PCA-SVM算法,基于特征向量個(gè)數(shù)20,識(shí)別率達(dá)95%,運(yùn)行時(shí)間0.4 s。
實(shí)驗(yàn)結(jié)果表明,本文提出的方法應(yīng)用于零件自動(dòng)化分揀是可行的,為將機(jī)器視覺識(shí)別應(yīng)用在工業(yè)生產(chǎn)中奠定了一定的基礎(chǔ)。