one-stage檢測算法負樣本淹沒問題

1.什麼是“類別不平衡”呢?

詳細來說,檢測算法在早期會生成一大波的bbox。而一幅常規的圖片中,頂多就那麼幾個object。這意味着,絕大多數的bbox屬於background。

2.“類別不平衡”又如何會導致檢測精度低呢?

因爲bbox數量爆炸。 
正是因爲bbox中屬於background的bbox太多了,所以如果分類器無腦地把所有bbox統一歸類爲background,accuracy也可以刷得很高。於是乎,分類器的訓練就失敗了。分類器訓練失敗,檢測精度自然就低了。

3.那爲什麼two-stage系就可以避免這個問題呢?

因爲two-stage繫有RPN罩着。 
第一個stage的RPN會對anchor進行簡單的二分類(只是簡單地區分是前景還是背景,並不區別究竟屬於哪個細類)。經過該輪初篩,屬於background的bbox被大幅砍削。雖然其數量依然遠大於前景類bbox,但是至少數量差距已經不像最初生成的anchor那樣誇張了。就等於是 從 “類別 極 不平衡” 變成了 “類別 較 不平衡” 。 
不過,其實two-stage系的detector也不能完全避免這個問題,只能說是在很大程度上減輕了“類別不平衡”對檢測精度所造成的影響。 
接着到了第二個stage時,分類器登場,在初篩過後的bbox上進行難度小得多的第二波分類(這次是細分類)。這樣一來,分類器得到了較好的訓練,最終的檢測精度自然就高啦。但是經過這麼兩個stage一倒騰,操作複雜,檢測速度就被嚴重拖慢了。

4.那爲什麼one-stage系無法避免該問題呢?

因爲one stage系的detector直接在首波生成的“類別極不平衡”的bbox中就進行難度極大的細分類,意圖直接輸出bbox和標籤(分類結果)。而原有交叉熵損失(CE)作爲分類任務的損失函數,無法抗衡“類別極不平衡”,容易導致分類器訓練失敗。因此,one-stage detector雖然保住了檢測速度,卻喪失了檢測精度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章