1. 程式人生 > >Cascade R-CNN的一些記錄

Cascade R-CNN的一些記錄

Cascade R-CNN的一些記錄

《Cascade R-CNN: Delving into High Quality Object Detection》CVPR2018的一篇文章

論文連結:https://arxiv.org/abs/1712.00726 
程式碼連結:https://github.com/zhaoweicai/cascade-rcnn

參考連結:https://blog.csdn.net/qq_21949357/article/details/80046867

本文主要針對的是目標檢測問題中的IoU閾值選取問題,眾所周知,閾值選取越大就越容易得到高質量的樣本,但是一味選取高的閾值會引發兩個問題:

  • 樣本減少引發的過擬合
  • 在train和inference使用不一樣的閾值很容易導致mismatch。(只有輸入的region proposal自身的IOU值和訓練器訓練用的設定IOU閾值較為接近的時候,訓練器輸出的IOU值才會高即效能才好)

為了解決上述兩個問題就提出了一種基於Faster-RCNN的muti-stage的architecture,核心就是利用不斷提高的閾值,在保證正例樣本數不減少的情況下訓練出高質量的檢測器

Abstract

  1. 在目標檢測中需要一個IOU值來區分樣本的正負樣例,檢測器使用較低的IOU值訓練時會產生噪聲監測,但是使用的IOU閾值變大時會造成檢測效果下降,這主要由兩個原因造成,IOU
    值變大時正例樣本指數級消失導致過擬合在train和inference使用不一樣的閾值很容易導致mismatch
  2. 級聯RCNN包括一系列IOU逐漸增大的檢測器,並且是一步一步訓練,上一個檢測器的輸出作為下一個檢測器的輸入,因為對一個檢測器來說輸出的IOU值會比輸入的IOU更高。

1 Introduction

  1. 目標檢測兩個主要問題:識別分類問題,從背景中識別前景物體並正確分類;定位問題,給不同的目標準確的邊界框。
  2. 級聯R-CNN的來源:一個檢測器只能在一個質量水平(quality level)上表現的很好,這是從代價敏感學習中得出的:ROC曲線不同點的優化需要不同的損失函式,不同的是論文中是優化IOU閾值而不是假陽率。
  3. 從圖中看出,如果提供高質量(高IOU)的輸入則檢測器也有較好的效果,但是隨著輸入資料的IOU的持續升高,檢測器效果會下降(因為過擬合),
  4. 級聯R-CNN可以用任意的兩步階段結構的R-CNN建立。

2 Related Work

RetinaNet解決密集物體檢測,前景和背景極端不平衡問題,並取得了比兩步的目標檢測更好的效果。

3、Object Detection

基於Faster-RCNN,第一步proposal subnetwork(RPN網路)生成候選框H0,第二步是ROI池化層H1,將不同大小候選框在特徵圖上的對映patch,把對映的patch取樣成固定大小的特徵,和SPP類似,但只是用一個尺度(一個patch不論大小就劃分為4個部分)進行劃分。分類器是C,邊界框是B

3.1 Bounding box regression

邊界框b=(bx,by,bw,bh),邊界框迴歸f(x,b)的作用是從候選邊界框中選出目標邊界框,邊界框的損失函式在faster-RCNN中是L1損失函式,並通常用均值和方差正則化處理。在FatserRCNN中一個單獨的邊界框迴歸器f不能解決精確定位的問題,所以使用Bbox,但是Bbox中IOU的值固定(單一閾值即使用的是完全相同的級聯結構),所以IOU的值不一定一直是最優的,並且邊界框的分佈隨每次迭代變化很大。

(C0的結果是anchor中有目標或者沒有目標)

3.2 Classification

分類器的函式是h(x),h(x)是後驗概率的M+1維估計,hk(x) = p(y = k|x),通過最小化交叉熵損失來學習,

3.3 Detection Quality

如果IOU的值大於給定閾值,則認為這個patch是這個類中的一個。

當給定的IOU閾值大時,正例中包含很少的背景,但是正例數量會很少;當小時,容易產生接近但不正確的判斷(假陽率高)。解決方法:傳統最容易想到的是使用分類器的整合,如圖c,Iterative Loss實際上沒有級聯結構,從c圖可以看出來,它只是使用了不同的閾值來進行分類,然後融合他們的結果進行分類推理,並沒有同時進行BBox reg,因此沒有解決 不同數量的正例數應對應不同的損失 的問題。

 

4、Cascade R-CNN

與Bbox不同的是,級聯RCnn通過重取樣改變了不同階段的輸入假設分佈,並且通過重取樣保證了每個階段有足夠固定數量的正例樣本數。這就實現了沒有過擬合和更深層的訓練階段可以有更高的IOU閾值.

  • cascaded regression通過調整閾值的方式重取樣,不斷改變候選框region proposal的分佈,而且cascaded重取樣後的每個檢測器,都對重取樣後的樣本proposals是最優的,沒有mismatch問題。
  • cascaded在train和inference時都會使用,因此並沒有偏差問題。

    其實像我這樣的入門者有很多不懂之處,歡迎指正。