SVM分類器在OpenCV中的使用

支持向量機(jī)(SVM)是通常由超平面定義的區(qū)別式分類器定拟。也就是說倦淀,給定標(biāo)記的訓(xùn)練數(shù)據(jù)(監(jiān)督式學(xué)習(xí))哥牍,SVM 算法輸出一個(gè)能夠分類新樣本的超平面。其核心的思想是找到給出的最大極小距離(margin)的超平面去訓(xùn)練樣本抡谐。

我上機(jī)器學(xué)習(xí)課的時(shí)候?qū)W到過,了解一點(diǎn)桐猬,但是理解的不是很深入麦撵。這里偏向應(yīng)用,所以公式之類的就不贅述了溃肪。直接看 OpenCV 的代碼吧免胃。

找資料的過程發(fā)現(xiàn)我用的是 OpenCV 3.0 的版本,但是網(wǎng)上的資料大多是 2.0 的版本惫撰,就很傷……

整個(gè)過程分為訓(xùn)練和利用訓(xùn)練好的模型進(jìn)行分類這兩個(gè)部分羔沙。

訓(xùn)練模型

訓(xùn)練模型的步驟及用到的主要函數(shù)如下:

(1)設(shè)置訓(xùn)練數(shù)據(jù)

在訓(xùn)練時(shí),需要把訓(xùn)練數(shù)據(jù)存儲(chǔ)為Mat類的float類型厨钻,示例代碼如下:

// training data
int labels[4] = { 1, -1, -1, -1 };
float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };
cv::Mat trainingDataMat(4, 2, CV_32FC1, trainingData);
cv::Mat labelsMat(4, 1, CV_32SC1, labels);

(2)設(shè)置 SVM 的參數(shù)

在 OpenCV 2.0 版本中扼雏,SVM 的參數(shù)存儲(chǔ)在 CvSVMParams 類中,然后使用 CvSVM 類進(jìn)行訓(xùn)練莉撇。

然而呢蛤,在OpenCV 3.0 中,要直接對(duì) SMV 設(shè)置參數(shù)棍郎。示例代碼如下:

// initial SVM
cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
svm->setType(cv::ml::SVM::Types::C_SVC);
svm->setKernel(cv::ml::SVM::KernelTypes::LINEAR);
svm->setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER, 100, 1e-6));

(3)訓(xùn)練 SVM 分類器

訓(xùn)練的過程就只有一句代碼了:

// train operation
svm->train(trainingDataMat, cv::ml::SampleTypes::ROW_SAMPLE, labelsMat);

(4)儲(chǔ)存 SVM 分類器

訓(xùn)練好 SVM 分類器后需要將它儲(chǔ)存起來其障,在后續(xù)的代碼中就可以利用它進(jìn)行分類了。儲(chǔ)存的代碼也很簡(jiǎn)單:

// save svm
svm->save("mysvm.xml");

實(shí)現(xiàn)分類

(1)加載 SVM 分類器

把儲(chǔ)存好的分類器加載出來涂佃。

Ptr<SVM> mysvm = StatModel::load<SVM>("mysvm.xml");

(2)預(yù)測(cè)分類結(jié)果

使用 predict 函數(shù)預(yù)測(cè)分類結(jié)果励翼,函數(shù)原型如下蜈敢。輸入數(shù)據(jù),返回預(yù)測(cè)結(jié)果汽抚。

CV_WRAP virtual float predict( InputArray samples, 
    OutputArray results=noArray(), int flags=0 ) const = 0;

總結(jié)

以上就是 OpenCV 中 SVM 分類器的使用方法抓狭,我只是把最基本的步驟和所致用的函數(shù)列了出來≡焖福可以看出使用 OpenCV 庫(kù)函數(shù)來實(shí)現(xiàn) SVM 分類器還是很簡(jiǎn)單的否过,不需要理解SVM的具體原理。

網(wǎng)上寫 SVM 分類器的代碼都很復(fù)雜惭蟋,因?yàn)闇?zhǔn)備數(shù)據(jù)等等都是一個(gè)大工程苗桂,在我們使用的時(shí)候要根據(jù)具體情況自己寫。不過最核心的部分就是以上啦告组!


參考:
http://www.coin163.com/it/2260012286132365332/svm-opencv
https://blog.csdn.net/chaipp0607/article/details/68067098
https://blog.csdn.net/xuan_zizizi/article/details/71102018

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煤伟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子木缝,更是在濱河造成了極大的恐慌便锨,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件我碟,死亡現(xiàn)場(chǎng)離奇詭異放案,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)矫俺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門卿叽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恳守,你說我怎么就攤上這事考婴。” “怎么了催烘?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵沥阱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我伊群,道長(zhǎng)考杉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任舰始,我火速辦了婚禮崇棠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丸卷。我一直安慰自己枕稀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萎坷,像睡著了一般凹联。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哆档,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天蔽挠,我揣著相機(jī)與錄音,去河邊找鬼瓜浸。 笑死澳淑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的插佛。 我是一名探鬼主播偶惠,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼朗涩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绑改,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谢床,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后厘线,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體识腿,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年造壮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渡讼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耳璧,死狀恐怖成箫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旨枯,我是刑警寧澤蹬昌,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站攀隔,受9級(jí)特大地震影響皂贩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昆汹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一明刷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧满粗,春花似錦辈末、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)准脂。三九已至,卻和暖如春檬洞,著一層夾襖步出監(jiān)牢的瞬間狸膏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工添怔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留湾戳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓广料,卻偏偏與公主長(zhǎng)得像砾脑,于是被迫代替她去往敵國(guó)和親况毅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胳挎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容