1. 程式人生 > >cascade R-CNN演算法詳解

cascade R-CNN演算法詳解

cascade R-CNN演算法詳解

演算法背景

論文全稱:Cascade R-CNN: Delving into High Quality Object Detection
論文連結:https://arxiv.org/abs/1712.00726
論文時間:2017.12.3

本文是在R-CNN演算法上的拓展,針對目標檢測問題,我們利用IoU(intersection over union)來定於正樣本與負樣本,IoU的閾值的定義是非常重要的。IoU閾值太低,eg.0.5,會產生很多帶有噪聲的樣本。

問題

但隨著閾值的升高也會導致檢測表現下降:

  • IoU閾值太高,會導致正樣本的數量太少,從而導致過擬合(overfit)。正樣本數量會呈指數下降。
  • 訓練與推斷使用不一樣的閾值會導致不匹配現象。

解決方案

本文提出了一個多階段的目標檢測模型。核心就是利用不斷提高的閾值,在保證樣本數不減少的情況下訓練出高質量的檢測器,通過級聯檢測網路來達到由於預測結果的目的。優化的假設的重取樣確保所有的檢測器都有一個相當尺寸的正樣本集,從而減少過擬合問題。

演算法介紹

目標檢測問題可以被分為分類與定位兩個複雜問題,定位問題由於近似誤分類為正樣本( “close” false positives)問題而變得難以解決。這些邊界框“close but not correct”。

現階段的提取候選區域的目標檢測演算法都是兩階段的R-CNN,這樣就把檢測演算法的框架分為分類與定位兩個分支。
閾值u = 0.5時,正樣本有許多噪聲,檢測結果不準確。因此,我們在 IoU ≥ 0.5 上做實驗。
quality of an hypothesis :IoU with the ground truth
quality of the detector :the IoU threshold u used to train it
在這裡插入圖片描述

  • 根據圖c可以看出,每一個邊界框迴歸在輸入的IoU值在用於訓練檢測器的IoU閾值的附近表現的最好,在超過訓練的IoU閾值之後就會導致過擬合問題。
  • 根據圖d可以看出,對於低IoU輸入示例,u = 0.5的檢測器優於u =
    0.6的檢測器,在較高的IoU水平下表現不佳,在單個IoU級別優化的檢測器在其他級別上不一定是最佳的。

這些觀察結果表明,更高質量的檢測需要檢測器與其處理的假設之間更接近的質量匹配。 一般而言,如果提供高質量的候選區,探測器只能具有高質量。

演算法結構

在faster-RCNN的兩階段的結構上進行了拓展,
第一階段是進行候選區域提取的子網路(H0),應用於整張圖片。
第二個階段進行RoI檢測的子網路(H1),最後會有一個分類分數(C),邊界框(B)。

在這裡插入圖片描述
(d)cascade-R-CNN中的檢測模型是基於前面一個階段的輸出進行訓練,而不是像(b)一樣3個檢測模型都是基於最初始的資料進行訓練。對輸出bbox的標籤界定採取不同的IOU閾值,因為當IOU較高時,雖然預測得到bbox很準確,但是也會丟失一些bbox。
(d)cascade-R-CNN中是迭代式的bbox迴歸,前一個檢測模型迴歸得到的bbox座標初始化下一個檢測模型的bbox,然後繼續迴歸

邊界框迴歸

與fast-RCNN相同,使用L1損失函式,在此我們採用一個迴歸方程f(x, b):
在這裡插入圖片描述
對於迴歸方程,我們採用迭代的方法:
在這裡插入圖片描述

  1. 開始採用閾值為u=0.5的閾值,然後將輸出結果作為下一次的輸入,但當u>0.85時定位準確度會下降。
  2. 每次迭代後,邊界框的分佈都會發生顯著變化。雖然迴歸量對於初始分佈是最佳的,但在此之後它可能是非常不理想的。每一層輸入的BBox都要優化,輸入上一次生成的BBox。
    在這裡插入圖片描述
    第一行橫縱軸分別是迴歸目標中的box的x方向和y方向偏移量;第二行橫縱軸分別是迴歸目標中的box的寬、高偏差量。從第一階段到第三階段,proposal已經發生了很大變化,很多噪聲經過迴歸也提高了IoU值(圖中的紅點),這些紅點其實屬於outliers,如果不提高閾值來去掉它們,就會引入大量噪聲干擾,對結果很不利。所以需要重新選擇IoU閾值,是一個resample的過程。

分類

分類損失函式使用交叉熵損失函式。
在這裡插入圖片描述

檢測質量

推測標籤:
在這裡插入圖片描述

在這裡插入圖片描述
1st stage大於0.5的,到2nd stage大於0.6的,到3rd stage大於0.7的,在這一個過程中proposal的樣本數量確實沒有特別大的改變,甚至還有稍許提升。

  • 迭代BBOX是用於改進邊界框的後處理過程,而級聯迴歸是一種重取樣過程,它改變了不同階段要處理的假設的分佈。
  • 由於它既用於訓練又用於推理,因此訓練和推理分佈之間沒有差異。
  • cascaded重取樣後的每個檢測器,都對重取樣後的樣本是最優的,沒有mismatch問題。

級聯損失函式

在這裡插入圖片描述
在這裡插入圖片描述
g是x^t對應的真值,
λ=1是折中係數,
[·]指示函式,
yt is the label of xt given ut by (5).

實驗

總之,Cascade R-CNN有四個階段,一個RPN和三個檢測U={0.5,0.6,0.7},重取樣是通過簡單地使用前一階段的迴歸輸出來實現的,除標準水平影象翻轉外,不使用資料增強。推理是在單一的影象尺度上進行的,沒有其他操作。