歡迎光臨
每天分享高質量文章

標的檢測小tricks之樣本不均衡處理

作者丨燕小花 

研究方向丨計算機視覺

引言

 

當前基於深度學習的標的檢測主要包括:基於 two-stage 的標的檢測基於 one-stage 的標的檢測。two-stage 的標的檢測框架一般檢測精度相對較高,但檢測速度慢;而 one-stage 的標的檢測速度相對較快,但是檢測精度相對較低。one-stage 的精度不如 two-stage 的精度,一個主要的原因是訓練過程中樣本極度不均衡造成的。

 

標的檢測任務中,樣本包括哪些類別呢? 

 

  • 正樣本:標簽區域內的圖像區域,即標的圖像塊; 

  • 負樣本:標簽區域以外的圖像區域,即圖像背景區域; 

  • 易分正樣本:容易正確分類的正樣本,在實際訓練過程中,該類占總體樣本的比重非常高,單個樣本的損失函式較小,但是累計的損失函式會主導損失函式;

  • 易分負樣本:容易正確分類的負樣本,在實際訓練過程中,該類占的比重非常高,單個樣本的損失函式較小,但是累計的損失函式會主導損失函式; 

  • 難分正樣本:錯分成負樣本的正樣本,這部分樣本在訓練過程中單個樣本的損失函式教高,但是該類占總體樣本的比例教小;

  • 難分負樣本:錯分成正樣本的負樣本,這部分樣本在訓練過程中單個樣本的損失函式教高,但是該類占總體樣本的比例教小。

 

那麼什麼是樣本不平衡問題? 

 

所謂的樣本不平衡問題是指在訓練的時候各個類別的樣本數量極不均衡。以基於深度學習的單階段標的檢測為例,樣本類別不均衡主要體現在兩方面:正負樣本不均衡(正負樣本比例達到 1:1000)和難易樣本不均衡(簡單樣本主導 loss)。一般在標的檢測任務框架中,保持正負樣本的比例為 1:3(經驗值)。

 

對於一個樣本,如果它能很容易地被正確分類,那麼這個樣本對模型來說就是一個簡單樣本,模型很難從這個樣本中得到更多的信息;而對於一個分錯的樣本,它對模型來說就是一個困難的樣本,它更能指導模型優化的方向。

 

對於單階段分類器來說,簡單樣本的數量非常大,他們產生的累計貢獻在模型更新中占主導作用,而這部分樣本本身就能被模型很好地分類,所以這部分的引數更新並不會改善模型的判斷能力,這會導致整個訓練變得低效。 

 

實際訓練過程中如何劃分正負樣本訓練集? 

 

近年來,不少的研究者針對樣本不均衡問題進行了深入研究,比較典型的有 OHEM [1](在線困難樣本挖掘)、S-OHEM [2]A-Fast-RCNN [3]Focal Loss [4]GHM [5](梯度均衡化)。


樣本不均衡的處理方法

 

OHEM(在線困難樣本挖掘)

 

OHEM 演算法 [1](Online Hard Example Mining,發表於 2016 年的 CVPR)主要是針對訓練過程中的困難樣本自動選擇,其核心思想是根據輸入樣本的損失進行篩選,篩選出困難樣本(即對分類和檢測影響較大的樣本),然後將篩選得到的這些樣本應用在隨機梯度下降中訓練。

 

在實際操作中是將原來的一個 ROI Network 擴充為兩個 ROI Network,這兩個 ROI Network 共享引數。其中前面一個 ROI Network 只有前向操作,主要用於計算損失;後面一個 ROI Network 包括前向和後向操作,以 hard example 作為輸入,計算損失並回傳梯度。該演算法在標的檢測框架中被大量使用,如 Fast RCNN。

 

 

該演算法的優點:1)對於資料的類別不平衡問題不需要採用設置正負樣本比例的方式來解決,這種在線選擇方式針對性更強;2)隨著資料集的增大,演算法的提升更加明顯。

 

