2016-03-15 46 views
1

我正試圖在FPGA上實現LBP人臉檢測器。爲此,我想在OpenCV中訓練檢測器,並在RTL代碼中使用該模型。我試圖挖掘已有的LBP frontal face model。我還研究了級聯分類器,它是弱分類器級聯,每個弱分類器都有自己的權重。但是,我無法將我研究的理論與XML文件中的模型明確關聯。 考慮的樣品臺形式this型號:OpenCV LBP級聯分類器模型XML文件中各種參數的含義是什麼?

<!-- stage 0 --> 
<_> 
    <maxWeakCount>3</maxWeakCount> 
    <stageThreshold>-0.7520892024040222</stageThreshold> 
    <weakClassifiers> 
    <!-- tree 0 --> 
    <_> 
     <internalNodes> 
     0 -1 46 -67130709 -21569 -1426120013 -1275125205 -21585 
     -16385 587145899 -24005</internalNodes> 
     <leafValues> 
     -0.148811340 0.8888888955116272</leafValues></_> 
    <!-- tree 1 --> 
    <_> 
     <internalNodes> 
     0 -1 13 -163512766 -769593758 -10027009 -262145 -514457854 
     -193593353 -524289 -1</internalNodes> 
     <leafValues> 
     -0.7739216089248657 0.7278633713722229</leafValues></_> 
    <!-- tree 2 --> 
    <_> 
     <internalNodes> 
     0 -1 2 -363936790 -893203669 -1337948010 -136907894 
     1088782736 -134217726 -741544961 -1590337</internalNodes> 
     <leafValues> 
     -0.7068563103675842 0.6761534214019775</leafValues></_></weakClassifiers></_> 
<!-- stage 1 --> 

我的具體問題是:

  1. 什麼號碼?我認爲數字0和-1對應於樹樁的左側和右側節點(如果我錯了,請糾正我),並且46指向功能編號。我不清楚這裏的其他7個整數。
  2. 在計算了所有3個LBP特徵(這裏是46,13和2)之後,我該如何決定階段是通過還是失敗?
  3. 我研究過LBP功能是8位無符號數(0到255)。但我不明白爲什麼這些大+ ve和-ve整數在模型中出現。例如:-67130709 -21569 -1426120013 -1275125205 -21585 -16385 587145899 -24005

我欣賞任何建議。謝謝。

回答

2
  1. 你說得對。前兩個數字是指樹中節點的索引。如果索引是< = 0,則表示它是葉節點。所以,在你的例子中,它肯定是基於樹樁的樹。 46是LBP特徵的索引。另外8個值是子集掩碼。要了解它是如何工作的,請參閱this行代碼(c是LBP特徵值):

    tmp += (subset[c>>5] & (1 << (c & 31))) ? stump.left : stump.right; 
    
  2. 當你計算LBP特徵的每個樹,您應該計算葉面積指數(見鏈接到的代碼行上方)。那麼你需要在這個階段的所有樹木中總結葉子值。如果該總和小於<stageThreshold>,則舞臺失敗。

  3. 請看第一點。

+0

我對模型中的LBP功能還有一個問題。模型中的矩形不是3x3或9x9,這是流行和簡單的LBP功能。我在想什麼4個數字在<_> <_>是左上角和高度和寬度。但它似乎不是3x3或9x9。這些長方形LBP功能不是嗎? –