SVM叫做支持向量機(jī)( Support Vector Machines)是由Vanpik領(lǐng)導(dǎo)的AT&TBell實(shí)驗(yàn)室研究小組 在1963年提出的一種新的非常有潛力的分類技術(shù),
SVM是一種基于統(tǒng)計(jì)學(xué)習(xí)理論的模式識(shí)別方法,主要應(yīng)用于模式識(shí)別領(lǐng)域.由于當(dāng)時(shí)這些研究尚不十分完善,在解決模式識(shí)別問(wèn)題中往往趨于保守,且數(shù)學(xué)上比較艱澀,因此這些研究一直沒(méi)有得到充的重視.直到90年代,一個(gè)較完善的理論體系—統(tǒng)計(jì)學(xué)習(xí)理論 ( StatisticalLearningTheory,簡(jiǎn)稱SLT) 的實(shí)現(xiàn)和由于神經(jīng)網(wǎng)絡(luò)等較新興的機(jī)器學(xué)習(xí)方法的研究遇到一些重要的困難,比如如何確定網(wǎng)絡(luò)結(jié)構(gòu)的問(wèn)題、過(guò)學(xué)習(xí)與欠學(xué)習(xí)問(wèn)題、局部極小點(diǎn)問(wèn)題等,使得SVM迅速發(fā)展和完善,在解決小樣本 、非線性及高維模式識(shí)別問(wèn)題中表現(xiàn)出許多特有的優(yōu)勢(shì),并能夠推廣應(yīng)用到函數(shù)擬合等其他機(jī)器學(xué)習(xí)問(wèn)題中.從此迅速的發(fā)展起來(lái),現(xiàn)在已經(jīng)在許多領(lǐng)域(生物信息學(xué),文本和手寫識(shí)別等)都取得了成功的應(yīng)用。
1. 準(zhǔn)備工作 1) 確立分類器個(gè)數(shù) 一般都事先確定分類器的個(gè)數(shù),當(dāng)然,如有必要,可在訓(xùn)練過(guò)程中增加分類器的個(gè)數(shù)。分類器指的是將樣本中分幾個(gè)類型,比如我們從樣本中需要識(shí)別出:車輛、行人、非車并非人,則分類器的個(gè)數(shù)是3。 分類器的個(gè)數(shù)用k 2) 圖像庫(kù)建立 SVM方法需要建立一個(gè)比較大的樣本集,也就是圖像庫(kù),這個(gè)樣本集不僅僅包括正樣本,還需要有一定數(shù)量的負(fù)樣本。通常樣本越多越好,但不是絕對(duì)的。 設(shè)樣本數(shù)為S 3) ROI提取 對(duì)所有樣本中的可能包含目標(biāo)的區(qū)域(比如車輛區(qū)域)手動(dòng)或自動(dòng)提取出來(lái),此時(shí)包括正樣本中的目標(biāo)區(qū)域,也包括負(fù)樣本中類似車輛特征的區(qū)域或者說(shuō)干擾區(qū)域。 4) ROI預(yù)處理 包括背景去除,圖像濾波,或者是邊緣增強(qiáng),二值化等預(yù)處理。預(yù)處理的方法視特征的選取而定。 5) 特征向量確定 描述一個(gè)目標(biāo),打算用什么特征,用幾個(gè)特征,給出每個(gè)特征的標(biāo)示方法以及總的特征數(shù),也就是常說(shuō)的特征向量的維數(shù)。 對(duì)于車輛識(shí)別,可用的特征如:車輛區(qū)域的灰度均值、灰度方差、對(duì)稱性、信息熵、傅里葉描述子等等。 設(shè)特征向量的維數(shù)是L。 6) 特征提取 確定采取的特征向量之后,對(duì)樣本集中所有經(jīng)過(guò)預(yù)處理之后的ROI區(qū)域進(jìn)行特征提取,也就是說(shuō)計(jì)算每個(gè)ROI區(qū)域的所有特征值,并將其保存。 7) 特征向量的歸一化 常用的歸一化方法是:先對(duì)相同的特征(每個(gè)特征向量分別歸一化)進(jìn)行排序,然后根據(jù)特征的最大值和最小值重新計(jì)算特征值。 8) 核的選定 SVM的構(gòu)造主要依賴于核函數(shù)的選擇,由于不適當(dāng)?shù)暮撕瘮?shù)可能會(huì)導(dǎo)致很差的分類結(jié)果,并且目前尚沒(méi)有有效的學(xué)習(xí)使用何種核函數(shù)比較好,只能通過(guò)實(shí)驗(yàn)結(jié)果確定采用哪種核函數(shù)比較好。訓(xùn)練的目標(biāo)不同,核函數(shù)也會(huì)不同。 核函數(shù)其實(shí)就是采用什么樣的模型描述樣本中目標(biāo)特征向量之間的關(guān)系。如常用的核函數(shù):Gauss函數(shù)
對(duì)樣本的訓(xùn)練就是計(jì)算p矩陣,然后得出描述目標(biāo)的模板和代表元。 2. 訓(xùn)練 訓(xùn)練就是根據(jù)選定的核函數(shù)對(duì)樣本集的所有特征向量進(jìn)行計(jì)算,構(gòu)造一個(gè)使樣本可分的特征空間。 其訓(xùn)練步驟如下: 1) 用分類器將所有樣本集的特征分類 2) 根據(jù)選定的核函數(shù)分別計(jì)算每個(gè)分類器中每個(gè)特征向量的有關(guān)值 3) 根據(jù)這些特征相關(guān)值計(jì)算協(xié)方差矩陣空間 4) 對(duì)這個(gè)協(xié)方差矩陣空間進(jìn)行Householder變換,也就是說(shuō)將一個(gè)向量變換為由一個(gè)超平面反射的鏡像,是一種線性變換。超平面的法向量被稱作Householder向量。因?yàn)镾VM就是在特征空間中構(gòu)造最優(yōu)超平面。 具體變換方法可參照相關(guān)文章。里面涉及大量的矩陣運(yùn)算。 5) 計(jì)算特征系數(shù) 得到協(xié)方差矩陣以及其對(duì)應(yīng)的超平面矩陣,根據(jù)這兩個(gè)矩陣分別計(jì)算每個(gè)特征的特征系數(shù),并將特征系數(shù)對(duì)協(xié)方差矩陣進(jìn)行縮放。 6) 獲得模型參數(shù)paramInvSigma,paramLogSigma 對(duì)縮放后的協(xié)方差矩陣paramSigma求逆后,計(jì)算模型參數(shù)。其計(jì)算方法參照程序: for (i=0; i<numClass; i++) { for(j=0; j<size; j++) { sigma.pdata[j]= this->paramSigma[i*size+j]; } sigma.inv(invSigma); for(j=0; j<size; j++) { this->paramInvSigma[i*size+j]= invSigma.pdata[j]; } this-> paramLogSigma[i] = log(sigma.det())-2*log(((DOUBLE)classSample[i])/((DOUBLE)totalSample)); } 3. 比較測(cè)試 比較測(cè)試是SVM方法的最后一步,也就是說(shuō)通過(guò)訓(xùn)練得到訓(xùn)練模型參數(shù)之后,就可根據(jù)模型參數(shù)對(duì)一個(gè)ROI區(qū)域進(jìn)行計(jì)算,判斷其歸類。 比較測(cè)試首先是對(duì)測(cè)試圖像進(jìn)行預(yù)處理,然后提取特征,將這些特征參數(shù)與訓(xùn)練結(jié)果的模型參數(shù)進(jìn)行比對(duì),比對(duì)方法可參照文獻(xiàn)中介紹的:
得到對(duì)應(yīng)的類別標(biāo)志:
4. 總結(jié) SVM方法最主要的工作是樣本訓(xùn)練,獲得訓(xùn)練模型參數(shù)。 由于時(shí)間關(guān)系,暫時(shí)只對(duì)SVM有這些了解,只能算對(duì)SVM有一個(gè)初步的認(rèn)識(shí)。并且上述總結(jié)都是在閱讀文獻(xiàn)之后的認(rèn)識(shí),難免有不少錯(cuò)誤和不足,所以本文只能作為一個(gè)小參考。在對(duì)SVM有個(gè)初步的認(rèn)識(shí)之后,需要仔細(xì)閱讀其原理,分析其中的矩陣運(yùn)算及思想。SVM中涉及大量的矩陣運(yùn)算和推導(dǎo),需要弄清楚,這樣才能明白模型參數(shù)的含義,以便于判斷當(dāng)前選定的核函數(shù)是否合適。 |
|