1

我正在嘗試使用Matlab內置的中提琴瓊斯人臉檢測來檢測人臉。無論如何,我可以將「FrontalFaceCART」和「ProfileFace」這兩個分類模型合併爲一個以獲得更好的結果?如何在matlab中結合兩個分類模型?

謝謝。

+0

通常,分類模型輸出某種概率測量值,以確定輸入屬於他們試圖區分他們自己的類別的可能性。只需將一個看不見的輸入作爲訓練的一部分輸入到兩個模型中,並將輸入的類別分配給哪個輸入給予您最高的* posteriori *概率。 – rayryeng

回答

0

您不能組合模型。這對於任何分類任務都是無意義的,因爲每個分類器都是不同的(工作方式不同,即背後的算法不同,並且可能也有不同的訓練)。

根據分類模型(S)幫助(可發現here),你的兩個分類的工作方式如下:

  • FrontalFaceCART是一個弱分類組成的模型,基於分類迴歸樹分析
  • ProfileFace由弱分類的基礎上,決定樹樁

更多相關信息可以在所提供的鏈接找到,但你可以很容易地看到自己內心的行爲是相當不同的,S o你不能將它們混合或組合。
這就像(在機器學習中)混合一個支持向量機和K-最近鄰:第一個使用分離超平面,而後者只是基於距離(s)。然而,您可以並行(例如,獨立地)並行訓練多個模型,並選擇更適合您的模型(例如更小的錯誤率/更高的準確性):所以您基本上可以創建儘可能多的不同分類器,給它們相同的訓練集,評估每個精度(和/或其他參數)並選擇最佳模型。

+0

但是,如果我用FrontalFaceCART和ProfileFace運行兩個獨立的vision.CascadeObjectDetector對象,然後在我的圖像上運行每一個對象,那麼怎麼樣?是嗎?其實我做了類似的事情。我已經通過這兩個模型運行圖像,併爲每個模型獲得了兩組邊界框。然後將它們連接在一起成爲一個矩陣,以便從中得到一個結果。但是隻有一個問題是重疊的邊界框?任何想法如何擺脫他們? –

+1

所以你基本上是在做我所建議的(並行運行模型),但不是選擇最好的結果,而是嘗試在它們之間進行某種權衡。所以你要結合*結果*而不是*模型*。這更有意義。 – Alessiox

+0

重疊盒問題與您使用兩種模型的輸出有關。你無法避免它,但當然你可以丟棄一個盒子或將盒子連接在一起。這實際上是結果的*組合階段,我認爲你必須手動完成。嘗試搜索「重疊矩形matlab」或類似的東西,這是一個非常研究的問題。 – Alessiox

0

一種選擇是製作分層分類器。因此,在第一步中,您使用正面人臉分類器(假設大多數圖片都是正面人臉)。如果分類器失敗,則嘗試使用配置文件分類器。

我用面數據集做了這件事,它改善了我的整體分類準確性。此外,如果您有一些先驗信息,您可以使用它。在我的情況下,臉部通常在圖片的中間部分。

爲了進一步提高性能,不使用MATLAB中使用的兩個分類器,您需要更改技術(也可能是您的編程語言)。這是迄今爲止最好的方法:Facenet