解析C++版OpenCV里的機器學(xué)習(xí)
測試
對于測試,我們聲明了一個200個元素的矩陣來進行測試,并且在計算了這些樣本的最近鄰居之后,我們放了一個小循環(huán)來計算兩類的分類良好的樣本和分類不良的樣本。這是測試樣本的表示:
評估
現(xiàn)在,我們必須通過查看分類良好和分類較差的樣本來評估我們的模型。為了理解我們將要做什么,我將舉一個小例子。在我們的例子中,我們有兩個類,第一個包含綠色點,另一個包含紅色點。為了進行評估,我們必須放置一類好的和一類不好的,因此,在這里我將舉一個例子:對于綠點,我們將說它們代表未生病的人(好的類),紅點代表生病的人(壞的類)。如果有病的人被歸類為有病的人(帶有紅點),那么在這里我們說他是一個真陰性(正確分類為真,生病為陰性)。如果將一個有病的人歸類為沒有生病的人,那么在這里我們說這是一個假陰性(錯誤分類為假,生病為陰性)。如果沒有生病的人被歸類為沒有生病的人(帶有綠色),那么在這里我們說這是一個真陽性(對于分類良好的人來說是真,對于沒有病的人來說是陽性)。如果未生病的人被歸類為生病的人,那么在這里我們說這是假陽性。因此,從這個原理開始,我們對結(jié)果進行評估,以便我們可以計算精度
TP:真陽性TN:真陰性FP:假陽性FN:假陰性因此,由于我們知道16個綠色的錯誤分類點和9個紅色的錯誤分類點,并且知道每個類別的總點數(shù)是200,因此我們可以輕松地填充表格。
現(xiàn)在,使用這些值,我們可以計算出準(zhǔn)確度準(zhǔn)確度
召回
特異性
每個類的錯誤第1類:
第2類:
總誤差
具有OpenCV的SVM
定義
支持向量機或大邊緣分離器是一組有監(jiān)督的學(xué)習(xí)技術(shù),旨在解決判別和回歸問題。支持向量機是線性分類器的推廣。支持向量機可用于解決判別問題,即確定樣本屬于哪一類,或回歸問題,即預(yù)測變量的數(shù)值。解決這兩個問題需要構(gòu)造一個函數(shù)h,該函數(shù)與輸入向量x匹配輸出 y: y=h(x)在我們的例子中,我們將對包含隨機點的兩個類進行分類,就像我們對KNN方法所做的那樣。
方法
在這種方法中,我們將執(zhí)行與KNN中幾乎相同的操作,但是在這里我們必須做不同的部分。第一個訓(xùn)練將始終使用具有正態(tài)分布函數(shù)的兩類100個隨機元素進行訓(xùn)練,然后我們必須生成200個元素的其他測試樣本,然后進行預(yù)測。因為如果我們始終使用訓(xùn)練樣本,那么我們將無法研究生成的模型的性能。因此,要進行學(xué)習(xí),我們還必須為兩個類創(chuàng)建兩個矩陣,然后將它們連接起來并將其放入SVM模型的輸入中。(與我們之前所做的相同)。要進行學(xué)習(xí),我們必須執(zhí)行以下行:
但是在此之前,我們必須通過執(zhí)行以下操作來初始化模型參數(shù):(我們使用了RBF核心)
如果我們很好地注意到,當(dāng)我們啟動學(xué)習(xí)時,我們添加了類的向量,因為我們說這是監(jiān)督學(xué)習(xí),這意味著我們必須將類的名稱提供給模型。
邊界顯示
訓(xùn)練后,我們需要像在KNN中所做的那樣對數(shù)據(jù)進行表示,這樣我們就可以看到邊界,也可以看到模型是否根據(jù)我們擁有的訓(xùn)練數(shù)據(jù)很好地選擇了邊界。
我們注意到邊界確實使這兩個類之間有所不同,有些點很難分類,但基本上,學(xué)習(xí)做得很好。
測試
現(xiàn)在,我們需要通過聲明其他測試樣本來測試模型,并使用預(yù)測函數(shù)直接在模型中運行它們,以預(yù)測每個點屬于哪個類。為此,我們?yōu)閮蓚類聲明了另外兩個矩陣,每個矩陣包含200個測試項目。最后,只需通過執(zhí)行以下行來傳遞級聯(lián)矩陣(該矩陣包含兩個類的數(shù)據(jù))就可以了:
這是測試結(jié)果:
評估
因此,由于我們知道16個綠色的錯誤分類點和9個紅色的錯誤分類點,并且知道每個類別的總點數(shù)是200,因此我們可以輕松地填充表格。
準(zhǔn)確度
召回率
特異性
每個類的錯誤第1類:
第2類:
總誤差
結(jié)論
總而言之,我們可以看到,獲得的評估值非常令人滿意。因為誤差非常小,所以精度很高,這意味著該模型學(xué)習(xí)得很好,如果我們在此配置下使用SVM模型,那么它將在這種類型的應(yīng)用程序中很好地工作。
詞袋
介紹
在我們了解了如何將支持向量機用于一個基本案例之后,我們將嘗試在圖像上應(yīng)用支持向量機模型來進行分類。為此,我們有一個4個類的數(shù)據(jù)庫,每個類都有隔離的圖像。但這里的問題是,一個圖像包含幾個特征,因此如果我們想使用圖像,那么它將是一個具有大量值的輸入矩陣,這將使學(xué)習(xí)過程非常緩慢,甚至無法確定它們是否是正確的特征。這就是為什么我們需要找到一種方法,幫助我們從圖像中提取必要的信息,我們將學(xué)習(xí)這些信息。因為如果我們不這樣做,那么輸入向量將是整個圖像。所以這里的想法是從圖像中找到只包含圖像重要信息的描述符,所以這里或者我們將使用BOW(bag of words)和SURF的方法。SURF方法用于提取圖像的興趣點,它可以是輪廓、圓……因為如果我們只提取圖像的興趣點,那么輸入向量將很大程度上非常小,并且只包含必要的內(nèi)容,這樣學(xué)習(xí)將非?。
創(chuàng)建字典
在進行學(xué)習(xí)之前,我們說過必須先找到興趣點,然后將它們放在單個矩陣中,所以此矩陣稱為字典,然后從該字典中對興趣點最多的圖像進行分類分組。為了提取點,我們將使用可完成此工作的openCV函數(shù)。我們決定為每個類拍攝10張圖像進行訓(xùn)練,因此即使字典也必須包含10張圖像的信息,因此這是我們用來提取興趣點的代碼行:
因此,這些代碼行將提取這些點并將其放入描述符中,最后,我們將此描述符放入保存的字典中,并在學(xué)習(xí)部分中使用它。
訓(xùn)練
提取興趣點并填充字典后,我們需要找到包含我們所有學(xué)習(xí)圖像之間共有興趣點的圖。我們將使用以下代碼行來進行學(xué)習(xí),并使用此圖:
對于模型的參數(shù),我們使用與點相同的參數(shù),也使用RBF內(nèi)核。因此,在訓(xùn)練完成之后,我們必須保存模型,以便稍后在測試部分中使用它。
測試
現(xiàn)在我們必須使用openCV的預(yù)測功能來測試模型,但是在執(zhí)行此操作之前,我們必須知道對于測試來說是一樣的,我們不會將整個圖像都放入模型的輸入中,而是相反,我們必須在此處應(yīng)用相同的SURF算法來提取該圖像的興趣點,并獲得將要在預(yù)測輸入中獲得的此描述符。因此,對于測試,我選擇了每個類別的15張圖像,以便我們可以簡單地構(gòu)建混淆矩陣。在將我解釋的方法應(yīng)用于所有測試圖像后,我得到了以下混淆矩陣:
該矩陣表示:在有關(guān)手風(fēng)琴對象的15張測試圖像中,有5張分類錯誤的圖像和10張分類正確的圖像。對于“飛機”:分類良好的11張圖像,分類不良的4張。對于“錨”:5張圖像分類良好,10張圖像分類不良。對于“螞蟻”:8張分類良好的圖像和7張分類不良的圖像。我們注意到,對于“手風(fēng)琴”,“飛機”和“螞蟻”,該模型比“錨”模型更為敏感,因為它看起來很像飛機,因此飛機和錨點的興趣點非常接近這意味著很難在測試級別上區(qū)分這兩個對象
評估
為了進行評估,我們將計算每個類的誤差和全局誤差。盡管如此,我們可以注意到該模型的性能較差。
在計算了局部誤差之后,我們可以看到它并不是真正有效,這是由于以下幾個因素造成的:數(shù)據(jù)的類型非常接近,這使得4個類的關(guān)注點的提取變得非常接近。訓(xùn)練數(shù)據(jù),我們每班僅使用10張圖像,而有必要放置更多圖像,以便該模型在許多圖像上學(xué)習(xí)更多。而且在測試級別上,我們僅對15張圖像進行了測試,也許如果我們增加測試數(shù)據(jù),則誤差會有所降低。
結(jié)論
將SVM與SURF一起使用是一種很好的方法,因為它避免了學(xué)習(xí)圖像的所有像素,并且使模型更加準(zhǔn)確,并包含了對圖像進行分類所必需的功能。但在這種情況下,僅僅有一個好的模型是不夠的,這就給出了一個好的分類——也許描述符的選擇做得不好。這是我們在沒有神經(jīng)網(wǎng)絡(luò)的情況下制定機器學(xué)習(xí)算法時將會遇到的問題之一,這意味著我們必須自己選擇特征(我說自己是因為我們必須放置外部算法來提取特征) ,但使用神經(jīng)網(wǎng)絡(luò),所有這些工作將自動完成,并且特征的提取將在學(xué)習(xí)過程中由網(wǎng)絡(luò)完成。不幸的是,由于缺乏數(shù)據(jù),我們無法對案件進行神經(jīng)網(wǎng)絡(luò)處理。因為我認(rèn)為即使在這種情況下的神經(jīng)網(wǎng)絡(luò)也無法提供更準(zhǔn)確的結(jié)果。
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-10.29立即報名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會
-
10月31日立即下載>> 【限時免費下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月14日立即報名>> 2024工程師系列—工業(yè)電子技術(shù)在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
推薦專題
- 1 Intel宣布40年來最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國產(chǎn)AI芯片公司破產(chǎn)!白菜價拍賣
- 5 具身智能火了,但規(guī)模落地還需時間
- 6 國產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英特爾賦能智慧醫(yī)療,共創(chuàng)數(shù)字化未來
- 9 英偉達(dá)的麻煩在后頭?
- 10 將“網(wǎng)紅”變成“商品”,AI“爆改”實力拉滿
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市