1. 準(zhǔn)備工作
1) 確立分類器個(gè)數(shù)
一般都事先確定分類器的個(gè)數(shù),當(dāng)然,如有必要,可在訓(xùn)練過程中增加分類器的個(gè)數(shù)。分類器指的是將樣本中分幾個(gè)類型,比如我們從樣本中需要識(shí)別出:車輛、行人、非車并非人,則分類器的個(gè)數(shù)是3。
分類器的個(gè)數(shù)用k
2) 圖像庫建立
SVM方法需要建立一個(gè)比較大的樣本集,也就是圖像庫,這個(gè)樣本集不僅僅包括正樣本,還需要有一定數(shù)量的負(fù)樣本。通常樣本越多越好,但不是絕對的。
設(shè)樣本數(shù)為S
3) ROI提取
對所有樣本中的可能包含目標(biāo)的區(qū)域(比如車輛區(qū)域)手動(dòng)或自動(dòng)提取出來,此時(shí)包括正樣本中的目標(biāo)區(qū)域,也包括負(fù)樣本中類似車輛特征的區(qū)域或者說干擾區(qū)域。
4) ROI預(yù)處理
包括背景去除,圖像濾波,或者是邊緣增強(qiáng),二值化等預(yù)處理。預(yù)處理的方法視特征的選取而定。
5) 特征向量確定
描述一個(gè)目標(biāo),打算用什么特征,用幾個(gè)特征,給出每個(gè)特征的標(biāo)示方法以及總的特征數(shù),也就是常說的特征向量的維數(shù)。
對于車輛識(shí)別,可用的特征如:車輛區(qū)域的灰度均值、灰度方差、對稱性、信息熵、傅里葉描述子等等。
設(shè)特征向量的維數(shù)是L。
6) 特征提取
確定采取的特征向量之后,對樣本集中所有經(jīng)過預(yù)處理之后的ROI區(qū)域進(jìn)行特征提取,也就是說計(jì)算每個(gè)ROI區(qū)域的所有特征值,并將其保存。
7) 特征向量的歸一化
常用的歸一化方法是:先對相同的特征(每個(gè)特征向量分別歸一化)進(jìn)行排序,然后根據(jù)特征的最大值和最小值重新計(jì)算特征值。
8) 核的選定
SVM的構(gòu)造主要依賴于核函數(shù)的選擇,由于不適當(dāng)?shù)暮撕瘮?shù)可能會(huì)導(dǎo)致很差的分類結(jié)果,并且目前尚沒有有效的學(xué)習(xí)使用何種核函數(shù)比較好,只能通過實(shí)驗(yàn)結(jié)果確定采用哪種核函數(shù)比較好。訓(xùn)練的目標(biāo)不同,核函數(shù)也會(huì)不同。
核函數(shù)其實(shí)就是采用什么樣的模型描述樣本中目標(biāo)特征向量之間的關(guān)系。如常用的核函數(shù):Gauss函數(shù)
對樣本的訓(xùn)練就是計(jì)算p矩陣,然后得出描述目標(biāo)的模板和代表元。
2. 訓(xùn)練
訓(xùn)練就是根據(jù)選定的核函數(shù)對樣本集的所有特征向量進(jìn)行計(jì)算,構(gòu)造一個(gè)使樣本可分的特征空間。
其訓(xùn)練步驟如下:
1) 用分類器將所有樣本集的特征分類
2) 根據(jù)選定的核函數(shù)分別計(jì)算每個(gè)分類器中每個(gè)特征向量的有關(guān)值
3) 根據(jù)這些特征相關(guān)值計(jì)算協(xié)方差矩陣空間
4) 對這個(gè)協(xié)方差矩陣空間進(jìn)行Householder變換,也就是說將一個(gè)向量變換為由一個(gè)超平面反射的鏡像,是一種線性變換。超平面的法向量被稱作Householder向量。因?yàn)镾VM就是在特征空間中構(gòu)造最優(yōu)超平面。
具體變換方法可參照相關(guān)文章。里面涉及大量的矩陣運(yùn)算。
5) 計(jì)算特征系數(shù)
得到協(xié)方差矩陣以及其對應(yīng)的超平面矩陣,根據(jù)這兩個(gè)矩陣分別計(jì)算每個(gè)特征的特征系數(shù),并將特征系數(shù)對協(xié)方差矩陣進(jìn)行縮放。
6) 獲得模型參數(shù)paramInvSigma,paramLogSigma
對縮放后的協(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. 比較測試
比較測試是SVM方法的最后一步,也就是說通過訓(xùn)練得到訓(xùn)練模型參數(shù)之后,就可根據(jù)模型參數(shù)對一個(gè)ROI區(qū)域進(jìn)行計(jì)算,判斷其歸類。
比較測試首先是對測試圖像進(jìn)行預(yù)處理,然后提取特征,將這些特征參數(shù)與訓(xùn)練結(jié)果的模型參數(shù)進(jìn)行比對,比對方法可參照文獻(xiàn)中介紹的:
得到對應(yīng)的類別標(biāo)志:
4. 總結(jié)
SVM方法最主要的工作是樣本訓(xùn)練,獲得訓(xùn)練模型參數(shù)。
由于時(shí)間關(guān)系,暫時(shí)只對SVM有這些了解,只能算對SVM有一個(gè)初步的認(rèn)識(shí)。并且上述總結(jié)都是在閱讀文獻(xiàn)之后的認(rèn)識(shí),難免有不少錯(cuò)誤和不足,所以本文只能作為一個(gè)小參考。在對SVM有個(gè)初步的認(rèn)識(shí)之后,需要仔細(xì)閱讀其原理,分析其中的矩陣運(yùn)算及思想。SVM中涉及大量的矩陣運(yùn)算和推導(dǎo),需要弄清楚,這樣才能明白模型參數(shù)的含義,以便于判斷當(dāng)前選定的核函數(shù)是否合適。
聯(lián)系客服