該演算法的缺點:只保留 loss 較高的樣本,完全忽略簡單的樣本,這本質上是改變了訓練時的輸入分佈(僅包含困難樣本),這會導致模型在學習的時候失去對簡單樣本的判別能力。

 

S-OHEM(基於loss分佈採樣的在線困難樣本挖掘)

 

先來看看原生的 OHEM 存在什麼問題?假設給定 RoI_A 和 RoI_B,其對應的分類和邊框回歸損失分別為

 

如果按照原生的 OHEM(假定各損失函式權重相同),此時 RoI_A 的總體 loss 大於 RoI_B,也就是說 A 相對於 B 更難分類;而實際上單從分類損失函式(交叉熵),RoI_A 和 RoI_B 的實際類別概率分別是 61.6% 和 64.5%,在類別概率上兩者只相差 0.031,可以認為 A 和 B 具有相同的性能。

 

單從邊框損失函式(Smooth L1),雖然 A 和 B 的損失函式只相差 0.01,但這個微小的差會導致預測邊框和 groudtruth 有 0.14 的差距,此時,B 相對於 A 更難分類,因此單從 top-N 損失函式來篩選困難樣本是不可靠的。

 

針對上述問題,提出了 S-OHEM 方法 [2](發表於 2017 年的 CCCV),主要考慮 OHEM 訓練過程忽略了不同損失分佈的影響,因此 S-OHEM 根據 loss 的分佈抽樣訓練樣本。它的做法是將預設 loss 的四個分段:

 

給定一個 batch,先生成輸入 batch 中所有圖像的候選 RoI,再將這些 RoI 送入到 Read only RoI 網絡得到 RoIs 的損失,然後將每個 RoI 根據損失(這裡損失是一個組合,具體公式為,α,β 隨著訓練階段變化而變化。

 

之所以採用這個公式是因為在訓練初期階段,分類損失占主導作用;在訓練後期階段,邊框回歸損失函式占主導作用)劃分到上面四個分段中,然後針對每個分段,通過排序篩選困難樣本。再將經過篩選的 RoIs 送入反向傳播,用於更新網絡引數。

 

優點:相比原生 OHEM,S-OHEM 考慮了基於不同損失函式的分佈來抽樣選擇困難樣本,避免了僅使用高損失的樣本來更新模型引數。

 

缺點:因為不同階段,分類損失和定位損失的貢獻不同,所以選擇損失中的兩個引數 α,β 需要根據不同訓練階段進行改變,當應用與不同資料集時,引數的選取也是不一樣的.即引入了額外的超引數。

 

A-Fast-RCNN(基於對抗生成網絡的方式來生成困難樣本)

 

從更好的利用資料的角度出發,OHEM 和 S-OHEM 都是發現困難樣本,而 A-Fast-RCNN [3] 的方法(發表於 2017 年 CVPR)則是通過 GAN 的方式在特征空間產生具有部分遮擋和形變(本文主要考慮旋轉特性)的困難樣本,而這部分樣本資料很難出現在實際訓練資料集中。

 

本文通過生成的方式來教網絡什麼是“遮擋”和“變形”,區別於傳統的直接生成樣本圖片的方法,這些變換都是基於特征圖的:1)通過添加遮擋 mask 來實現特征的部分遮擋;2)通過操作特征響應圖來實現特征的部分變形。

 

本文設計了兩個對抗網絡 ASDN 和 ASTN,分別對應於樣本的遮擋和樣本的變形,並將這兩種變形相融合(ASDN 的輸出作為 ASTN 的輸入),使得檢測器在訓練的時候可以更加魯棒。

 

優點:與 OHEM 相比,區別在於文本的方法是構建不存在的 Hard Poistive 樣本,而 OHEM 是挖掘現有樣本中的 Hard 樣本。

 

缺點:從改善效果上來講,A-Fast-RCNN 的方法的效果並不比 OHEM 好太多,也許是仿造的資料和真實性還存在差距,此外 GAN 網絡也比較難訓練。

 

Focal Loss(損失函式的權重調整)

 

