Focal Loss 閱讀筆記

Focal Loss for Dense Object Detection
文章地址:https://arxiv.org/abs/1708.02002

文章背景: One-stage 目標檢測器在訓練過程中,“簡單背景目標“數量巨大。訓練的損失函數有相當的一部分由這些簡單背景目標組成,使得訓練後期難以有效進行。
PS:One-stage 目標檢測器以SSD和YOLO爲代表,不含ROI Pooling結構,訓練也可以端到端地進行。


一.原理部分

Focal Loss 定義比較簡單易懂,以二分類檢測爲例:
使用y表示樣本的真實標籤,設y的取值爲{-1,+1},-1表示樣本真實標籤爲負樣本,+1表示樣本真實標籤爲正樣本; 使用p表示分類器(檢測器)產生的樣本預測值,表示目標類別的概率,p取值範圍是(0,1)。顯然,當y=1時,p越大越表明分類器預測樣本爲正例的置信度越高,則分類器分類效果越好,損失函數就越低。同樣,當y=-1時,p越小(1-p越大)越好。
交叉熵損失定義如下:
Cross Entropy Loss
Focal Loss爲了方便公式書寫和表達,先定義一個變量Pt。Pt表徵了分類器產生的預測值與樣本真實值的匹配程度:
Pt
Focal Loss使用Pt來表示,公式如下:
Focal Loss

通過Focal Loss的定義不難發現:Pt越大,即預測值和真實值匹配程度越高,那麼(1-pt)^gamma的值就越小(gamma大於0)。如果一個正樣本的預測值爲0.99,那麼該樣本在學習器的訓練中就屬於“簡單樣本“,即學習器已經能夠很好地判斷出該樣本的真實類別,Focal Loss把這個的樣本產生的損失值衰減(0.01)^gamma倍,如果gamma爲2,那麼就是衰減了一萬倍,也就是說經過衰減之後,一萬個pt=0.99的樣本產生的損失值和衰減之前的一個pt=0.99的樣本產生的損失值相同(如果是pt=0.9,這樣的倍數關係爲100,依此類推)。這樣的性質使得大量簡單樣本的影響在整個訓練中變小。

Focal Loss在其餘任務上可能表現不會太突出,因爲“簡單樣本“的損失已經很小了,衰減與否都不會產生太大影響(樣本數量均衡的前提下)。但是在One-stage目標檢測器中,它的影響會很大,因爲在One-stage的目標檢測器中,“簡單背景樣本“所佔的比例很大。在Focal Loss文章之前,One-stage目標檢測器解決這種問題的方法主要是丟棄簡單目標,限制訓練的目標數量和正負樣本比例,例如SSD中的Hard Negative Mining。但是完全丟棄簡單背景樣本也並不是最好的選擇,因爲在訓練初期簡單樣本仍然比較重要。


二.實驗部分

基於Focal Loss,作者提出來一個One-stage的檢測器,稱爲RetinaNet,並在MS COCO數據集上訓練和測試。
這個One-stage目標檢測器的網絡模型使用了ResNet + FPN的結構。
FPN文章地址:
https://arxiv.org/abs/1612.03144
如圖是RetinaNet的網絡示意圖。
RetinaNet
在實際使用Focal Loss時,加入平衡因子,用來平衡正負樣本本身的比例不均。
加入平衡因子之後的Focal Loss表達式如下:
Focal Loss with alpha
其中,平衡因子αt表示了類別均衡比例,當y=1時,αt=α,y=-1時,αt = 1 - α。

部分重要實驗細節:

1.初始化:初始化分爲W和b的初始化,W的初始化爲高斯分佈,b的初始化爲常數log((1-π)/π),其中π是一個比較小的常數,如0.01。在負樣本數量遠大於正樣本數量的情況下,需要使classification的輸出儘可能小,符合真實比例,這樣損失函數纔不會太大,使得訓練在初期不穩定。而由於文中的classification subnet的激活層是sigmoid,經過計算不難證明,sigmoid(log((1-π)/π)) = π。也就是說,這樣的初始化使得訓練初期,網絡輸出的預測值分佈在π附近,符合負樣本和正樣本的比例,訓練更加穩定。(PS:當樣本數量均衡時,一般b初始化爲0,這樣有simoid(0)=0.5,使得輸出符合樣本比例)

2.classification subnet和box regression subnet結構相同,但是並不共享參數(這一點與faster rcnn不同)。

3.在使用網絡進行預測時:爲了加快網絡速度,每一層pyramid僅保留置信度大於0.05的最多1000個預測框。
將所有保留的預測框綜合起來,經過非極大值抑制(閾值爲0.5)之後產生最終的預測結果。

實驗結果:
tuning

這個表格是作者進行消除實驗和調參實驗的實驗結果。在此不做詳細分析。

CDF

這張圖是作者使用參數爲ResNet-101,γ=2的的RetinaNet,在COCO上訓練完成後。對隨機圖片進行預測,並用預測所得的~10^7個負樣本和~10^5個正樣本繪製CDF曲線。橫座標是排序後的樣本採樣數量(以分數形式表示,取值爲0.1時,即選取了loss值最小的10%的樣本);縱座標是所佔loss的比例。
由圖可得結論:
1.對於正樣本,γ=2時的loss中的60%以上來自20%的難分樣本;γ=0時,loss中的50%來自20%的難分樣本。Focal Loss對前景目標影響不大。
2.對於負樣本,γ=2時,loss中的絕大部分(99%?)來自不到1%的難分樣本。而γ=0時,loss曲線比較平滑。
從所得結論可以看出,Focal Loss達到了預期的目的,極大程度地衰減了簡單背景樣本的佔總體loss的比例。

AR

最後一個表格是經過調參後,效果最佳的RetinaNet與其他典型目標檢測器的性能對比。可以看出,RetinaNet在小目標檢測上的性能提升比較顯著。

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