2012-09-18 90 views
2

您將如何處理以下問題:我有5類圖像(共500張圖像):汽車,房屋,樹木,椅子和臉部。然後,我有一個包含20個無序圖像的文件夾,這意味着我知道它們屬於5個類中的一個,但還不知道是哪一個,我希望我的系統根據5個受控類對它們進行分類。我使用幾個提取器(色調,邊緣)來完成這項任務,但我正在努力獲得合適的分類方法。特別是一些python庫需要以類文件夾相同的方式命名不受控制的圖像文件夾(例如/ dir/controlled/car和/ dir/uncontrolled/car),這對我的分析來說是不可行的。至於我正在尋找替代方法,你可以在sklearn內提供一些方法學建議/解決方法嗎?Scikit學習。分類無序jpgs

回答

2

也許使用帶標籤的數據集比如ImageNet首先在這5個類別上訓練分類器(+1個額外的「misc」類,您可以使用不是來自這5個類的隨機圖像來填充)會更容易。

儘可能多的例子,你可以從圖像網建立你的訓練集,同時保持類大致平衡。例如,imagenet擁有將近8000張汽車圖片:http://www.image-net.org/synset?wnid=n02958343,但只有1500張左右的面孔:http://www.image-net.org/synset?wnid=n02958343。在這種情況下,某些分類器可能無法正常工作,從而對f1分數進行二次抽樣可能會產生更好的結果。除非你找到另一張臉部照片來源。

一旦您找到了一組用於特徵提取+分類鏈的參數,該參數在您的ImageNet子集上產生良好的交叉驗證分數,請重新訓練該完整子集的模型並將其應用於預測您自己的數據集的標籤。

選擇,讓您的置信度(例如用作爲predict_probadecision_function這樣的方法)的分類和反思最高和最低的置信度分類的質量:

  • 如果所有的最高等級是正確的,將所有高於某個安全閾值的圖片添加到包含原始圖像網子集和這些新圖片的「第二階段」訓練集中。
  • 手動重新註釋最低置信度預測中最可能出錯的錯誤,並將其添加到「分段兩個」訓練集中。

通過在這個豐富的數據集上重新訓練一個新模型來迭代,直到分類算法能夠正確地爲您的大部分圖片正確註釋爲止。

順便說一句,一旦開始註釋數據並使用分類器進行迭代以避免過度擬合,請不要更改參數。如果你想重新做參數選擇,你應該再次進行交叉驗證。