1. 程式人生 > >什麼是hard negative mining

什麼是hard negative mining

最近一直在看關於CNN的目標檢測和跟蹤的文章,在這中間會經常看到hard negative mining這個名詞,把這個大概解釋一下:

假設給你一堆包含一個或多個人物的圖片,並且每一個人都給你一個bounding box做標記,如果要訓練一個分類器去做分類的話,你的分類器需要既包含正訓練樣本(人)和負訓練樣本(背景)。

你通過觀察bounding box去建立一個有用的正訓練樣本,那麼怎麼做才能建立一個有用的負訓練樣本呢?

一個很好的方式就是去在開始時隨機建立一堆的bounding box候選框,並且不能與你的正樣本有任何的重疊,把這些未與正樣本重疊的新的bounding box作為你的負樣本。

好了,這樣你的正負樣本都有了,可以訓練可以用的分類器了,你用滑動視窗在你的訓練圖片上進行執行,但是你會發現你的分類器並不是很好用,分類的效果並不是很好,因為它會丟擲一堆的錯誤的正樣本(當檢測到人時實際上卻並不是實際的人),這就問題來了,你訓練了一個用於分類的分類器,然而這個分類器卻並不能達到你想要的效果,那麼應該怎麼辦呢?

這個時候就要用的hard negative了,hard negative就是當你得到錯誤的檢測patch時,會明確的從這個patch中建立一個負樣本,並把這個負樣本新增到你的訓練集中去。當你重新訓練你的分類器後,分類器會表現的更好,並且不會像之前那樣產生多的錯誤的正樣本。