1. 程式人生 > >機器學習中的正負樣本

機器學習中的正負樣本

參考於
我們經常涉及到的任務有檢測以及分類。

針對與分類問題,正樣本則是我們想要正確分類出的類別所對應的樣本,例如,我們要對一張圖片進行分類,以確定其是否屬於汽車,那麼在訓練的時候,汽車的圖片則為正樣本,負樣本原則上可以選取任何不是汽車的其他圖片,這樣就可以訓練出來一個汽車的分類網路,對這個網路進行測試會發現,它會將一些非汽車的圖片誤報成汽車,這些誤報的圖片則為“難分樣本”,後續進行訓練的時候,將這些難分樣本加入至負樣本集合中進行訓練,最後得到的網路模效果會更好一些,這個過程就叫做“難例挖掘”。另外,在選取負樣本的時候,原則上是可以選擇任意非汽車的圖片作為負樣本,但是比較合理的情況應該是要考慮到實際應用場景,例如實際應用是對行車記錄儀上面捕捉到的圖片進行分類,那麼,負樣本則應該是捕捉到的其他非汽車的圖片,例如馬路,樹木,路燈等。

針對與檢測問題,需要確定哪裡有什麼,也就是既要對位置進行迴歸,還要進行分類,這時的正樣本就是我們事先標註出來的bbox框之中的部分,但是一般的檢測框架,都是按照一定的規則生成一些預測bbox,那麼在進行正樣本的選取時,就需要判斷這些生成的bbox與GT的bbox之間的overlap,如果overlap大於某一閾值,則將該預測bbox作為正樣本,如果沒有超過這一閾值,則認為是負樣本。下面摘錄一段部落格中的解釋,是針對與SSD訓練中的正負樣本的生成問題:

給定輸入影象以及每個物體的Ground Truth,首先找到每個Ground True Box對應的Default Box中IOU最大的作為正樣本。然後,在剩下的Default Box中找到那些與任意一個Ground Truth Box的IOU大於0.5的Default Box作為正樣本。其他的作為負樣本(每個Default Box要麼是正樣本Box要麼是負樣本Box)。如上圖中,兩個Default Box與貓匹配,一個與狗匹配。在訓練過程中,採用Hard Negative Mining 的策略(根據Confidence Loss對所有的Box進行排序,使正負例的比例保持在1:3) 來平衡正負樣本的比率。

具體的程式碼還沒有仔細研究,FasterRcnn也是類似的策略,它們的程式碼都值得好好研究一下,但是目前還不知道yolo再選取負樣本的時候有沒有用到什麼策略,有時間應該拜讀一下論文。