正負樣本不平衡處理方法總結【轉】


轉自:watersink

1, Bootstrapping,hard negative mining
最原始的一種方法,主要使用在傳統的機器學習方法中。
比如,訓練cascade類型分類模型的時候,可以將每一級分類錯誤的樣本繼續添加進下一層進行訓練。

比如,SVM分類中去掉那些離分界線較遠的樣本,只保留離分界線較近的樣本。

 

2, heuristic sampling

標准的faster-RCNN中,假設正樣本IOU(0.7~1.0)。負樣本IOU(0.1~0.3),hard 負樣本IOU(0.0~0.1)。比如實際的RPN網絡中,實際最后的anchor經過NMS處理后的負樣本是很多的,假如有100000個。而實際訓練的正負樣本比例為1:3,負樣本大概只需要2000-3000個。這時就只選擇那些hard負樣本,這樣實際訓練出來的效果最好。

 

3, online hard example mining(OHEM)

出自,Training Region-based Object Detectors with Online Hard Example Mining這篇文章,

在faster RCNN這樣的框架下,在原始的網絡基礎上,新接入了一個綠色的Read-only Layer,該網絡對所有的ROI進行前向傳播,並計算最后的loss,然后紅色的網絡對其中loss較大的ROI進行前向和后向傳播,可以說是一種動態的選擇性的傳播梯度。優勢也就顯而易見,比原始的faster RCNN可以節省很大的運算量,訓練速度回提升,最終模型准確性也提升。
其中,一個trick就是,在綠色的網絡進行前向傳播完,其中出來的好多ROI會存在一些Loss較高,但是這些ROI有很大的IOU的情況,這樣就會使得梯度重復計算和傳播,因此,這里,作者加入了NMS進行IOU的過濾。


4,Focal Loss
出自Focal Loss for Dense Object Detection這篇文章,
文章重點就是提出了focal loss這個cross entropy (CE) loss的改進版,實現了對於正負樣本不平衡的調整。具體思路就是其公式,

從這個公式就可以分析出,
假設r=2,pt分數為0.9,那么這個easy example的loss將會被縮小0.01a倍
假設r=2,pt分數為0.968,那么這個easy example的loss將會被縮小0.001a倍
假設r=2,pt分數為0.1,那么這個hard example的loss將會被縮小0.81a倍
同樣所有樣本的loss都會縮小,但是hard example要不easy example縮小的小,從而取得好的訓練效果。

 

從上圖也可以反映出,r>0的曲線的loss要比r=0的曲線的更低,loss更小。

當然文章還提出了一個RetinaNet

RetinaNet以Resnet為基礎結構,通過Feature Pyramid Network (FPN)產生多尺度的輸出特征圖,然后分別級聯一個分類和回歸的子網絡。這點和faster RCNN有點區別,在faster中是只使用一個網絡進行分類和回歸操作,RetinaNet將2個任務分離后,也許會在精度上有一定提高吧,也更容易訓練。
這里一個trick是RetinaNet的初始化,
(1)除了分類子網絡的最后一層,其余層w全部初始化為u=0, σ = 0:01的高斯分布,b初始化為0。
(2)最后一個分類的卷積層,b初始化為- log((1 - π)/π),文中使用π = 0.01,這樣初始化使得每個anchor被標記為前景的概率為0.01,
這里b的這個公式是怎么得出的呢?
最終的分類得分是一個邏輯回歸,公式為,

 

這里的z=wx+b,由於w初始化為u=0, σ = 0:01的高斯分布,所以,z=b,最終的概率設為π,從而得出公式,

 

從而解出,b=- log((1 -π)/π)

這個初始化對於focal loss的訓練很重要。

 

5,class balanced cross-entropy

出自Holistically-nested edge detection這篇文章, 主要用於FCN,U-net等分割,邊緣檢測的網絡,用於對像素級別的2分類樣本不平衡進行優化。

 

sigmoid_cross_entropy公式:

-y_hat* log(sigmoid(y)) - (1 - y_hat) * log(1 - sigmoid(y))

class_balanced_sigmoid_cross_entropy公式:

-β*y_hat* log(sigmoid(y)) -(1-β) * (1 - y_hat) * log(1 - sigmoid(y))

思想就是引入新的權值β,實現正負樣本loss的平衡,從而實現對不同正負樣本的平衡。

 

References:

https://github.com/abhi2610/ohem


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM