1. 程式人生 > >[深度學習]Object detection物體檢測之Faster R-CNN(5)

[深度學習]Object detection物體檢測之Faster R-CNN(5)

目錄

1.綜述

2.Region Proposal Networks (RPN)

Anchor(錨)

loss function

Training RPNs

3.Sharing Features for RPN and Fast R-CNN 

1.交替訓練 Alternating training

2.近似聯合訓練 Approximate joint training

3.非近似聯合訓練Non-approximate joint training


論文全稱:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

論文地址:https://arxiv.org/pdf/1506.01497.pdf

1.綜述

提出的背景是proposals成為了當前各種detection模型裡面計算資源時間消耗最大的一部分,無論是selective search還是EdgeBoxes,對比起detection部分的網路都是在複雜度上要高很多。所以為了解決這個問題提出了Region Proposal Networks (RPNs),使用深度卷積神經網路計算proposals,可以得到一種優雅而有效的解決方案,在這種方案計算中,由於detection網路的計算的共享,proposal的計算幾乎是不花費任何資源的。(計算proposal可以達到10張每秒)

三個detection演算法的對比可以參考下圖。

FASTER R-CNN由兩個模組組成,第一個模組是一個fully convolutional network深度完全卷積的網路,用於提出region proposal,第二個模組是使用region proposal的Fast R-CNN detector。論文使用最近流行的‘attention’ mechanisms注意力機制,RPN模組告訴Fast R-CNN模組關注什麼值得關注的區域。

2.Region Proposal Networks (RPN)

區域提議網路(RPN)接收任何大小的影象作為輸入和輸出的一組矩形region proposal,每個proposal都有一個物體的得分。下圖便是它的結構。在卷積輸出的feature map上再次生成一個a small network

每個滑動視窗都對映到一個低維feature(圖中的256-d),這個feature被輸入到兩個完全連線的層中——一個box-regression層(reg)和一個box-classification層(cls)

Anchor(錨)

上圖的中間部分有一個重要的概念——Anchor(錨)

Anchor錨的中心是就是滑動視窗的中心,Anchor與比例和長寬比相關聯。如上圖之中每個Anchor的大小和比例都是不同的。論文裡面預設是使用三種大小,三種長寬比,所以Anchor的個數k=9,若一張feature map的大小是W*H,那麼就會有W*H*k個Anchor。這種方法是具有平移不變性的。也就是object平移了,預測proposal也會跟著平移。

loss function

在這裡,i是一個anchor 在mini-batch中的索引,pi是anchor i作為一個object的預測概率。pi∗代表真實的標籤(即是否為一個object),如果anchor是positive的(是object),該值為1,如果anchor是negative的(不是object),該值為0。 ti 是一個4維向量代表引數化預測邊界框的座標,和t∗是ground-truth 的邊界框座標(與positive anchor關聯)。分類損失Lcls是兩個類(objectvs.no object)的損失 函式。迴歸的損失,使用Lreg(ti,t∗i)= R(ti−t∗),R是健壯的損失函式(光滑L1),在rcnn論文中已經定義。迴歸損失之所乘一個pi∗,指的是在positive的時候才計算迴歸損失。

前面兩部分乘一個分母代表一種正則化。並且引入了一個一個平衡引數λ。

Training RPNs

RPN可以通過反向傳播和隨機梯度下降(SGD)進行端到端訓練。每個minibatch都來自一個包含許多positive示例anchor和negative示例anchor的一張image。如果對所有anchor的損失函式進行優化是可能的,但這將偏向於negative,因為negative的樣本比重大。相反,在影象中隨機抽取256個anchor,計算小他們的損失函式,其中positive anchor和negative anchor的比例幾乎是1:1。如果一幅影象中有少於128個positive樣本,就用negative樣本填充。

使用隨機初始化所有新層,從0均值高斯分佈中初始化權重,標準差為0.01。分類的卷積層則是來自imagenet的pre-trained model。

3.Sharing Features for RPN and Fast R-CNN 

論文給出了三種方式共享卷積網路的feature:

1.交替訓練 Alternating training

先訓練RPN,再使用PRN的proposal來訓練Fast R-CNN,經過Fast R-CNN調整的權重再作為RPN的初始化。這個過程是迭代的,並且貫穿了整篇論文的實驗。

2.近似聯合訓練 Approximate joint training

RPN和Fast R-CNN網路在訓練過程中合併成一個網路。在每個SGD迭代中,前向遍歷生成region proposals,當訓練一個快速R-CNN檢測器時,這些proposals就像固定的、預先計算好一樣。反向傳播像往常一樣進行,對於共享層,將來自RPN損失函式和快速R-CNN損失函式的反向傳播訊號結合起來。這個解決方案很容易實現。

3.非近似聯合訓練Non-approximate joint training

在一個非近似的聯合訓練解決方案中,需要一個RoI池層,它是可微的w.r.t.盒座標。可以通過“RoIwarping”層來解決,這超出了本文的範圍。

 

本論文采取了四步交替訓練

  1. 在第一步中,按照上面Training RPNs的描述訓練RPN。這個網路是用imagenet預訓練的模型初始化的,並針對 region proposal任務對端到端進行了微調。
  2. 在第二步中,使用step-1 RPN生成的proposal,用Fast R-CNN訓練一個單獨的檢測網路。這個檢測網路也是由imagenet預訓練模型初始化的。此時,這兩個網路並不共享卷積層。
  3. 在第三步中,使用Fast R-CNN檢測器網路初始化RPN訓練,但是固定共享的卷積層,只微調RPN特有的層。現在這兩個網路共享卷積層。
  4. 最後,保持共享卷積層的固定,微調獨特的R-CNN層。因此,兩個網路共享相同的卷積層,形成一個統一的網路。

類似的交替訓練可以用於更多的迭代,但是觀察到的改進微不足道。

一些RPN region proposal相互之間有很大的重疊。基於他們的cls分數,對 region proposal使用非最大抑制(NMS)減少冗餘。將NMS的IoU閾值固定在0.7,這使得每個影象大約有2000個提案區域。NMS不會損害最終的檢測準確率,但是會大大減少proposal的數量。在NMS之後,使用排名前n的region proposal進行檢測。接下來,使用2000個RPN proposal訓練快速R-CNN,但是在測試時評估不同數量的proposal。