解析C++版OpenCV里的機(jī)器學(xué)習(xí)
測(cè)試
對(duì)于測(cè)試,我們聲明了一個(gè)200個(gè)元素的矩陣來(lái)進(jìn)行測(cè)試,并且在計(jì)算了這些樣本的最近鄰居之后,我們放了一個(gè)小循環(huán)來(lái)計(jì)算兩類(lèi)的分類(lèi)良好的樣本和分類(lèi)不良的樣本。這是測(cè)試樣本的表示:
評(píng)估
現(xiàn)在,我們必須通過(guò)查看分類(lèi)良好和分類(lèi)較差的樣本來(lái)評(píng)估我們的模型。為了理解我們將要做什么,我將舉一個(gè)小例子。在我們的例子中,我們有兩個(gè)類(lèi),第一個(gè)包含綠色點(diǎn),另一個(gè)包含紅色點(diǎn)。為了進(jìn)行評(píng)估,我們必須放置一類(lèi)好的和一類(lèi)不好的,因此,在這里我將舉一個(gè)例子:對(duì)于綠點(diǎn),我們將說(shuō)它們代表未生病的人(好的類(lèi)),紅點(diǎn)代表生病的人(壞的類(lèi))。如果有病的人被歸類(lèi)為有病的人(帶有紅點(diǎn)),那么在這里我們說(shuō)他是一個(gè)真陰性(正確分類(lèi)為真,生病為陰性)。如果將一個(gè)有病的人歸類(lèi)為沒(méi)有生病的人,那么在這里我們說(shuō)這是一個(gè)假陰性(錯(cuò)誤分類(lèi)為假,生病為陰性)。如果沒(méi)有生病的人被歸類(lèi)為沒(méi)有生病的人(帶有綠色),那么在這里我們說(shuō)這是一個(gè)真陽(yáng)性(對(duì)于分類(lèi)良好的人來(lái)說(shuō)是真,對(duì)于沒(méi)有病的人來(lái)說(shuō)是陽(yáng)性)。如果未生病的人被歸類(lèi)為生病的人,那么在這里我們說(shuō)這是假陽(yáng)性。因此,從這個(gè)原理開(kāi)始,我們對(duì)結(jié)果進(jìn)行評(píng)估,以便我們可以計(jì)算精度
TP:真陽(yáng)性TN:真陰性FP:假陽(yáng)性FN:假陰性因此,由于我們知道16個(gè)綠色的錯(cuò)誤分類(lèi)點(diǎn)和9個(gè)紅色的錯(cuò)誤分類(lèi)點(diǎn),并且知道每個(gè)類(lèi)別的總點(diǎn)數(shù)是200,因此我們可以輕松地填充表格。
現(xiàn)在,使用這些值,我們可以計(jì)算出準(zhǔn)確度準(zhǔn)確度
召回
特異性
每個(gè)類(lèi)的錯(cuò)誤第1類(lèi):
第2類(lèi):
總誤差
具有OpenCV的SVM
定義
支持向量機(jī)或大邊緣分離器是一組有監(jiān)督的學(xué)習(xí)技術(shù),旨在解決判別和回歸問(wèn)題。支持向量機(jī)是線性分類(lèi)器的推廣。支持向量機(jī)可用于解決判別問(wèn)題,即確定樣本屬于哪一類(lèi),或回歸問(wèn)題,即預(yù)測(cè)變量的數(shù)值。解決這兩個(gè)問(wèn)題需要構(gòu)造一個(gè)函數(shù)h,該函數(shù)與輸入向量x匹配輸出 y: y=h(x)在我們的例子中,我們將對(duì)包含隨機(jī)點(diǎn)的兩個(gè)類(lèi)進(jìn)行分類(lèi),就像我們對(duì)KNN方法所做的那樣。
方法
在這種方法中,我們將執(zhí)行與KNN中幾乎相同的操作,但是在這里我們必須做不同的部分。第一個(gè)訓(xùn)練將始終使用具有正態(tài)分布函數(shù)的兩類(lèi)100個(gè)隨機(jī)元素進(jìn)行訓(xùn)練,然后我們必須生成200個(gè)元素的其他測(cè)試樣本,然后進(jìn)行預(yù)測(cè)。因?yàn)槿绻覀兪冀K使用訓(xùn)練樣本,那么我們將無(wú)法研究生成的模型的性能。因此,要進(jìn)行學(xué)習(xí),我們還必須為兩個(gè)類(lèi)創(chuàng)建兩個(gè)矩陣,然后將它們連接起來(lái)并將其放入SVM模型的輸入中。(與我們之前所做的相同)。要進(jìn)行學(xué)習(xí),我們必須執(zhí)行以下行:
但是在此之前,我們必須通過(guò)執(zhí)行以下操作來(lái)初始化模型參數(shù):(我們使用了RBF核心)
如果我們很好地注意到,當(dāng)我們啟動(dòng)學(xué)習(xí)時(shí),我們添加了類(lèi)的向量,因?yàn)槲覀冋f(shuō)這是監(jiān)督學(xué)習(xí),這意味著我們必須將類(lèi)的名稱(chēng)提供給模型。
邊界顯示
訓(xùn)練后,我們需要像在KNN中所做的那樣對(duì)數(shù)據(jù)進(jìn)行表示,這樣我們就可以看到邊界,也可以看到模型是否根據(jù)我們擁有的訓(xùn)練數(shù)據(jù)很好地選擇了邊界。
我們注意到邊界確實(shí)使這兩個(gè)類(lèi)之間有所不同,有些點(diǎn)很難分類(lèi),但基本上,學(xué)習(xí)做得很好。
測(cè)試
現(xiàn)在,我們需要通過(guò)聲明其他測(cè)試樣本來(lái)測(cè)試模型,并使用預(yù)測(cè)函數(shù)直接在模型中運(yùn)行它們,以預(yù)測(cè)每個(gè)點(diǎn)屬于哪個(gè)類(lèi)。為此,我們?yōu)閮蓚(gè)類(lèi)聲明了另外兩個(gè)矩陣,每個(gè)矩陣包含200個(gè)測(cè)試項(xiàng)目。最后,只需通過(guò)執(zhí)行以下行來(lái)傳遞級(jí)聯(lián)矩陣(該矩陣包含兩個(gè)類(lèi)的數(shù)據(jù))就可以了:
這是測(cè)試結(jié)果:
評(píng)估
因此,由于我們知道16個(gè)綠色的錯(cuò)誤分類(lèi)點(diǎn)和9個(gè)紅色的錯(cuò)誤分類(lèi)點(diǎn),并且知道每個(gè)類(lèi)別的總點(diǎn)數(shù)是200,因此我們可以輕松地填充表格。
準(zhǔn)確度
召回率
特異性
每個(gè)類(lèi)的錯(cuò)誤第1類(lèi):
第2類(lèi):
總誤差
結(jié)論
總而言之,我們可以看到,獲得的評(píng)估值非常令人滿(mǎn)意。因?yàn)檎`差非常小,所以精度很高,這意味著該模型學(xué)習(xí)得很好,如果我們?cè)诖伺渲孟率褂肧VM模型,那么它將在這種類(lèi)型的應(yīng)用程序中很好地工作。
詞袋
介紹
在我們了解了如何將支持向量機(jī)用于一個(gè)基本案例之后,我們將嘗試在圖像上應(yīng)用支持向量機(jī)模型來(lái)進(jìn)行分類(lèi)。為此,我們有一個(gè)4個(gè)類(lèi)的數(shù)據(jù)庫(kù),每個(gè)類(lèi)都有隔離的圖像。但這里的問(wèn)題是,一個(gè)圖像包含幾個(gè)特征,因此如果我們想使用圖像,那么它將是一個(gè)具有大量值的輸入矩陣,這將使學(xué)習(xí)過(guò)程非常緩慢,甚至無(wú)法確定它們是否是正確的特征。這就是為什么我們需要找到一種方法,幫助我們從圖像中提取必要的信息,我們將學(xué)習(xí)這些信息。因?yàn)槿绻覀儾贿@樣做,那么輸入向量將是整個(gè)圖像。所以這里的想法是從圖像中找到只包含圖像重要信息的描述符,所以這里或者我們將使用BOW(bag of words)和SURF的方法。SURF方法用于提取圖像的興趣點(diǎn),它可以是輪廓、圓……因?yàn)槿绻覀冎惶崛D像的興趣點(diǎn),那么輸入向量將很大程度上非常小,并且只包含必要的內(nèi)容,這樣學(xué)習(xí)將非?。
創(chuàng)建字典
在進(jìn)行學(xué)習(xí)之前,我們說(shuō)過(guò)必須先找到興趣點(diǎn),然后將它們放在單個(gè)矩陣中,所以此矩陣稱(chēng)為字典,然后從該字典中對(duì)興趣點(diǎn)最多的圖像進(jìn)行分類(lèi)分組。為了提取點(diǎn),我們將使用可完成此工作的openCV函數(shù)。我們決定為每個(gè)類(lèi)拍攝10張圖像進(jìn)行訓(xùn)練,因此即使字典也必須包含10張圖像的信息,因此這是我們用來(lái)提取興趣點(diǎn)的代碼行:
因此,這些代碼行將提取這些點(diǎn)并將其放入描述符中,最后,我們將此描述符放入保存的字典中,并在學(xué)習(xí)部分中使用它。
訓(xùn)練
提取興趣點(diǎn)并填充字典后,我們需要找到包含我們所有學(xué)習(xí)圖像之間共有興趣點(diǎn)的圖。我們將使用以下代碼行來(lái)進(jìn)行學(xué)習(xí),并使用此圖:
對(duì)于模型的參數(shù),我們使用與點(diǎn)相同的參數(shù),也使用RBF內(nèi)核。因此,在訓(xùn)練完成之后,我們必須保存模型,以便稍后在測(cè)試部分中使用它。
測(cè)試
現(xiàn)在我們必須使用openCV的預(yù)測(cè)功能來(lái)測(cè)試模型,但是在執(zhí)行此操作之前,我們必須知道對(duì)于測(cè)試來(lái)說(shuō)是一樣的,我們不會(huì)將整個(gè)圖像都放入模型的輸入中,而是相反,我們必須在此處應(yīng)用相同的SURF算法來(lái)提取該圖像的興趣點(diǎn),并獲得將要在預(yù)測(cè)輸入中獲得的此描述符。因此,對(duì)于測(cè)試,我選擇了每個(gè)類(lèi)別的15張圖像,以便我們可以簡(jiǎn)單地構(gòu)建混淆矩陣。在將我解釋的方法應(yīng)用于所有測(cè)試圖像后,我得到了以下混淆矩陣:
該矩陣表示:在有關(guān)手風(fēng)琴對(duì)象的15張測(cè)試圖像中,有5張分類(lèi)錯(cuò)誤的圖像和10張分類(lèi)正確的圖像。對(duì)于“飛機(jī)”:分類(lèi)良好的11張圖像,分類(lèi)不良的4張。對(duì)于“錨”:5張圖像分類(lèi)良好,10張圖像分類(lèi)不良。對(duì)于“螞蟻”:8張分類(lèi)良好的圖像和7張分類(lèi)不良的圖像。我們注意到,對(duì)于“手風(fēng)琴”,“飛機(jī)”和“螞蟻”,該模型比“錨”模型更為敏感,因?yàn)樗雌饋?lái)很像飛機(jī),因此飛機(jī)和錨點(diǎn)的興趣點(diǎn)非常接近這意味著很難在測(cè)試級(jí)別上區(qū)分這兩個(gè)對(duì)象
評(píng)估
為了進(jìn)行評(píng)估,我們將計(jì)算每個(gè)類(lèi)的誤差和全局誤差。盡管如此,我們可以注意到該模型的性能較差。
在計(jì)算了局部誤差之后,我們可以看到它并不是真正有效,這是由于以下幾個(gè)因素造成的:數(shù)據(jù)的類(lèi)型非常接近,這使得4個(gè)類(lèi)的關(guān)注點(diǎn)的提取變得非常接近。訓(xùn)練數(shù)據(jù),我們每班僅使用10張圖像,而有必要放置更多圖像,以便該模型在許多圖像上學(xué)習(xí)更多。而且在測(cè)試級(jí)別上,我們僅對(duì)15張圖像進(jìn)行了測(cè)試,也許如果我們?cè)黾訙y(cè)試數(shù)據(jù),則誤差會(huì)有所降低。
結(jié)論
將SVM與SURF一起使用是一種很好的方法,因?yàn)樗苊饬藢W(xué)習(xí)圖像的所有像素,并且使模型更加準(zhǔn)確,并包含了對(duì)圖像進(jìn)行分類(lèi)所必需的功能。但在這種情況下,僅僅有一個(gè)好的模型是不夠的,這就給出了一個(gè)好的分類(lèi)——也許描述符的選擇做得不好。這是我們?cè)跊](méi)有神經(jīng)網(wǎng)絡(luò)的情況下制定機(jī)器學(xué)習(xí)算法時(shí)將會(huì)遇到的問(wèn)題之一,這意味著我們必須自己選擇特征(我說(shuō)自己是因?yàn)槲覀儽仨毞胖猛獠克惴▉?lái)提取特征) ,但使用神經(jīng)網(wǎng)絡(luò),所有這些工作將自動(dòng)完成,并且特征的提取將在學(xué)習(xí)過(guò)程中由網(wǎng)絡(luò)完成。不幸的是,由于缺乏數(shù)據(jù),我們無(wú)法對(duì)案件進(jìn)行神經(jīng)網(wǎng)絡(luò)處理。因?yàn)槲艺J(rèn)為即使在這種情況下的神經(jīng)網(wǎng)絡(luò)也無(wú)法提供更準(zhǔn)確的結(jié)果。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹(shù)機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車(chē)母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車(chē)研發(fā)中心重磅落地,寶馬家門(mén)口“搶人”
最新活動(dòng)更多
-
10月23日火熱報(bào)名中>> 2025是德科技創(chuàng)新技術(shù)峰會(huì)
-
10月23日立即報(bào)名>> Works With 開(kāi)發(fā)者大會(huì)深圳站
-
10月24日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
11月27日立即報(bào)名>> 【工程師系列】汽車(chē)電子技術(shù)在線大會(huì)
-
12月18日立即報(bào)名>> 【線下會(huì)議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
精彩回顧立即查看>> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
推薦專(zhuān)題
- 1 人形機(jī)器人,正狂奔在批量交付的曠野
- 2 宇樹(shù)機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 3 解碼特斯拉新AI芯片戰(zhàn)略 :從Dojo到AI5和AI6推理引擎
- 4 AI版“四萬(wàn)億刺激”計(jì)劃來(lái)了
- 5 2025年8月人工智能投融資觀察
- 6 7 a16z最新AI百?gòu)?qiáng)榜:硅谷頂級(jí)VC帶你讀懂全球生成式AI賽道最新趨勢(shì)
- 8 Manus跑路,大廠掉線,只能靠DeepSeek了
- 9 一家被嚴(yán)重低估的國(guó)產(chǎn)AI巨頭
- 10 地平線的野心:1000萬(wàn)套HSD上車(chē)