2015-07-01 92 views
0

好的同事!訓練隱性支持向量機的模型

我非常喜歡用我自己的數據集來訓練一個新模型!

我沒有找到關於這個主題的信息,那麼我希望我的信息可以幫助人們,我也可以得到一些答案。

我會盡量解釋我都需要做訓練我自己的模型和步驟以後的一些問題...

  • 我從下載潛代碼:http://cs.brown.edu/~pff/latent-release4/
  • 我有下載從PASCAL VOC 2008碼(的devkit):http://host.robots.ox.ac.uk/pascal/VOC/voc2008/index.html
  • 我有效仿文件的結構/ VOC的PASCAL的,但在我自己的數據集文件夾:
    • 註釋。我已經創建了一個.xml,我已經定義了一個對象,臉,(每張圖片中我只有一張臉)。我沒有界定困難或姿勢...
    • JPEGImages我在那裏存儲在哪裏我已經定義了三個文件中的所有圖像
    • ImageSets
      • 的test.txt,在那裏我寫我的陽性樣品的文件名
      • train.txt,在那裏我寫我的負面樣本的文件名
      • trainval.txt,我寫了我的正面樣本的文件名(與test.txt完全相同的文件)。
  • 我改變globals.m和VOCinit.m一些事情(說算法的路徑和一些文件的位置...)

然後我用命令運行訓練:pascal('face',1);

繼我已經實現了完全訓練跑並沒有失敗,我得到我自己的模型我有些懷疑這些步驟......

  1. 你能看見什麼奇怪的,我的解釋?它可以工作嗎?
  2. 文件test.txt/trainval.txt必須相等嗎?爲什麼......這是什麼意思?
  3. 我需要在INSIDE函數中選擇我想要的零件數量嗎?
  4. 請你想象我有兩種樣品(正面和側面),我想檢測兩種樣品......我該如何解決這個問題?我以爲我必須訓練一個有兩個部件的模型......但是我怎樣才能告訴訓練碼是正面還是側面的樣本?在帶有標籤姿勢的註釋中? (我不這麼認爲......)還有其他方法來解決這個問題嗎?

謝謝你的時間! 我希望你能解決我的疑惑:)

+0

那麼.... @ 3yanlis1bos或巴勃羅裏瓦斯,也許你可以幫助我。 我收集這些圖像集合以訓練兩種模型(正面和側面): *(300正面+300橫向)正樣本 - > trainval.txt *(1000)負樣本 - > train.txt *(100)測試樣本 - > test.txt 由於我的圖像非常靜態(它們之間非常相似),我隨機輪換一些度數以在訓練中產生一些變化。 這是正確的嗎? 我的問題是,當我運行我的探測器時,正面和負面樣品的分數是相似的...然後我得到太多的FP和FN ... 感謝! – Ricardo

回答

0

我認爲test.txt應該包含樣本(圖片),將用於估計系統在學習臉後有多好。然而,在學習階段(訓練)使用trainval.txt來微調模型的參數;它是監督式學習的重要組成部分。

此外,很難讓單個SVM對正面和側面的人臉進行分類。這裏是我的建議:

  • 訓練一個SVM來檢測輸入圖像是正面還是側面。稱之爲SVM-0
  • 訓練另一個用於正面的SVM。這個SVM將分類你所有的人。但是,請注意,SVM通常是一個二元分類器,因此請確保選擇正確的SVM,作爲多類體系結構。致電SVM-F
  • Tran支持側面的最終SVM。再次使用多類SVM。叫它SVM-S

存在於輸入圖像SVM-0,如果檢測到它是一個正面面部,再次呈現輸入到SVM-F;否則,請輸入SVM-S

根據我的經驗,您應該期望在SVM-S中表現非常低的表現。這是一個難以解決的問題。但是正面並不是什麼大不了的,除非你正在處理姿勢,照度和表情(PIE)不同的面孔。隨着圖像中的PIE變化,人臉識別受到很大影響。

我建議你this website,它包含非常好的信息和初學者教程,無論是否有經驗。

+0

非常感謝您的回答! :) 然後: - ** trainval.txt **是訓練模型的陽性樣本 - ** train.txt **是訓練模型的陰性樣本 - ** test.txt **是其他註釋樣本(正面和負面)陽性樣本來訓練模型以檢查訓練是如何的......對嗎?這部分(test.txt)會影響最終模型(影響訓練?)? 我在檢測面孔(和他們的姿勢),但我不需要識別它們。我的目標是告訴人臉是否可見(或不是)和姿勢(正面/側面)。 **我對嗎?** – Ricardo

+0

不完全。看,'火車。txt','trainval.txt'和'test.txt'都應該包含正和負樣本。我建議你[https://youtu.be/4wGquWG-vGw](看這個視頻)解釋培訓,驗證和測試集的概念。如果你的目的是1)檢測一張臉,2)檢測是否是正面/側面,那麼問題比我想象的要簡單。首先,訓練一個支持向量機檢測一個「face」(+ class)或'not a face'( - class)。其次,訓練另一個SVM,它將檢測臉部是「正面」(+類)還是「橫向」( - 類)。您需要樣本來訓練兩個SVM。 –

相關問題