目標定位與檢測系列(11):Cascade R-CNN

論文原文:Cascade R-CNN

摘要

在目標檢測中,使用IOU來定義正負樣本。用比較低的IOU閾值(如0.5)訓練得到的模型在檢測時往往包含噪聲。相反地,如果增加IOU閾值,檢測性能會下降。產生這種現象的原因有兩個:(1)訓練過程中正樣本的迅速減少導致的過擬合;(2)訓練和推理階段IOU閾值的不匹配。本文提出一個多階段檢測模型Cascade R-CNN來解決上述問題。這個模型由一系列用遞增的IOU閾值訓練的模型組成,因此對於困難的假正樣本有更好的辨別能力。檢測模型逐級訓練,前一級的模型可以爲下一級質量更好的模型提供一個較好的分佈。這種漸進的重採樣方式保證了所有的模型都有大致相同的正樣本比例,緩解了過擬合問題。在推理階段採用相同的處理過程,因此在訓練和推理過程中模型假設和每一階段的模型質量都更加匹配。在COCO數據集上,Cascade R-CNN超過了當前所有的單模型。實驗結果也表明,Cascade R-CNNk可以廣泛用於目標檢測框架,並相對於基礎模型都有穩定的提升。源碼將開源在https://github.com/zhaoweicai/cascade-rcnn.

動機

IOU閾值的選取對訓練和推理都有很重要的影響。對比下面的兩個圖,當IOU閾值取值較低時,如0.5,在訓練階段,會產生大量包含噪聲的正樣本,這些正樣本與ground truth的IOU比較低,不利於模型的訓練,而當提高IOU閾值時,如0.7,雖然可以規避大量包含噪聲的正樣本,但是又帶來另外一個問題:正樣本大大減少,負樣本(即北背景)在訓練集中佔主導作用,很容易導致模型過擬合(模型將所有的樣本都預測爲負樣本)。

在這裏插入圖片描述

還有一個問題就是,在推理階段,模型對於與IOU閾值相近的ROI預測結果較好,而對於其他的ROI預測效果一般。也就是推理階段與訓練階段IOU的不匹配。論文中給出了更直觀的實驗對比。

在這裏插入圖片描述

從上圖中的對比可以得出2點實驗結論:

  • 所有的候選框在輸入模型後,IOU均有不同程度的提升,但模型對於與IOU閾值相近的候選框的提升最明顯。例如上圖(c)中,IOU閾值爲0.5的模型,在輸入閾值在0.5-0.6區間的候選框的提升效果最好,IOU閾值爲0.6的模型對於輸入閾值在0.6-0.75區間的提升最好,IOU閾值爲0.7的模型在候選框閾值高於0.75時提升效果最好
  • IOU閾值並不是越高越好,如上圖(d)中,IOU閾值從0.5提高到0.6後,變化不大,而進一步提高到0.7的時候,模型的AP值有明顯的下降。

因此,自然而然地就會想到,如果結合不用IOU閾值水平的模型的結果,檢測性能會不會提高呢?這也正是Cascade R-CNN的思想所在。更詳細地說,Cascade R-CNN級聯多個檢測模型,每個模型的IOU閾值逐步提高,例如,第階段模型閾值設爲0.5,第二階段設爲0.6,第三階段設爲0.7。這樣,一個IOU較低的候選框,如0.55,在輸入到第一階段模型後,經一次邊界框迴歸,輸出提高一點,如0.65,再到二階段模型,第二次邊界框迴歸,輸出的IOU又提高一點,如0.75,再經過最後一個階段,候選框的IOU就可以迴歸到一個較高的水平了。

主要工作

Cascade R-CNN結構

在這裏插入圖片描述
論文基於前面的分析,提出了Cascade R-CNN檢測框架,如上圖。其中,I表示輸入的圖片,conv表示卷積層主幹網絡,pool表示特徵提取最後的部分(如ROI池化),H表示網絡的頭部,B表示邊界框預測、C表示類別預測。

