【Libra R-CNN: Towards Balanced Learning for Object Detection】--- 對象檢測閱讀筆記

論文名稱:Libra R-CNN: Towards Balanced Learning for Object Detection
論文作者:Jiangmiao Pang, Kai Chen, Jianping Shi, Huajun Feng, Wanli Ouyang, Dahua Lin
發行時間:Submitted on 4 Apr 2019
論文地址:https://arxiv.org/abs/1904.02701v1#
代碼開源:https://github.com/open-mmlab/mmdetection


一. 前言

在檢測過程中,作者對在CNN中連續卷積不同尺寸的feature map劃分成三個層次:sample level, feature level, objective level. 並提出 Libra R-CNN 來對object detection也就是上面三個level進行平衡。其中, Libra R-CNN 集稱了三個部件:

  1. IoU-balanced sampling
    • 用於減少樣本數(sample)
  2. balanced feature pyramid
    • 用於減少特徵數(feature)
  3. balanced L1 loss
    • 用於減少目標水平的不平衡(objective level)

Libra R-CNN在沒有bells和whistles的情況下,在MSCOCO上分別比FPN和RetinaNet在AP(平均精度)上提高了2.5和2.0 points

二. Libra R-CNN Model

作者將本文的檢測模型分爲了三個階段:

  • sample level
    • 用於得到image中描繪出object的候選框框
  • feature level
    • 將不同尺寸的特徵金字塔進行特徵融合
  • objective level
    • 用於將image中的對象分類和定位

圖例:

對於Libra R-CNN,作者一共構建了三個組件:

  1. IoU-balanced sampling
  2. balanced feature pyramid
  3. balanced L1 loss

1. Balanced IoU sampling

對於一般的random sampling(從M個候選框中選出N個Negative樣本),對每個樣本的選擇概率是p=NMp= \frac{N}{M}

而通過實驗發現hard和sample的分佈不均衡,而作者提出 IoU-balanced sampling 的方法來提高hard negatives的選擇概率,即通過將採樣間隔均分成K個批次,然後每次從這些批次中均勻的選擇樣本(從M個候選框中選出N個Negative樣本,並分成K個批次)pk=NK1Mk,k[0,K),p_k=\frac{N}{K}*\frac{1}{M_k},k\in [0,K),
其中,

  • MkM_k是在對應的分成的K個批次的一次中的抽取的候選框的數量
  • KK是均分成的批次,本實驗默認KK33

2. Balanced feature pyramid

作者提出,首先由FPN對image提取處4種不同尺度的feature {C1,C2,C3,C4}\left \{C_1,C_2,C_3,C_4\right \}, 然後對這四種size的feature進行rescale操作到同一尺度的feature:上採樣和下采樣(線性插值和池化操作),最後再對之進行一個Refine操作,得到不同尺度的feature {P1,P2,P3,P4}\left \{P_1,P_2,P_3,P_4\right \},過程如下圖所示:

feature pyramid

a. 詳細過程

  1. 輸入image,由FPN得到不同尺度的feature {C1,C2,C3,C4}\left \{C_1,C_2,C_3,C_4\right \}
  2. 執行Integrate操作得到平均了的一個feature CC
  3. 執行Refine操作得到和之前各層的相同尺寸4個的feature{P2,P3,P4,P5}\left \{P_2,P_3,P_4,P_5\right \}用於後面的對象檢測

b. Integrate過程解釋

  1. 通過上採樣(插值)和下采樣(Pool)將上述四個不同size的feature轉換到同一尺度
  2. 對這四個同一size的feature執行取平均的操作得到平均的featureC=1Ll=lminlmaxClC=\frac{1}{L} \sum^{l_{max}}_{l=l_{min}} C_l

c. Refine過程解釋

將AVG的feature經過 non-local network 或者 conv 再次得到和之前各層的相同尺寸4個的feature{P2,P3,P4,P5}\left \{P_2,P_3,P_4,P_5\right \}

Non-local network 與 Conv操作相比,差別不大,但是 Non-local network 要更加穩定

3. Balanced L1 loss

首先定義兩名詞:

  • outliers:sample(採樣)到的gradient(梯度)大於等於1的樣本,可視爲 hard sample,不易於訓練
  • inliers:sample(採樣)到的gradient(梯度)小於1的樣本,可視爲 easy sample,對訓練較友好

作者通過實驗發現,在train過程中,較少的outliers卻貢獻了70%70\%的梯度,而較多的inliers卻只貢獻了30%30\%的梯度,需要採取某種措施來讓loss的計算更加均衡:

重新定義L1 loss梯度,記爲LbL_b
Lbx={αln(bx+1))ifx<1γotherwise\frac{\partial L_b}{\partial x}=\left\{\begin{matrix} \alpha ln(b \left | x \right | + 1)) & if \left | x \right | < 1 & \\ \gamma & otherwise & \end{matrix}\right.

即對 x<1\left | x \right | < 1 的梯度進行了替換,通過

  • α\alpha 來使得 inliers 獲得更多的梯度,本實驗設置α\alpha爲0.5
  • γ\gamma 通過整體放大來來調整迴歸誤差的上界,使得目標函數更好地平衡參與的任務, 本實驗設置γ\gamma爲1.5
  • bb 則用於平衡 α\alphaγ\gamma ,它們需要滿足該式子:aln(b+1)=γaln(b+1) = \gamma

對上述梯度進行積分,得到 L1 loss function:
Lb(x){αb(bx)ln(bx)+1ifx<1γx+CotherwiseL_b(x) \left\{\begin{matrix} \frac{\alpha}{b}(b \left | x \right |)ln(b \left | x \right |)+1 & if \left | x \right | < 1& \\ \gamma \left | x \right | + C & otherwise & \end{matrix}\right.

三. 實驗結果

experience

可見提升效果還是挺大的

四. 總結

作者提出 balanced 概念,並將這個概念分別應用到IoU檢測候選框、特徵融合、損失計算這三個方面上,效果顯著提升,值得一讀

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