2014-12-07 44 views
2

你好,我正在認識一款使用級聯分類器,android和opencv庫的汽車。我的問題是,我的手機將所有東西都標記爲汽車。如何使用級聯分類器來減少錯誤識別

我已經創建了我的代碼基於: https://www.youtube.com/watch?v=WEzm7L5zoZE 和人臉檢測示例。我的應用程序行爲很奇怪,因爲標記看起來像隨機。我甚至不知道標記賽車是否正確,或者它只是一些隨機行爲。目前它甚至將我的鍵盤標記爲汽車。我不確定我可以改進什麼。我沒有看到訓練它之間的任何進展,5個或14個階段

我訓練我的文件多達14個階段

我的代碼看起來是這樣的:

@Override 
public Mat onCameraFrame(Mat aInputFrame) { 
    // return FrameAnalyzer.analyzeFrame(aInputFrame); 
    // Create a grayscale image 
    Imgproc.cvtColor(aInputFrame, grayscaleImage, Imgproc.COLOR_RGBA2RGB); 

    MatOfRect objects = new MatOfRect(); 

    // Use the classifier to detect faces 
    if (cascadeClassifier != null) { 
     cascadeClassifier.detectMultiScale(grayscaleImage, objects, 1.1, 1, 
       2, new Size(absoluteObjectSize, absoluteObjectSize), 
       new Size()); 
    } 

    Rect[] dataArray = objects.toArray(); 
    for (int i = 0; i < dataArray.length; i++) { 
     Core.rectangle(aInputFrame, dataArray[i].tl(), dataArray[i].br(), 
       new Scalar(0, 255, 0, 255), 3); 
    } 

    return aInputFrame; 
} 
+0

使用更多的陰性樣本,並在訓練後向您的陰性樣本中添加誤報並再次訓練。 – Micka 2014-12-07 17:16:28

+0

@Micka第二次培訓應該先加入還是會覆蓋第一次?與積極相關的負數越高,結果越好? – Fixus 2014-12-07 17:17:07

+0

不知道哈爾探測器的培訓,但我想你必須完全重新培訓。 Afaik你通常使用更多的負面樣本(5倍到10倍)比正面的,但我不是專家在機器學習... – Micka 2014-12-07 17:29:24

回答

2

試着改變下面。

  1. 使用COLOR_RGBA2RGBcvtColor在示例代碼中將不會給出灰度圖像。嘗試RGBA2GRAY
  2. 增加鄰居的數量detectMultiScale。現在是2.更多的鄰居意味着對結果更有信心。
  3. 希望有足夠的樣本與一起訓練。通過書籍快速搜索和閱讀,給人的印象就像培訓所需的數千張圖像。對於例如大約10000張圖像用於OCR haar訓練。對於面部訓練,使用3000到5000個樣本。
  4. 更重要的是,決定是否真的想用哈爾訓練來識別汽車。可能有更好的車輛識別方法。對於例如對於移動車輛,我們可以使用基於光流技術。
+0

@Kirand謝謝你的信息。我會檢查所有這些要點。鄰居增加後,我有一些積極的結果 – Fixus 2014-12-10 19:42:10