由於採用單一的網絡無法在所有的IOU上都得到有效的提升(低IOU閾值對IOU較低的提升明顯,對IOU較高的提升一般,高IOU閾值同理),因此,Cascade R-CNN提出了級聯的檢測結構,每一級的IOU閾值逐步提高,這樣,在所有不同IOU的候選框在經過第一級的特徵提取、目標類別預測和邊界框迴歸後,其中一部分的候選框(IOU較低的那部分)得到了顯著的提高。當經第一次迴歸後的所有邊界框進入第二階段後,原來IOU很低的候選框已經基本沒有了,這時候和第二個IOU閾值差不多的候選框在經過本輪的邊界框迴歸,IOU閾值也得到了有效的提升。最後在進入到最後一個分類和邊界框迴歸前,幾乎所有的候選框IOU都處於一個較高的水平了,這時候採用一個較高的IOU閾值,大部分的候選框IOU又得到了改善。從整個流程來看,不論在訓練階段還是推理階段,每一階段採用的IOU閾值相當於對所有的候選框進行了重採樣,候選框的IOU分佈在每一級的檢測網絡都在向好的方向發展。也正是這種訓練和推理過程中的重採樣,很好的地解決了以下兩個問題:

  • 檢測網絡中的正樣本數量和質量都得到了保證,不會因爲正樣本質量太差(IOU閾值較低)時降低模型訓練的質量和正樣本(數量太少)時模型的過擬合。
  • 推理階段模型和訓練過程一致(多級檢測模型),因此對所有IOU水平的候選框都可以進行有效的改善,不會因爲傳統檢測網絡中採用單一閾值造成的訓練和推理過程中的不匹配問題。

模型實現細節

論文中也將了很多Cascade R-CNN在實現上的細節,如:

  • 網絡在所有階段都採用相同的檢測結構,除了主幹網絡之外,Cascade R-CNN包含4個階段的網絡,其中1個RPN網絡,3個不同IOU閾值(分別爲0.5,0.6,07)的檢測網絡,每個檢測網絡的輸出是下一個檢測網絡的輸入(重採樣機制)
  • 樣本增廣策略中只採用了水平翻轉,推理階段採用採用固定的圖片大小(未採用多尺度和擴充等方式提高精度)
  • 採用了3種主流的主幹網絡進行實驗對比,分別爲基於VGG的Faster R-CNN、基於ResNet的R-FCN和FPN,且大部分採用默認參數(論文中有更詳細的介紹)。

實驗對比

在這裏插入圖片描述
論文中主要做了兩類對比:

  • 橫向對比,Cascade R-CNN和目前性能排名靠前的單模型結果對比,即上圖中的Table 5,從中可以看出,基於Resnet-101的Cascade R-CNN在COCO檢測任務的各個指標上都明顯高於主流的單模型(從中可以看出,基於Focal Loss的一階段模型Retinanet也表現不俗)
  • 縱向對比,論文基於幾種主流的主幹網絡和檢測框架,對比了加入Cascade機制前後的性能,即Table 6,從中可以看出,Cascade機制加入後,雖然在訓練時間、推理時間和參數數量上都有一些犧牲,但終歸瑕不掩瑜,在COCO檢測任務的各個指標上都帶來了大幅度提升。

總結

Cascade R-CNN的出發點是爲了解決採用單模型時單一IOU閾值帶來的各種問題,通過簡單地採用多級IOU閾值進行檢測,就可以很好地解決單一IOU閾值的通病。雖然最後在模型的訓練推理時間和參數量上有一定的犧牲,但在檢測精度上卻大幅度提升。因此在對檢測時間要求不太苛刻的條件下,Cascade機制顯然是個不錯的選擇。另外,我覺得Cascade R-CNN的意義不僅僅在於在公共數據集上帶了多大的提升,更重要的是,爲目標檢測(甚至推廣到實例分割任務上)提供了一種新思路,畢竟Cascade R-CNN的的多級網絡機制可以很好地推廣到其他任務上。

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