針對 OHEM 演算法中忽略易分樣本的問題,本文提出了一種新的損失函式 Focal Loss(發表於 2017 ICCV),它是在標準交叉熵損失基礎上修改得到的。這個損失函式可以通過減少易分類樣本的權重,使得模型在訓練時更專註於難分類的樣本。

 

為了證明 Focal Loss 的有效性,作者設計了一個 dense detector:RetinaNet,並且在訓練時採用 Focal Loss 訓練。實驗證明 RetinaNet 不僅可以達到 one-stage detector 的速度,也能有 two-stage detector 的準確率。 

 

先來看看 Focal Loss 損失函式的公式:

 

其中用於控制正負樣本的權重,當其取比較小的值來降低負樣本(多的那類樣本)的權重;用於控制難易樣本的權重,目的是通過減少易分樣本的權重,從而使得模型在訓練的時候更加專註難分樣本的學習。文中通過批量實驗統計得到當時效果最好。

 

 

進一步來看看 Focal Loss 函式有什麼性質? 

 

當一個樣本被錯分的時候, Pt 是很小的,那麼調製繫數就接近 1,損失函式損失函式影響很小;但是當 Pt 接近 1 的時候(也就是樣本被正確分類),則調製繫數就接近 0,此時易分類樣本的損失函式權重被大大地降低了,即易分樣本的權重被大大地降低了。

 

當 γ 增加時,調製繫數也會增加。假設 γ=2 ,對於一個易分樣本(Pt=0.9)的損失函式要比標準的交叉熵小 100 倍;當 Pt=0.968 時,要小 1000+ 倍,但是對於難分樣本(Pt < 0.5),loss 最多小了 4 倍。由此可見難分樣本的權重相對提升了很多,從而增加哪些錯誤分類的重要性。

 

GHM(損失函式梯度均衡化機制) 

 

對於一個樣本,如果它能很容易地被正確分類,那麼這個樣本對模型來說就是一個簡單樣本,模型很難從這個樣本中得到更多的信息,從梯度的角度來說,這個樣本產生的梯度幅值相對較小。而對於一個分錯的樣本來說,它產生的梯度信息則會更豐富,它更能指導模型優化的方向。

 

對於單階段分類器來說,簡單樣本的數量非常大,他們產生的累計貢獻在模型更新中占主導作用,而這部分樣本本身就能被模型很好地分類,所以這部分的引數更新並不會改善模型的判斷能力,這會導致整個訓練變得低效。因此單階段標的檢測中樣本不均衡性的本質是簡單困難樣本的不均衡性。 

 

受 Focal loss 啟發,本文通過深入分析 one-stage 標的檢測框架中樣本分佈不平衡(正負樣本不均衡和難易樣本不均衡)的本質影響,提出了基於梯度分佈的角度來緩解 one-stage 中的訓練樣本不平衡(簡稱 GHM,Gradient Harmonizing Mechanism,發表於 AAAI 2019,並獲得了 Oral),從而改善 one-stage 的標的檢測的檢測精度。

 

本文提出了梯度密度,並將梯度密度的倒數作為損失函式的權重分別引入到分類損失函式(GHM-C)和邊框損失函式(GHM-R)。

 

損失函式的權重(梯度密度的倒數) 

 

就是把梯度幅值範圍(X 軸)劃分為 M 個區域,對於落在每個區域樣本的權重採取相同的修正方式,類似於直方圖。具體推導公式如下所示。

 

X 軸的梯度分為 M 個區域,每個區域長度即為 ε,第 j 個區域範圍即為,用表示落在第 j 個區域內的樣本數量。定義 ind(g) 表示梯度為 g 的樣本所落區域的序號,那麼即可得出新的引數

 

由於樣本的梯度密度是訓練時根據 batch 計算出來的,通常情況下 batch 較小,直接計算出來的梯度密度可能不穩定,所以採用滑動平均的方式處理梯度計算。

 

