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

2021-09-24 16:06:54 字數 920 閱讀 7522

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雖然保住了檢測速度,卻喪失了檢測精度。

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

1.什麼是 類別不平衡 呢?詳細來說,檢測演算法在早期會生成一大波的bbox。而一幅常規的中,頂多就那麼幾個object。這意味著,絕大多數的bbox屬於background。2.類別不平衡 又如何會導致檢測精度低呢?因為bbox數量 正是因為bbox中屬於background的bbox太多了,所以...

VIBE檢測演算法

一 vibe 獲取目標 其他演算法處理 最終目標 優點 記憶體占用少,處理速度快,計算量小,檢測效果好 無引數法 可直接應用在產品中,軟硬體相容性好 效能優於混合高斯,引數化方法,sacon等 背景模型及時初始化 具有較好的抗噪能力。缺點 ghost區域 挑戰 必須適應環境的變化 比如光照的變化造成...

素數檢測演算法

因為1既不是素數也不是合數,所以下面的實現 中不考慮小於2的情況。本文以c語言進行講解,建議對著完整的原始碼看。最原始 最粗暴的方法就是從頭到尾逐個進行檢測,一旦遇到可被整除的數馬上返回false bool is prime 1 int n return true 該演算法時間複雜度為n2 n 2對...