CVPR2019 | Libra R-CNN 論文解讀


作者 | 文永亮

學校 | 哈爾濱工業大學(深圳)

研究方向 | 目標檢測、GAN

推薦理由

​ 這是一篇發表於CVPR2019的paper,是浙江大學和香港中文大學的工作,這篇文章十分有趣,網友戲稱:“無痛漲點,實現簡單,良心paper。”,在我看來確實是這樣的,沒有太大的改造結構,不需增加計算成本的條件下,居然能漲兩個點mAP。除了本文解讀的Libra R-CNN(天秤座 RCNN)[1],我還記得陳愷他們港中文的實驗室今年還中了一篇CVPR2019《Region Proposal by Guided Anchoring》[2],這篇也是不錯的,看題目就知道是指導anchor的形狀漲分的了。

​ 這兩篇改進的源碼都會在github上放出,作者表示還在完善中,地址是:https://github.com/open-mmlab/mmdetection

三個不平衡

縱觀目前主流的目標檢測算法,無論SSD、Faster R-CNN、Retinanet這些的detector的設計其實都是三個步驟:

  • 選擇候選區域
  • 提取特征
  • 在muti-task loss下收斂

往往存在着三種層次的不平衡:

  • sample level
  • feature level
  • objective level

這就對應了三個問題:

  • 采樣的候選區域是否具有代表性?
  • 提取出的不同level的特征是怎么才能真正地充分利用?
  • 目前設計的損失函數能不能引導目標檢測器更好地收斂?

​ 其實如果不對detector的結構做功夫的話,針對這些imbalance改進的其實就是為了把detector的真正功效給展現出來,就是如果把一個目標檢測器train好的問題。

對應的三個改進

  • IoU-balanced Sampling

​ 作者認為sample level的不平衡是因為隨機采樣造成的,Ross Girshick后面提出了OHEM(online hard example mining,在線困難樣本挖掘)是一個hard negative mning的一種好方法,但是這種方法對噪音數據會比較敏感。隨機采樣造成的不平衡可以看下圖:

​ 作者發現了如果是隨機采樣的話,隨機采樣到的樣本超過70%都是在IoU在0到0.05之間的,有人會問不是隨機嗎?為什么大部分樣本都落在了IOU較小的部分了呢?因為樣本的分布在IoU上並不是均勻分布的,生成候選框時隨機采樣會造成背景框遠遠大於框中GT的框,一張圖這么大,是目標物體的區域只占很小一部分,背景占了絕大多數的位置,所以大部分樣本都擠在了IoU在0到0.05的區間了,作者覺得這里就是不科學的地方,統計得到的事實是60%的hard negative都落在IoU大於0.05的地方,但是隨機采樣只提供了30%。所以作者提出了IoU-balanced Sampling

​ 隨機采樣就是比如你要選N個hard negative,有M個候選框,選中的概率就是:

\[p = \frac{N}{M} \]

​ 如果一共還是要采樣N個,通過IoU的值划分為K個區間,每個區間中的候選采樣數為\(M_k\),則IoU-balanced sampling的采樣公式即為:

\[p_{k}=\frac{N}{K} * \frac{1}{M_{k}}, \quad k \in[0, K) \]

​ 作者通過在IoU上均勻采樣, 把hard negative在IoU上均勻分布,在COCO數據集上達到的效果比OHEM的要好,並且這樣簡單很多。

  • Balanced Feature Pyramid

​ feature level的不平衡表現在low/high level特征的利用上,如何利用不同分辨率的特征,分為了四步:rescalingintegratingrefiningstrengthening

  1. rescaling & integrating :

    ​ 假設\(C_l\)表示第\(l\)層特征,越高層分辨率越低,若有\({}{C_2, C_3, C_4, C_5}\)的多層特征,\(C_2\)分辨率最高,我們知道低層特診分辨率高往往學習到的是細節特征,高層特征分辨率低學習到語義特征,把四層特征resize到中間層次的\(C_4\)的size,然后后面再做簡單的相加取平均操作:

\[C=\frac{1}{L} \sum_{l=l_{\min }}^{l_{\max }} C_{l} \]

​ 就是這樣簡單的操作並沒有引入什么計算就可以實現,最終在AP上也得到了驗證是有效的。

  1. refining & strengthening

    ​ rescaling后取平均提取到的的特征還可以進一步地refine成更discriminative,作者這里用到了non-local模塊,paper中使用了Gaussian non-local attention [4]增強integrate后的特征。

​ 就像Figure 4畫的一樣,這樣提取的特征其實與FPN可以一同使用,是作為feature pyramid的補充,作為一種增強手段。

  • Balanced L1 Loss