這裡註意 M 的選取。當 M 太小的時候,不同梯度模上的密度不具備較好的方差;當然 M 也不能太大,因為 M 過大的時候,受限於 GPU 限制,batch size 一般都比較小,此時如果 M 太大的話,會導致每次統計過於稀疏(分得太細了),異常值對小區間的影響較大,導致訓練不穩定。本文根據實驗統計,M 取 30 為最佳。

 

GHM-C 分類損失函式 

 

對於分類損失函式,這裡採用的是交叉熵函式,梯度密度中的梯度模長是基於交叉熵函式的導數進行計算的,GHM-C 公式如下:

 

 

HM-R 邊框回歸損失函式 

 

對於分類損失函式,由於原生的 Smooth L1 損失函式的導數為 1 時,樣本之間就沒有難易區分度了,這樣的統計明顯不合理。

 

本文修改了損失函式,梯度密度中的梯度模長是基於修改後的損失函式 ASL1 的導數進行計算的,GHM-R 公式如下:

 

 

總結與困惑

 

總結

 

1. OHEM 系列的困難樣本挖掘方法在當前的標的檢測框架上還是被大量地使用,在一些文本檢測方法中還是被經常使用; 

 

2. OHEM 是針對現有樣本並根據損失 loss 進行困難樣本挖掘,A-Fast-RCNN 是構建不存在的 Hard Poistive 樣本(即造樣本),Focal Loss 和 GHM 則從損失函式本身進行困難樣本挖掘; 

 

3. 相比 Focal loss,本文提出的 GHM 是一個動態的損失函式,即隨著不同資料的分佈進行變換,不需要額外的超引數調整(但是這裡其實還是會涉及到一個引數,就是 Unit region 的數量);此外 GHM 在降低易分樣本權重的同時,對 outliner 也會有一定程度的降權; 

 

4. 無論是 Focal Loss,還是基於 GHM 的損失函式都可以嵌入到現有的標的檢測框架中;Focal Loss 只針對分類損失,而 GHM 對分類損失和邊框損失都可以 

 

5. GHM 方法在原始碼實現上,作者採用平均滑動的方式來計算梯度密度,不過與論文中有一個區別是在計算梯度密度的時候,沒有乘以 M,而是乘以有效的(也就是說有梯度信息的區間)bin 個數; 

 

6. 之前嘗試過Focal Loss用於多分類任務中,發現在精度並沒有提升;但是我試過將訓練資料按照訓練資料的原始分佈並將其引入到交叉熵函式中,準確率提升了;GHM 方法的本質也是在改變訓練資料的分佈(將難易樣本拉勻),但是到底什麼的資料分佈是最優的,目前尚未定論。 

 

困惑

 

從 GHM 與其它經典方法的對比中,不難看出在相同框架的基礎上,GHM 對中大型標的的檢測(特別是大標的)優於 Focal loss,但對於小標的的檢測不如 Focal loss 好,這裡是什麼原因導致的?

 

本文僅是個人的理解和總結,若有錯誤或遺漏的地方,歡迎指正和補充。

參考文獻

[1] Abhinav Shrivastava, Abhinav Gupta and Ross Girshick. Training Region-based Object Detectors with Online Hard Example Mining. In Proceedings of Conference on Computer Vision and Pattern Recognition (CVPR), 2016.

[2] Minne Li, Zhaoning Zhang, Hao Yu, Xinyuan Chen, Dongsheng Li. S-OHEM: Stratified Online Hard Example Mining for Object Detection. In Proceedings of Computer Vision – Second CCF Chinese Conference, CCCV 2017.

[3] Xiaolong Wang, Abhinav Shrivastava, and Abhinav Gupta. A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection. In Proceedings of Conference on Computer Vision and Pattern Recognition (CVPR), 2017. 

[4] Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár. Focal Loss: Focal Loss for Dense Object Detection. In Proceedings of the International Conference on Computer Vision (ICCV), 2017.

[5] Buyu Li, Yu Liu and Xiaogang Wang. GHM: Gradient Harmonized Single-stage Detector. In Proceedings of the AAAI Conference on Artificial Intelligence, 2019.

赞(0)

分享創造快樂