論文地址:https://arxiv.org/abs/1904.02701v1
代碼地址:https://github.com/OceanPang/Libra_R-CNN
Abstract
與模型的結構相比,目標檢測領域中模型的訓練所受到的關注度就要少很多,但它對檢測器而言也很重要。在這篇論文中,作者仔細地研究了檢測器的訓練方式,發現檢測性能在訓練過程中經常受到不均衡問題的限制,它一般由3個層級組成:樣本層級、特徵層級和目標層級。爲了減輕這個問題的負面影響,作者提出了 Libra R-CNN,一個簡單、高效框架,在目標檢測中平衡地學習。它整合了3個創新點:IoU-平衡採樣、平衡的特徵金字塔、平衡的L1損失,分別用於減少樣本、特徵和目標層級的不均衡狀況。得益於整體的平衡設計,Libra R-CNN 極大地提升了檢測性能。在 MSCOCO 上,它的 AP 值要比 FPN Faster R-CNN 和 RetinaNet 高和。
1. Introduction
伴隨深度卷積網絡的發展,近些年我們看到目標檢測領域的顯著進步。人們提出了很多檢測框架,如Faster R-CNN、RetinaNet和Cascade R-CNN,極大地推動了SOTA進步。儘管pipeline結構有一些不同,如單階段和雙階段方法,當前的目標檢測框架大多延續一個通用的訓練模式,即在一個標準的多任務目標函數的監督下,進行區域採樣,特徵提取,然後協同識別類別及優化定位。
基於這樣一個模式,目標檢測器的訓練取決於3個關鍵方面:(1)選取的區域樣本是否具有代表性;(2)提取出來的視覺特徵是否被充分利用;(3)目標函數是否是最優的。但是,作者的研究表明,一般的訓練過程在這3個方面都是不均衡的。這種不均衡阻礙了模型的能力被充分利用,束縛了整體的性能,如圖1所示。下面,作者挨個介紹這些issues:
-
樣本層級不均衡:當我們訓練一個目標檢測器時,難例樣本非常有價值,因爲它們對提升檢測性能更有用。但是,隨機採樣機制通常造成選取的樣本大多是容易樣本。目前流行的難例挖掘方法(如OHEM)可以將關注聚焦在難例樣本上。但是,它們對噪音標籤經常過於敏感,消耗大量的內存和算力。Focal Loss 在單階段檢測器中緩解了這個問題,但是在R-CNN中卻效果不大,因爲大多數的容易樣本在雙階段方法中被過濾掉了。因此,我們需要用更優美的方式來解決這個問題。
-
特徵層級不均衡:主幹網絡中的深度high-level特徵包含更豐富的語義信息,而淺層low-level 特徵則包含更多的細節信息。最近,FPN和PANet 通過 lateral 連接進行特徵融合,推動了目標檢測的發展。這些方法啓發我們,low-level特徵和high-level特徵在目標檢測中是互補的。它們融合金字塔特徵的方式決定了檢測的性能。但是,什麼是最佳的融合這些特徵的方法呢?本文的研究表明,融合後的特徵在每個分辨率上都應該具備平衡的信息。但是前文方法裏面的按照順序的方式,使得融合後的特徵更加關注在相鄰的分辨率上。非相鄰層級中的語義信息會在信息流的每一次融合後稀釋掉。
-
目標層級不均衡:一個檢測器需要執行兩個任務,即分類和定位。因此在訓練過程中,我們要包含2個不同的目標。如果它們之間不均衡,其中1個目標可能就會妥協,影響整體的性能。這種情況對訓練過程中的樣本是一樣的。如果它們不均衡,容易樣本產生的小梯度可能就會淹沒難例產生的大梯度,限制進一步模型優化。因此,我們需要重新平衡任務和樣本,實現最優的收斂。
爲了緩解這些問題的負面影響,作者提出了 Libra R-CNN,一個簡單而有效的目標檢測框架,它在3個層級上顯式地強制均衡。這個框架融合了3個創新點:(1) IoU-平衡採樣,根據它們和ground-truth的IoU來挖掘難例。(2)平衡的特徵金字塔,使用一樣的深度融合的、平衡的語義特徵來增強多層級特徵。(3)平衡的L1損失函數,提升重要的梯度,重新平衡分類、粗定位和細定位。
在MS COCO 上,Libra R-CNN 相較於FPN Faster R-CNN 和 RetinaNet ,AP要高2.5和2.0。Libra R-CNN 基於 RestNet-50 和 ResNeXt-101-64x4d 可以達到38.7 AP 和 43.0AP。
作者總結了主要的貢獻:(1)系統地研究了檢測器的訓練過程,顯示三個層級上的不均衡問題限制了檢測的性能。(2)提出了 Libra R-CNN,該框架通過結合3個新的組成:IoU-平衡採樣、平衡特徵金字塔和平衡的L1損失函數,對訓練過程進行再平衡。(3)在MS COCO上測試了該框架,取得了比SOTA檢測器明顯的提升,包括單階段和雙階段檢測器。
2. Related Work
目標檢測的模型結構。 最近,目標檢測常用的方法有雙階段檢測器和單階段檢測器。雙階段檢測器首先由R-CNN提出。後來衍生出的SPP,Fast R-CNN,Faster R-CNN 進一步推動了目標檢測發展。Faster R-CNN 提出了 RPN 來改善檢測器的效率,允許檢測器端到端地訓練。此後,人們又從不同的角度出發,想出了很多方法來增強 Faster R-CNN。例如,FPN 通過金字塔預測來解決尺度差異。Cascade R-CNN 通過經典但有效的級聯結構,將Faster R-CNN 擴展爲一個多階段的檢測器。Mask R-CNN 增加了一個 mask 分支,從而擴展 Faster R-CNN,在多任務學習的幫助下優化檢測的結果。HTC 通過級聯結構進一步提升了 Mask R-CNN 中的 mask 信息流。另一方面,單階段檢測器,如YOLO和SSD也很流行。它們要比雙階段檢測器更簡單、更迅速,但是在準確率上要差一截子,直到出現了 RetinaNet。CornerNet 引入了一個新的思路,可以用一對關鍵點來預測邊框。其他方法則關注在級聯方式、duplicate removal、多層級、對抗學習和更多語境信息上。它們在各個方面都取得了長足的進步。
目標檢測的平衡學習 。緩解目標檢測訓練過程中的不均衡問題,對於最優訓練和充分利用模型能力是非常重要的。
樣本層級不均衡。OHEM 和 focal loss 是目標檢測中樣本級不均衡問題的主要解決方法。常用的OHEM 方法自動地根據置信度來選取難例。但是,這個方法會帶來額外的內存和速度損耗,使得訓練過程臃腫。而且,OHEM 方法也會遇到噪音標籤的問題,無法在所有的情形中適用。在單階段檢測器中,Focal loss 對損失函數進行了改進,解決了前景-背景類別不均衡問題。但是它對雙階段檢測器卻沒有多少幫助。與這些方法相比,本文的方法計算成本要更低,解決方式要更優美。
特徵層級不均衡。利用多層級特徵生成具有判別度的金字塔特徵,對於目標檢測非常重要。FPN 通過一個 top-down 通路,提出了 lateral 連接來豐富淺層的語義信息。之後,PANet 加入了一個 bottom-up 的通路,進一步增強深層中的low-level 信息。Kong等人基於SSD,提出了一個新的高效金字塔,以一種 highly-nonlinear 但是高效的方式來融合特徵。與這些方法不同,本文的方法依賴於融合後的、均衡的語義特徵來增強原始特徵。這樣,金字塔中的每個分辨率,都可以從其它分辨率那裏獲取同樣的信息,平衡了信息流,使得特徵更具判別度。
目標層級不均衡。Kendall等人證明,基於多任務學習的模型的表現非常依賴損失函數中各任務的相互權重。但是之前的方法主要關注在如何增強模型結構的識別能力上。最近,UnitBox 和 IoUNet 引入了一些新的、有關IoU的目標函數,提升定位精度。與這些方法不同,Libra R-CNN 對各任務和樣本進行了再平衡,收斂得更好。
3. Methodology
Libra R-CNN 的整體結構如圖2所示。我們的目的是,通過一個整體均衡的結構設計,緩解檢測器訓練過程中的不均衡問題,儘可能地發掘模型的能力。
3.1 IoU-balanced sampling
首先有一個問題:訓練樣本與ground truth之間的重疊度是否和它的檢測難度相關?爲了回答這個問題,作者在後面進行了一系列的實驗。結果如圖3所示。本文主要考慮難例樣本。作者發現超過的難例的重疊度要大於0.05,而隨機採樣中,只有的訓練樣本高於該閾值。該極端的樣本不均衡使得許多難例被誤認爲是容易樣本。
受此啓發,作者提出了IoU-均衡採樣:一個簡單而高效的難例挖掘方法,成本幾乎爲0。假設我們要從個樣本中採樣出個負樣本。在隨機採樣中,難例樣本被選中概率是:
爲了提升難例被選中的概率,作者根據IoU大小,均勻地劃分個區間。將個負樣本平均地分到各個區間。每個區間的候選樣本數爲。因此,在IoU-均衡採樣下,難例被選中概率是:
其中,是第個區間的候選樣本的個數。在實驗中,作者設。
IoU-均衡採樣的直方圖如圖3中綠色部分所示。可以看到,IoU-均衡採樣可以讓訓練樣本分佈更接近難例的分佈。實驗證明,更高IoU的樣本更容易被挑選出來,其性能與K的取值無關。
此外,這個方法對 hard positive樣本同樣適用。然而,大多數情況下,沒有足夠的候選樣本,對正樣本進行擴充,因此,本文選擇了一個替代的方法來達到平衡採樣的目的,即對每個ground truth採樣相同數量的正樣本。
3.2 平衡特徵金字塔
和之前通過lateral 連接來融合多層級特徵的方法不同,本文的核心思想是通過同樣的深度融合的、平衡的語義特徵來增強多層級特徵。流程如圖4所示。它由4個步驟構成,再縮放、融合、優化和增強。
獲取平衡的語義特徵。分辨率層級的特徵用表示。多層級特徵的個數用表示。最低和最高的層級索引分別用和表示。圖4中,有着最高的分辨率。爲了同時融合多層級特徵,並保留它們的語義層級,我們首先將多層級特徵進行縮放至一箇中間的大小,即的大小,分別通過插值和max pool操作。一旦有了縮放後的特徵,我們就可以通過簡單的平均操作來得到平衡的語義特徵:
得到的特徵,進行rescale然後通過反向操作增強原始每層的特徵,此過程不包含任何參數,證明了信息傳遞的高效性。
優化平衡的語義特徵。平衡的語義特徵可以進一步優化,使之更具判別度。本文發現卷積和non-local 模型的增強效果都很好,但是non-local模型更加穩健。因此,作者在本文中使用了embedded Gaussian non-local 注意力機制。優化這一步有助於豐富特徵信息,進而改善結果。
有了這個方法,就可以同時融合low-level特徵和high-level特徵了。輸出延續了FPN中同樣的方式,用於後續的目標檢測。值得注意的是,該平衡的特徵金字塔可以作爲FPN和PAFPN的補充,不會產生任何衝突。
3.3 Balanced L1 Loss
自從Fast R-CNN,在多任務損失函數的監督下,我們同時解決分類和定位問題,定義如下:
和 是目標函數,分別對應着識別和定位。中的預測和目標分別用和表示。是類別對應的迴歸結果。是迴歸目標。用於調節多任務學習中的損失權重。我們將損失大於或等於1.0的樣本稱爲outliers。其它的樣本稱爲inliers。
平衡各項任務的一個自然的方法就是調節各損失的權重。但是,由於迴歸目標沒有邊界,直接升高定位損失的權重會使模型對outliers更加敏感。這些outliers,可以視作爲難例,會產生特別大的梯度,對訓練過程不利。Inliers 可以視作容易樣本,與outliers相比,對總體梯度的貢獻較少。更具體點說,和outliers相比,inliers只貢獻在每個樣本上只貢獻了的梯度。因此,作者提出了平衡的L1損失,記做。
Balanced L1損失由傳統的smooth L1損失而來,Smooth L1損失通過設置一個拐點來分開 inliers 與 outliers,並對outliers通過一個max(p,1.0)進行梯度截斷,如圖5-a虛線所示。Balanced L1 損失的核心思想是,提升影響較大的迴歸梯度,(像inliers的梯度,即準確樣本的梯度),進而平衡所包含的樣本及任務。從而可以在分類、粗定位,及細定位中實現訓練的平衡,基於Balanced L1 損失的定位損失如下,
對應的梯度如下:
基於上述公式,作者設計了一個改進的梯度式子:
圖5-a 展示了該balanced L1損失在控制因子的控制下,inliers梯度上升。小的使得inliers梯度增長的更快,而outliers的梯度並不受影響。此外,通過設置參數來調整迴歸誤差的上界,有助於目標函數更好地平衡所包含的任務。通過調整這兩個參數,可以得到更加平衡的訓練。用於確保在等式8中的式子中,有相同的值。
將上面的梯度式子整合起來,我們可以得到balanced L1損失函數:
其中參數受下式約束:
在實驗中,默認參數的值設爲:。
Experiments
在COCO test-dev數據集上與目前state-of-the-art的目標檢測的方法對比,能比Faster R-CNN、RetinaNet、Mask R-CNN要高2+的AP。
三種解決方案的各種組合情況的對比實驗:
值得注意的是,作者對IoU-balanced samping做實驗時對K的取值做了實驗證明該方法對K的取值並不敏感,即對IoU分多少個區間並不敏感。
這是IoU-balanced sampling的候選框的可視化效果:
總結
本論文邏輯清晰,緊緊抓住三個層次去做改進,三個問題對應三個解決方案,結構清晰一目瞭然,實驗充分,相比兩個單階段和兩階段檢測器的兩個代表Faster R-CNN和RetinaNet分別高了2+的AP,圖畫得也不錯,我覺得是篇好論文,而且應該是作者在比賽中實際運用到的才寫出了這篇paper,以後目標檢測的比賽我覺得都可以參考這篇去做改進。