Fast R-CNN [5]中是通過multi-task loss解決Classification(分類)和Localization(定位)的問題的,定義如下:

\[L_{p, u, t^{u}, v}=L_{c l s}(p, u)+\lambda[u \geq 1] L_{l o c}\left(t^{u}, v\right) \]

\(L_{cls}\)\(L_{loc}\) 分別對應着分類和定位的損失函數, \(p\) , \(u\) 分別是\(L_{cls}\) 的預測和目標,\(t^u\)是對應\(u\)類的回歸結果。 \(v\)是回歸目標。 \(\lambda\)用於在多任務學習下調整損失權重。

​ 之所以會提出Balanced L1 loss,是因為這個損失函數是兩個loss的相加,如果分類做得很好地話一樣會得到很高的分數,而導致忽略了回歸的重要性,一個自然的想法就是調整\(\lambda\) 的值。我們把樣本損失大於等於1.0的叫做outliers,小於的叫做inliers。由於回歸目標是沒有邊界限制的,直接增加回歸損失的權重將會使模型對outliers更加敏感。對於outliers會被看作是困難樣本(hard example),這些困難樣本會產生巨大的梯度不利於訓練得過程,而inliers被看做是簡單樣本(easy example)只會產生相比outliers大概0.3倍的梯度。

​ 首先我們看Smooth L1 Loss:

\[L1_{smooth} = \left\{\begin{array}{ll}0.5x^2 & {\text{|x|<1} (inliers)}\\|x|-0.5 & {\text{otherwise(outliers)}}\end{array}\right. \]

\[\frac{\partial L1_{smooth}}{\partial x} = \left\{\begin{array}{lll} x & \text{|x|<1}\\ -1 & \text{x<-1} \\ 1 & \text{x>1} \end{array}\right. \]

​ 所以作者從常見的Smooth L1 Loss中推導出了Balanced L1 Loss:

\[L_{l o c}=\sum_{i \in\{x, y, w, h\}} L_{b}\left(t_{i}^{u}-v_{i}\right) \]

​ 它的梯度計算遵從下面的准則:

\[\frac{\partial L_{l o c}}{\partial w} \propto \frac{\partial L_{b}}{\partial t_{i}^{u}} \propto \frac{\partial L_{b}}{\partial x} \]

​ 作者從需求出發,想要得到一個梯度當樣本在\(|x|<1\)附近產生稍微大點的梯度,作者設計了下面這個函數,從Figure 5可以看出\(\alpha\ln (b|x|+1)\)大於x。

\[\frac{\partial L_{b}}{\partial x}=\left\{\begin{array}{ll}{\alpha \ln (b|x|+1)} & {\text { if }|x|<1} \\ {\gamma} & {\text { otherwise }}\end{array}\right. \]

​ 根據梯度反求出\(L_{b}(x)\) 表達式:

\[L_{b}(x)=\left\{\begin{array}{ll}{\frac{\alpha}{b}(b|x|+1) \ln (b|x|+1)-\alpha|x|} & {\text { if }|x|<1} \\ {\gamma|x|+C} & {\text { otherwise }}\end{array}\right. \]

​ 還有很重要的一點就是為了函數的連續性,需要滿足x=1時\(L_{b}(1)=\gamma\):

\[\alpha \ln (b+1)=\gamma \]

​ 其實意思就是\(b=e^{\frac{\gamma}{\alpha}}\).

​ 這個函數不得不說非常妙,成功掰彎了梯度,我也不知道他怎么想出來的。

實驗結果

​ 在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的候選框的可視化效果:

總結

​ paper邏輯清晰,緊緊抓住三個層次去做改進,三個問題對應三個解決方案,結構清晰一目了然,實驗充分,相比兩個單階段和兩階段檢測器的兩個代表Faster R-CNN和RetinaNet分別高了2+的AP,圖畫得也不錯,我覺得是篇好論文,而且應該是作者在比賽中實際運用到的才寫出了這篇paper,以后目標檢測的比賽我覺得都可以參考這篇去做改進。

參考文獻

[1]. Pang J, Chen K, Shi J, et al. Libra R-CNN: Towards Balanced Learning for Object Detection[J]. arXiv preprint arXiv:1904.02701, 2019.

[2]. Wang J, Chen K, Yang S, et al. Region proposal by guided anchoring[J]. arXiv preprint arXiv:1901.03278, 2019.

[3]. Shrivastava A, Gupta A, Girshick R. Training region-based object detectors with online hard example mining[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 761-769.

[4]. Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 7794-7803.

[5]. Ross Girshick. Fast r-cnn. In IEEE Conference on Computer Vision and Pattern Recognition, 2015.


免責聲明!

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



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