人有悲歡離合,月有陰晴圓缺。中秋佳節,為大家奉上一篇關於目標檢測中“陰晴圓缺”不平衡的綜述:Imbalance Problems in Object Detection: A Review (https://arxiv.org/abs/1909.00169, under review at TPAMI),同時也結合自己最近在這方面的 Tech Report: Is Sampling Heuristics Necessary in Training Object Detectors? (https://arxiv.org/abs/1909.04868) 進行一些闡述和思考,希望可以給大家以啟發。
開源地址:
Imbalance Problems in Object Detection: A Review https://github.com/kemaloksuz/ObjectDetectionImbalance,作者總結了在目標檢測領域關於不平衡的大量研究,從古老的 Bootstrapping 到現在的 Libra R-CNN,並且在不平衡的各個維度上列出了相關文獻,大而全,值得大力關注。

Are Sampling Heuristics Necessary in Object Detectors?
在 YOLOv3 (one-stage), RetinaNet (one-stage), Faster R-CNN (two-stage), Mask R-CNN (two-stage), FoveaBox (anchor-free), Cascade R-CNN (multi-stage) 上沒有使用任何 hard/soft sampling (e.g., objectness, under-sampling, Focal Loss) 方法,但取得甚至更好的 COCO AP,可以嘗試一下~ https://github.com/ChenJoya/sampling-free

介紹
在 Oksuz 等人投向 TPAMI 的這篇論文中,提煉了一個核心觀點:目標檢測中存在多種多樣的不平衡,這些不平衡會影響最終的檢測精度,而現有的許多研究可以歸結為解決這些不平衡方法。他們將不平衡分為四類:
- Class imbalance:類別不平衡,主要由樣本數量上的差別引起。最典型的是 foreground-background imbalance,即訓練過程中的正例數量遠遠小於負例數量引起的不平衡;
- Scale imbalance:尺度不平衡,這種不平衡主要由目標的尺度引起,例如 COCO 中的小物體過多即是一種尺度不平衡;又如將物體分配至 feature pyramid 時的不平衡;
- Spatial imbalance:空間不平衡,如不同樣本對 regression 損失貢獻的不平衡,IoU 上的不平衡,物體分布位置的不平衡;
- Objective imbalance:多任務損失優化之間的不平衡,最常見存在於 classification and regression losses 之間。
值得一提的是,這篇綜述很大程度上應該是受到了 Libra R-CNN 的啟發。 Libra R-CNN 發現了 sample level, feature level, and objective level 上的不平衡,而上述四種不平衡中,Spatial imbalance, Scale imbalance,Objective imbalance 似乎都是由其分別引申而來。
下面,我們先從相關研究最少的 Objective imbalance 入手,逐步分析研究工作較多的 Spatial imbalance,Scale imbalance,Class imbalance。

1. Objective imbalance
一般來說,分類任務的損失要比回歸任務的損失要大一些,這是因為回歸只做 foreground example,而分類要做到所有的 example。其實調過 Faster R-CNN 的小伙伴應該知道,在 RoI-subnetwork 階段, classification 大約是 regression 的 2~4 倍,就如同下面這張圖:

最常見的方法是設置 weighting factor 來調,觀察什么樣的情況可以達到最佳。另外一個解決方案是 Prime Sample Attention in Object Detection 里的 Classification-Aware Regression Loss,其本意是想讓網絡更加注意到回歸較好的 bounding-boxes,因此讓回歸損失和分類的 score 相關,從而使得梯度可以從 regression branch 流到 classification branch:

作者在 open issue 章節中也提到,這種關聯應該被更加深入的探索。典型的例子就是 Towards Accurate One-Stage Object Detection with AP-Loss,沒有改動回歸的 branch,但是 AP@75 卻漲了 ~3%。
2. Spatial imbalance
Definition. Size, shape, location – relative to both the image or another box – and IoU are spatial attributes of bounding boxes. Any imbalance in such attributes is likely to affect the training and generalization performance. For example, a slight shift in position may lead to drastic changes in the regression (localization) loss, causing an imbalance in the loss values, if a suitable loss function is not adopted. In this section, we discuss these problems specific to the spatial attributes and regression loss
2.1 Imbalance in Regression Loss
在訓練過程中,不同正例對於 regression loss 的貢獻是不相同的,對於那些 low-quality IoU bounding-boxes, 會產生很大的損失,L1 和 L2 loss 會被它們所主導:

Smooth L1 Loss 由 Fast R-CNN 提出,降權了那些過大損失的樣本(可能是 outliers)。Balanced L1 Loss 由 Libra R-CNN 提出,提升了 inliers 的權重,即相當於進一步降低了 outliers 的權重。其他的研究如下所示:

2.2 IoU Distribution Imbalance
IoU Imbalance 是指 bounding boxes 在 IoU 段的分布上呈現出明顯不均勻的分布,Libra R-CNN 和 Cascade R-CNN 都探討過這個問題。在 negatives 上,IoU 在 0~0.1 范圍內的樣本占據主導;在 positives 上,IoU 在 0.5~0.6 之間的樣本占據主導。

作者推薦的工作是 Cascade R-CNN (Naiyan Wang: CVPR18 Detection文章選介(上)),通過級聯結構,逐步調高 IoU threshold,增強正樣本的質量,防止 regressor 對單一閾值過擬合。
2.3 Object Location Imbalance
基於 anchor 的檢測器 將 anchor boxes 均勻地排布在圖像上,但是物體可不服從這種分布,如下所示:

這里作者推薦了 Region Proposal by Guided Anchoring 的工作 (Kai Chen: Guided Anchoring: 物體檢測器也能自己學 Anchor)。作為一個 anchor-free 的 RPN,它可以預測出 proposals 的 location,如下圖中的箭頭:

3. Scale imbalance
3.1 Object/box-level Scale Imbalance
當某個尺度范圍內的物體 over-represent 該數據集后,scale imbalance 就會發生。 An Analysis of Scale Invariance in Object Detection - SNIP 中的 investigation 指出這種 imbalance 會極大影響 overall detection performance。下圖表達了 COCO 數據集中長寬面積上的不平衡:

為了處理多樣性的邊界框,pyramid 方法是最常用的。包括 image pyramid (SNIP, SNIPER), feature pyramid(SSD, FPN 等),以及 feature pyramid + image pyramid,作者將 TridentNet (Naiyan Wang: TridentNet:處理目標檢測中尺度變化新思路) 列為這方面的典型工作。

3.2 Feature-level Imbalance
這種不平衡主要是指 FPN-based architecture 里,層級之間特征的不平衡性,Low Level 和 High Level 的特征之間互有定位/語義之間的優缺點,如何 mitigate 這種不平衡來達到最佳的檢測效果?而解決方案也大多是結構上的,來看看下面各式各樣的連接方法:

4. Class imbalance
4.1 Foreground-Foreground Class Imbalance
這類不平衡指的是分類類別上的不平衡,在數據集(dataset-level imbalance)或者是一個 batch (mini-batch-level imbalance)中都會存在。但是遺憾的是,這一類的不平衡並沒有太大的引起現階段目標檢測研究的重視。
4.2 Foreground-Background Class Imbalance
這是目標檢測中研究最廣泛,程度最深的一類不平衡。這種平衡並不是由於數據集引起的,而是由於現有目標檢測架構引起的:background anchors 遠遠多於 foreground anchors。似乎自 deep detectors 誕生以來,人們就一直在努力去克服這種不平衡。

作者將解決這類不平衡的方法分為兩類:
(1)hard sampling:可以理解為有偏采樣。包括有 mini-batch undersampling (R-CNN 系列標准配置),OHEM,IoU-balanced sampling,PISA 等,作者在這里將類 RPN 的 objectness 方法也歸結為了這一類。
(2)soft sampling:可以理解為 loss reweighting。最著名的方法莫過於 Focal Loss。

遺憾的是,由於時間的緣故,這篇綜述中並沒有對最新的 anchor-free 檢測器進行分析。但是個人認為 anchor-free 的 detector 存在着類似的不平衡。例如,anchor-free 的檢測器大多基於關鍵點的檢測驅動,如 extreme point,center point,corner point;其中,foreground points 數量比 background points 存在着明顯差異,雖然可能不若 anchor boxes 那般造成如此劇烈的不平衡,但是這仍然導致絕大部分的 anchor-free 檢測器采用了 Focal Loss 或者其變體來訓練網絡。
(喝口水,分割線 ←_←)
我們可以看到,幾乎所有的 sampling heuristics 都基於啟發式,並且具有大量的超參數需要調整。例如,OHEM 需要調 mini-batch size 和 fraction,Focal Loss 需要調 α 與 γ,GHM 有一些必要的前提假設與區間 M 需要調。正如 GHM 文中所說,解決不平衡最佳的策略(分布)是難以定義的。因此,我們重新回顧了 foreground-background imbalance,來探討 sampling heuristics 是否必要。我們認為,不像一般的,由數據引起的不平衡,foreground-background imbalance 在訓練和測試中是具有等同分布的;而使用采樣,可能會改變這種分布,並不一定會在測試中取得更好的結果;但不使用采樣,就會陷入難以訓練的境地。我們發現,從初始化,損失,推理三個方面輔以適當的策略,即可在沒有任何 sampling heuristics 的情況下,總是可以達到更好的檢測精度。我們開源了相關代碼(https://github.com/ChenJoya/sampling-free),希望多多討論,互相啟發 。
5. Conclusions
目標檢測中的不平衡問題是一個古老的問題,自檢測器誕生之初,人們就在與其戰斗。Imbalance Problems in Object Detection: A Review 的作者總結了不平衡的各種類型,並且詳細分析了已經出現的研究,還在 open issue 中給出了懸而未解的問題。十分推薦。
文中的錯誤與紕漏,還請批評指正 ( ^_^ )